Introduction to Blue-Green Deployment
Blue/Green deployment is an application or service release technique that shifts the incoming traffic from an older version of the application or microservice to a newer version slowly or bit by bit. It needs two environments that need to be different but as similar as possible. This can be possible with two different pieces of hardware or virtual machines.
In this deployment technique, we need a router or a load balancer that shifts the incoming traffic from one environment to another. So here, we can identify the older version of the application as the blue environment, whether the new version can be identified as a green environment.
AWS Serverless Computing manages all the services that a user can use to build and run its program on AWS's system. Click to explore about, AWS Serverless Computing
Now, let's understand with an example, currently, our router or LB sends the traffic to the older version, known as the blue environment, and now we have developed, tested, and released our new version, i.e., a green environment. After ensuring all the aspects of the new version are working correctly with no bug or risk of disruption. After successfully deploying the new version, we will route our incoming traffic to the new environment, a green environment. Then our client essentially sees that new application code with no downtime between the existing running application to the green instance application. As we said, there will be no downtime. Here a question arises, what if our green instance is not working properly or has stopped? So here we can again shift our traffic from green instance to blue or old instance.
What are the benefits of Blue-Green Deployment?
- Blue/green deployments allow you to seamlessly roll traffic back to the operating environment at any point in the deployment process.
- Impaired operation or downtime is reduced since the impact is confined to the time between identifying a green environment issue and returning traffic to the blue environment.
- After deploying the green environment, you have the option to validate it before sending production traffic to it. This is referred to as canary analysis or canary testing. AWS Blue and green deployments complement continuous integration and integration workflows (CI /CD) that often limit complexity.
- Blue / green deployments performed on AWS also offer cost optimization benefits. If your application switches from one version to another, you just need to start the new version. No need to run over-provisioned architecture for a long time.
A prospering metadata management service nowadays and it offers two forms of data catalog Click to explore about, AWS Data Catalog
AWS Services For Blue-Green Deployments
AWS provides several tools and services that help automate our application and streamline our deployment and infrastructure by using AWS API, which could leverage web consoles, CLI tools, SDKs, and IDEs.
Amazon Route 53
Amazon Route 53 is a highly available authoritative DNS service that routes user requests for Internet-based resources to the appropriate destination.
Elastic Load balancer
Load balancing services are another standard method for routing traffic in a blue/green deployment. Amazon Elastic Load Balancing (ELB) is a service that distributes incoming application traffic across Amazon Elastic Compute Cloud (Amazon EC2) instances. ELB scales in response to incoming requests, perform health checks against Amazon EC2 resources, and integrates seamlessly with other services like Auto Scaling. This makes it an excellent choice for customers looking to improve application fault tolerance.
AWS service Auto Scaling helps maintain application availability by automatically scaling EC2 capacity up or down based on predefined conditions. Launch configurations are the templates used to launch EC2 instances in an Auto Scaling group. To enable blue/green deployment, you can attach different versions of launch configurations to an auto scaling group. Auto scaling can also be configured for use with an ELB. The ELB balances traffic across the EC2 instances in an auto-scaling group in this configuration. To determine which EC2 instances to remove during a scaling action, you define termination policies in auto scaling groups; auto scaling also allows instances to be placed in a Standby state rather than termination, which aids in quick rollback when necessary. Both the termination policies of auto scaling and the Standby state allow for blue/green deployment.
AWS Elastic Beanstalk is a quick and easy method to get an application on AWS. It's ideal for developers who want to deploy code without worrying about managing the underlying infrastructure. Elastic Beanstalk provides Auto Scaling and ELB, enabling blue/green deployment. Elastic Beanstalk allows you to run different versions of your application and change environment URLs, allowing for blue/green deployment.
AWS CloudFormation allows users to specify the AWS resources they require using JSON or YAML-based templates. This service offers extensive automation for establishing blue/green setups and allowing switch traffic upgrades, whether via Route 53 DNS, ELB, or similar technologies. The service may be utilized as a part of a wider infrastructure as a code approach. The infrastructure is provided and controlled using code and software development practices comparable to how application code is treated, such as version control and continuous integration.
Amazon CloudWatch is a service that monitors AWS resources and applications. CloudWatch gathers and visualizes data, ingests and monitors log files, and creates alarms. It gives system-wide insight into resource use, application performance, and operational health, which are critical for detecting application health early in blue/green deployments.
Enterprises adopting AWS Cloud with the right competency partners can align business and IT strategies for enhanced agility and resilience. Click to explore about, AWS Cloud Migration and Modernization Services
What are the best blue-green deployment techniques?
The best techniques to implement blue-green deployment are listed below:
Update DNS Routing with Amazon Route 53
The diagram below depicts how Amazon Route 53 administers the DNA-hosted zone. We may divert traffic from the blue instance to the green instance by modifying the alias record.
Swap the Auto Scaling Group Behind Elastic Load Balancer
In this illustration, the environment boundary has been lowered to the Auto Scaling group. The production load is carried by a blue group, while the new code is readied and delivered by a green group. When ready to deploy, just link the green group to the existing load balancer to divert traffic to the new instance. The load balancer prefers the green Autoscaling group for HTTP/HTTPS listeners since it employs the least outstanding requests routing method. You may manage how much traffic is introduced by increasing or decreasing the size of your green group.
Data pipelines connect to the general term of migration of data from one place to another place. Click to explore about, AWS Big Data Pipeline on Cloud
Auto Scaling Group Launch Configuration Updation
The AMI(Amazon Machine Image) ID, key pair, type of instance, one or more security groups, and a block device mapping are all included in a launch configuration. Each Auto Scaling group has its unique launch configuration. You may only connect one launch configuration with an Auto Scaling group at a time, and it cannot be changed after it is created.
Replace the old launch configuration with a new one to alter the launch configuration linked with an Auto Scaling group. Once a new launch configuration is in place, any new instances launched utilise the new launch configuration settings, but old instances are unaffected. When Auto Scaling removes instances from a group (also known as scaling in), the default termination strategy removes instances with the earliest launch configuration.
However, you should be aware that if the Availability Zones were imbalanced, to begin with, Auto Scaling might delete an Availability Zone. To balance the zones, restart the instance with a new launch configuration. In such cases, you should have procedures to account for this effect. Begin with an Auto Scaling group and an Elastic Load Balancing load balancer to apply this strategy. To deploy the updated version of the application in the green environment, first update the Auto Scaling group with the new launch settings and then double the size of the Auto Scaling group.
The following step is to resize the Auto Scaling group to its original size.
- Instances with the previous launch setting are deleted first by default.
- You may also temporarily use the Standby state of a group to temporarily remove instances from an Auto Scaling group.
- Having the instance in the Standby state allows for rapid rollbacks if necessary.
When you're satisfied with the freshly deployed version of the application, you may permanently remove instances from Standby.
- Update the Auto Scaling group using the old launch configuration to conduct a rollback.
- Then, repeat the preceding procedures in reverse order. Alternatively, if the instances are in the Standby state, bring them back up.
Best Practices for Managing Data Synchronization and Schema Changes
- Decoupling Schema Changes from code changes
Adequate testing is required because this strategy may damage production if the schema update fails.
When Blue/Green Deployment is Not Advisable?
When the blue and green habitats are in different geographical places
The application must be "distribution aware."
Commercial off-the-shelf (COTS) applications have a preset update/upgrade mechanism, that is not compatible with blue/green deployment.
There are risks associated with delivering an application. Such progress The emergence of cloud computing, provisioning, automation frameworks, and new frameworks Deployment method, e.g., B. Blue / Green, helps mitigate risk. Failure, process, downtime, and rollback capabilities. Utilities and traditional AWS billing model Various automation tools make it much easier for customers to act quickly and cheaply. Effectively implement blue/green implementations on a large scale.