A containerization strategy is comprised of best practices and operational plans that help drive digital transformation by accelerating application development, testing, and deployment. This approach enables the decoupling of application from underlying infrastructure and thus improves business agility, application security, and operating environments.
Containers provide new levels of agility for organizations, both in development and deployment. More lightweight that virtual machines (VMs), container platforms such as Docker offer many of the same benefits – abstracting an application from the underlying infrastructure – but at the operating system (OS) level rather than the hardware level. Containers provide application portability and consistency, enhancing an agile development environment, promoting microservices deployment, and increasing scalability by supporting more containers per server compared to VMs.
You can read more about why containers are growing in popularity here
Containerization is part of a plan for digital transformation of the enterprise. A containerization strategy should consider the application development pipeline, platform considerations, training, support, security, and of course determining which applications to prioritize for containerization.
Most organizations will start with low-hanging fruit, namely those applications that are modern in design and have high volatility (i.e., frequent code updates). Taking a fail-fast, fail-often approach until the first applications are in production enables an organization to quickly adapt to the benefits of containers in real time.
Developing organizational skillset
Moving beyond development, a container strategy must also address people and process changes. User training, support education, security and governance including revising service level agreements should all be considered.
Completing the transformation
Next, organizations can turn their attention to containerizing other applications, such as legacy/monolithic applications and clustered applications. Keep in mind that not every application needs to be deployed in containers, some are better suited to the VMs they are currently running in. However, migrating older applications to containers can be the first step in refactoring those applications into modern CI/CD code utilizing DevOps practices.
The number one priority of any successful strategy is to get top-level buy-in by focusing on bottom-line benefits. Infrastructure efficiencies gained by running many containers on a single piece of hardware can have impact both on capital expenditures for on-premises gear and operating expenditure benefits by reducing the amount of cloud resources needed. Beyond reduced infrastructure costs and yield savings in OS licensing fees, additional savings are realized as there is no longer the need to develop separate application executables for different environments.
Containers speed up the entire application lifecycle. Increased agility that containers bring translates to faster deployment, competitive advantage, and more efficient development teams.
What are the top reasons enterprises are using containers?
Many organizations have adopted containers as part of a larger digital transformation initiative. There are several drivers for container adoption, including:
- The need to modernize legacy or traditional applications
- The desire to increase the agility of development, DevOps, and security teams
- The desire to improve application scalability and portability
- The need to accelerate time to business value for all applications
What are the bottom-line benefits of containerization?
VMware can help organizations develop an enterprise business case to demonstrate the value of adopting containers. How necessary is containerization for your team’s future IT success? VMware can help you project how much:
- Time can be saved through developer agility improvements. With average dev costs at $50+/hour, every hour saved adds up quickly
- Operational expenses can be saved by achieving higher application density and lowering OS and licensing expenses
- Capital expenses can be reduced by reducing overall infrastructure demands while fulfilling more requests
What is the best way to align a container strategy with all the stakeholders?
DevOps, IT, security, development, and lines of business (LOBs) all gain benefits from adopting containers. Demonstrating the benefits for each will accelerate acceptance of the need and smooth the agreement to a migration plan. Some factors to focus on include:
- DevOps: Increased agility, consistency across dev, test, and production environments, simple updates, support for many frameworks.
- IT: Increased server efficiency, reduced license fees, lower overall OpEx (Operational Expense) and CapEx.
- LOBs: Accelerated time to value, competitive advantages.
- DevSecOps: Containers are immutable, so components are replaced rather than patched. Microservices enable updating a single service without affecting the rest of the application.
- Executives: Bottom line savings, improved overall agility, better competitive stance.
Although planning is essential, there is no need to migrate every application, or migrate many at once. Organizations that start simply and leverage early successes will see greatest acceptance overall.
Start by uncovering the low-friction, high-value applications, such as modern applications that require frequent updates. Just as important is consideration of governance, security, and people factors such as training, support, and security who will be impacted by changes in application development and deployment.
Rather than making large investments in new tools or infrastructure, wait until at least one application is containerized and the organization understands the benefits. Leverage those early wins to gain acceptance and ease future budget conversations with LOB (line of business) and executive team members.
Which applications are the best candidates for containerization?
Although containers are increasingly being used for a broad range of applications, the ephemeral nature of containers lends itself best to those applications that are stateless (i.e., pass all information needed to process with the request) and un-clustered (i.e., designed to run on a single machine rather than requiring a server cluster to operate) such as network daemons and web server components.
What other factors should be considered in a containerization strategy?
Team culture can make a big difference. An agile and innovative team will naturally have an easier adoption curve than a traditional development or IT team that is resistant to change.
Focus first on those applications with the need for frequent deployments. Legacy or deprecated applications can be containerized later, if at all. For example, software-defined network infrastructure may be better served by VMs than containers.
Also, consider the financial impact on infrastructure. Applications that formerly ran many VM instances can realize substantial savings through containerization, as the physical infrastructure size needed is reduced.
There are six key elements of every containerization deployment:
- Application selection. Prioritize based on application attributes such as age, frequency of updates, state vs stateless, and impact on the organization’s bottom line.
- Governance. Ensure people and processes are in place to secure, support, and educate stakeholders on containerization practices.
- Platform. Whether or not application is being refactored, containers will impact server and infrastructure utilization. Containerizing can be a prelude to cloud migration for many apps.
- Creating a CI/CD pipeline. If not already in place, adoption of continuous integration and deployment practices dovetail with containers ability to roll out new code seamlessly.
- Orchestration. Much of the magic in containers is orchestration and automation tools like Kubernetes which roll out containerized applications and scale instances up and down as needed.
- Continual evaluation. As new applications enter the scene and business needs evolve, organizations may need to reprioritize which applications to containerize next.
Why should you start with a sandbox environment?
Sandboxing provides development and IT teams the opportunity to gain familiarity with container and orchestration platforms like Docker and Kubernetes, without impacting production environments. Continuing to sandbox newly containerized applications can help improve confidence that when code enters production it will operate as expected.
How long does it take to deploy containers?
Although containerization speeds up overall development, there is still a learning curve. Start with an easy candidate, then ensure that all the stakeholder teams are aligned to a single, manageable schedule that includes necessary training. By starting small, leveraging wins, and progressing based on application selection criteria, organizations can begin their transformation by demonstrating success along the way.
First, determine roles and responsibilities across the organization. Then, develop testing, training, and support plans for each application as it is containerized. Finally, make container security part of every test from sandboxing to deployment.