App Modernization: Containers from Deployment to Management

Introduction

Modernizing applications yields a range of benefits for organizations looking for infrastructure that is built to last. Containerization allows you to be more flexible in the delivery and deployment of applications and optimizes costs. Adding a proper Continuous Integration and Continuous Delivery (CI/CD) pipeline into the mix allows for better management and automated workflows for a containerized application. 

The Why

According to Docker, the most prominent container provider, a company can save 40% or more on its infrastructure spend by moving from virtual machines to container platforms. Deployment and container management has been made even easier by container management platforms such as OpenShift, Rancher, and Kubernetes (K8s). Taking advantage of containers and cloud-native applications on AWS will accelerate the deployment process and drastically reduce the infrastructure footprint needed to host a highly scalable application.

App Modernization allows you to take advantage of the built-in application management and operation capabilities that come with containerization.  This allows  you to reap the full range of benefits the cloud provides, such as:

  • Smaller and more frequent releases

Don’t wait until the day before launch to discover a bug. Rely on smaller releases with more frequency without all of the hassle by leveraging a containerized deployment strategy. Enable your team to optimize the DevOps process by using cloud-native solutions for more frequent and stable deployments. 

  • Increased availability and security 

The shortened code deployment time allows for quicker responses in production which will reduce security-related errors and allows for quicker recovery time in the event of a deployment error.

  • Optimized scaling events  

By utilizing a container management platform you can build an optimized scaling model that allows specific containers to scale up and down as needed, thus maximizing the available resources. 

The How

Deciding on a specific container management platform is only the first step for application modernization. It is important to establish and enable container-specific engineering practices for administrators as well as other relevant stakeholders. 

Consider how your team can build the following into your containerization strategy: DevOps engineering best practices, a security-first mindset, and a well-built microservices architecture among others.

When implementing containerization properly, organizations need to be prepared with all container images necessary for application development. Hosting the images in a reliable and secure repository allows for the CI/CD pipeline to integrate security scanning and vulnerability checks before deployment.

The end result?  Adopting robust containerization strategies allows for applications to be deployed with a faster time to market, additional security, and with a fully optimized SDLC. 

The following KPIs can be used to track the benefits of containers:

  1. Infrastructure costs
  2. Number of VMs/ physical servers used
  3. Application deployment frequency
Rightsizing your platform

A container platform can be set up on virtual machines or bare metal. Allocating the number of VM’s required for the platforms’ container capacity requires determining the number of containerized applications and the resources (compute,memory, storage) required by them. If you take a typical JEE application that needs to be highly available, the deployment model will have an application server cluster that spans across a minimum of two VMs. 

Though the resource utilization across the two VMs may be pretty low, this is required to attain high availability. You should also account for additional infrastructure that may be required to distribute the load between the virtual machines upon deployment, such as load balancers.

Rightsizing your platform is important for cost as well as performance. Overprovisioning resources for a cluster would result in unused resources, negatively impacting the infrastructure optimization that container platforms bring in. To further optimize, you can take advantage of AWS managed container services such as Amazon Elastic Kubernetes Service (Amazon EKS) and AWS Fargate to easily right-size resource utilization for each application. 

Conclusion

App Modernization allows you to take advantage of containers and cloud-native applications which along with AWS container-specific services can accelerate your deployment process and drastically reduce the infrastructure footprint. This strategy can be utilized by large public and private institutions to modernize legacy systems built in a range of infrastructures into a cloud-native architecture.

 

More DevOps Case Studies