Containers are small units of immutable code that enable you to deploy application code along your continuous integration and continuous delivery (CI/CD) pipeline, without monolithic size, multiple dependencies, or underlying infrastructure. Containers run as resource-isolated processes, ensuring quick, reliable, and consistent deployments.
According to Forrester research, containerized applications will rise by 80% in the next two years.1 Portworx indicates that companies are investing heavily in container platforms, anywhere from $10K-$1M.
Step 1: Learn the foundations of a container environment
Before assessing whether to implement containerization in your organization, it’s
important to understand the key components that make up a container environment:
- Container Fabric comprises the underlying compute, networking, storage, and container orchestration layers in your environment. Orchestration tools, such as Kubernetes, orchestrate workloads, apps, and containers across your infrastructure.
- A registry where you store container images
- Logging and monitoring are used to assess how the container or platform is running. Logging refers to the ability to inspect containers as they are running (for example, examining the output of the containers). Monitoring is the act of examining how your containers are leveraging resources (for example, how much time it is taking to respond to requests).
- Governance and security sit on top of your entire environment to manage vulnerabilities, security, or tagging policies. You can manage governance or security in your registration and orchestration tool.
Application containers get deployed to this container platform. Containers are more than a switch that can turn on, or a different deployment format. Converting your environment to containers requires a change in the way you think about deploying applications, both to the cloud and to container-based environments.
Step 2: Assess whether containerization is a good fit for your business
To determine if your environment and applications are good candidates for containerization, consider the following questions.
First, does your environment have custom-built apps on Linux or Windows? Those can be good candidates to start containerizing. This is because, generally, organizations with custom apps have a strong understanding of the application and are free from licensing concerns. Also, it is wise to start containerizing with the apps that have the most business impact inside your organization, and custom applications are often initially created to meet specific business needs.
Next, consider licensing. Did you purchase software from a third party? Does this software support containers? What does your licensing agreement require?
How is the application maintained, and how current is it? What are your long-term goals for the application? What platform do your applications currently sit on?
The answers to these questions can help you understand your current environment, and help you and any third-party consultant assess what to do next.
Step 3: Educate your team
Another important step before you deploy anything is to first educate your team on best practices and processes. Prior to selecting tooling, partners, or starting a containerization project, your team will need to know:
- Dependencies and components for a container environment.
- How to build applications.
- How to re-factor applications to containers.
- How to support these apps in production.
This pre-step before you containerize helps ensure you are set up for success once you implement containers.
Step 4: Start small
Traditionally, applications begin big, such as a complete virtual machine, but this approach can lead to excess in the deployment. Not only are these dependencies and components unnecessary, but they can introduce more potential risks—for example, more attack surface area, more dependencies and vulnerabilities to manage, and overall complexity. In this approach, you find yourself having to remove what’s not needed. This is a subtractive approach.
Step 5: Build more than just containers—build a platform
In parallel to developing containerized units, it’s important to build the container platform, using all the pillars previously discussed.
Once your containers and platform are built, you can move to operations. In this phase you should consider all the insights you need to run and support your new environment in the long term. Examples include patching, backup persistent workloads, and alerts when things go wrong.
Step 6: Learn how to measure success
After you build and implement a container environment, it is important to measure how much you have improved and assess what is working. You can track key performance indicators (KPIs) such as reductions in storage and spend. You may also monitor measurements such as:
- Deployment frequency. For example: high-output DevOps teams may deploy multiple times per day, while lower-out teams may deploy once per week or even once per month.
- Mean time to recover (MTTR). This can be measured in hours, days, weeks, or more.
- Change failure rate. How often do you break the build or affect the efficiency or accuracy of apps in production? High-performing IT teams see a rate of 0-15%, whereas low performers are in the 31-45% range.
By tracking these metrics over time, you can begin to see your averages, benchmarks, and areas where you can continue to improve. The overarching goal, of course, is to increase the amount of deployments while decreasing your change failure rate.
Cloudreach offers an end-to-end approach to help you understand, assess, deploy, and operate containers in production. Cloudreach integrates training into all deployments, via a partnership with A Cloud Guru, to ensure your team is skilled to implement and maintain the new environment.