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.
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.
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.
Many organizations have adopted containers as part of a larger digital transformation initiative. There are several drivers for container adoption, including:
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:
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:
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.
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.
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:
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.
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.