Deployment Strategies on AWS
For creating infrastructure and deploying your applications, AWS offers a variety of options. AWS provides deployment options to match the needs of your application and your company, whether your application architecture is a simple three-tier web application or a complicated mix of workloads.
Building a well-architected application on AWS necessitates designing a deployment mechanism for your application. You may leverage AWS services to construct a flexible deployment solution that can be adapted to match the needs of both your application and your business, depending on the type of your application and the underlying services (compute, storage, database, network etc.) that it requires.
AWS Deployment Services
AWS offers a variety of services that can help you manage one or more stages of your application’s lifetime. The process of building a scalable, efficient, and cost-effective deployment strategy should include not just how you will update your application version, but also how you will manage supporting infrastructure throughout the application lifespan. When building a deployment solution, consider resource provisioning, configuration management, application deployment, software upgrades, monitoring, access control, and other considerations.
AWS CloudFormation
CloudFormation provides comprehensive control over the provisioning and administration of all application infrastructure components, from low-level components like route tables or subnet settings to high-level components like CloudFront distributions. CloudFormation is frequently used in conjunction with other AWS deployment services or third-party tools to handle application code deployments onto infrastructure components.
Read more about AWS CloudFormation @ https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html
AWS Elastic Beanstalk
AWS Elastic Beanstalk is a simple tool for delivering and scaling web applications and services written in Java, .NET, PHP, Node.js, Python, Ruby, Go, or Docker on well-known servers such as Apache, Nginx, Passenger, and IIS. Elastic Beanstalk is a full application management solution that handles all infrastructure and platform chores on your behalf. You can easily deploy, maintain, and scale apps with Elastic Beanstalk without the operational overhead of managing infrastructure. Elastic Beanstalk minimizes web application administration complexity, making it an excellent solution for enterprises who are new to AWS or want to launch a web application as soon as feasible.
Read more about AWS Elastic Beanstalk @ https://aws.amazon.com/elasticbeanstalk/
AWS CodeDeploy
CodeDeploy is designed to be used as a “building block” service for application developers who want to deploy and update applications on existing infrastructure. It’s not an end-to-end application management solution; instead, it’s meant to be used in conjunction with other AWS deployment services like AWS CodeStar, AWS CodePipeline, other AWS Developer Tools, and third-party services as part of a complete CI/CD pipeline.
Read more about AWS CodeDeploy @ https://aws.amazon.com/codedeploy/
Amazon Elastic Container Service
Amazon ECS will create new application container instances and computing resources based on scaling policies and Amazon ECS parameters. Infrastructure resources such as load balancers will have to be established outside of Amazon ECS. It allows you to customize the computing resources used to execute a containerised application, as well as the runtime circumstances of the application containers. Customisation of underlying computational resources is only possible when utilizing Amazon EC2 instances.
Read more about Amazon Elastic Container Service @ https://aws.amazon.com/ecs/
Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Solution (Amazon EKS) is a fully managed, certified Kubernetes conformant service that makes constructing, securing, managing, and maintaining Kubernetes clusters on AWS much easier. Amazon EKS interfaces with AWS services like CloudWatch, Auto Scaling Groups, and IAM to provide a unified experience for monitoring, scaling, and load balancing containerised applications.
Read more about Amazon Elastic Kubernetes Service @ https://aws.amazon.com/eks/
AWS OpsWorks
AWS OpsWorks is a configuration management service that lets clients build, manage, and run a wide range of application architectures, from basic web apps to extremely sophisticated bespoke apps. To handle essential operational operations like as server provisioning, software configurations, package installations, database setups, scaling, and code deployments, organisations using OpsWorks employ the automation platforms Chef or Puppet.
Read more about AWS OpsWorks @ https://aws.amazon.com/opsworks/
Deployment Strategies
A full, well-functioning deployment solution requires the implementation of the appropriate deployment processes. Your preferred balance of control, speed, cost, risk tolerance, and other criteria may influence the deployment techniques you use to update your application. There are several deployment strategies supported by each AWS deployment service.
Prebaking vs Bootstrapping AMIs
Prebaking application components into an AMI can reduce the time it takes to start and operationalize an Amazon EC2 machine. Prebaking and bootstrapping approaches can be coupled throughout the deployment process to swiftly build new instances that are tailored to the present environment.
Bootstrapping an instance is the process of installing your application, dependencies, or modifications whenever an Amazon EC2 instance is launched. If a sophisticated application or huge downloads are required, deployments and scaling events may be delayed.
Blue/Green Deployments
A blue/green deployment is a deployment approach in which two distinct, but identical environments are created. One environment (blue) runs the existing program version, while the other (green) runs the new application version. By simplifying the rollback process if a deployment fails, a blue/green deployment method promotes application availability while lowering deployment risk. Once testing on the green environment has been finished, actual application traffic is diverted to the green environment, and the blue environment is deprecated.
Rolling Deployments
A rolling deployment is often quicker than a blue/green deployment; however, unlike a blue/green deployment, there is no environment separation between the old and new application versions in a rolling deployment. This allows rolling deployments to be completed faster, but it also adds risks and complicates the rollback procedure if a deployment fails.
In-Place Deployment
A deployment approach that updates the application version without changing any infrastructure components is known as in-place deployment. The old version of the program is terminated on each computing resource in an in-place deployment, the newest application is installed, and the new version of the application is started and verified. This enables application deployments to take place with minimum disruption to the underlying infrastructure.
AWS offers a variety of tools to ease and automate infrastructure provisioning and application deployment; each deployment service has its own set of features for managing applications. Evaluate the available features of each service against the demands of your application and your company to develop a successful deployment architecture.
Please contact piyush.jalan93@gmail.com if you have any questions on AWS Deployment Strategies and stay tuned for the upcoming write-up.
Thank you !