You need to implement Blue/Green Deployment for several multi-tier web applications.
Each of them has Its Individual infrastructure:
Amazon Elastic Compute Cloud (EC2) front-end servers, Amazon ElastiCache clusters, Amazon Simple Queue Service
(SQS) queues, and Amazon Relational Database (RDS) Instances.
Which combination of services would give you the ability to distribute the traffic between different deployed versions of your application?
Click on the arrows to vote for the correct answer
A. B. C. D.Answer - B.
This an example of Blue-green deployment.
With Amazon Route 53, you can define a percentage of traffic to go to the green environment and gradually update the weights until the green environment carries the full production traffic.
A weighted distribution provides the ability to perform canary analysis where a small percentage of production traffic is introduced to a new environment.
You can test the new code and monitor for errors, limiting the blast radius if any issues are encountered.
It also allows the green environment to scale out to support the full production load if you're using Elastic Load Balancing.
When it's time to promote the green environment/stack into production, update DNS records to point to the green environment/stack's load balancer.
You can also do this DNS flip gradually by using the Amazon Route 53 weighted routing policy.
For more information on Blue-green deployment, please refer to the link:
https://d0.awsstatic.com/whitepapers/AWS_Blue_Green_Deployments.pdfThe key of the question is that the approach should be able to control the traffic between different versions of deployments.
As a result, Route53 should be considered first among all the answers.
Blue/Green Deployment is a popular DevOps practice that aims to minimize downtime during the deployment process by switching traffic between two identical environments, one that is currently serving production traffic (blue environment) and another one that is new and ready to be tested (green environment). After the new environment has been tested thoroughly, the traffic is switched entirely to the green environment, and the blue environment can be removed or kept for fallback purposes.
Given that you have several multi-tier web applications that have their own individual infrastructure consisting of Amazon Elastic Compute Cloud (EC2) front-end servers, Amazon ElastiCache clusters, Amazon Simple Queue Service (SQS) queues, and Amazon Relational Database (RDS) instances, you need to choose a combination of AWS services that would allow you to implement Blue/Green Deployment and distribute traffic between different deployed versions of your application.
Let's examine each answer choice in detail:
A. Create one AWS Elastic Beanstalk application and all AWS resources (using configuration files inside the application source bundle) for each web application. New versions would be deployed using Elastic Beanstalk environments and using the Swap URLs feature.
This answer choice suggests using AWS Elastic Beanstalk to manage the deployment of your application. Elastic Beanstalk is a fully managed service that provides an easy way to deploy and run web applications and services. Elastic Beanstalk allows you to create an environment for each version of your application, and then use the "Swap URLs" feature to switch traffic between the blue and green environments.
While this approach is straightforward, it has some limitations. For example, Elastic Beanstalk has limited support for infrastructure resources like Amazon ElastiCache and Amazon RDS instances. Additionally, Elastic Beanstalk only supports a limited number of programming languages and frameworks, which might not be suitable for all applications.
B. Using AWS CloudFormation templates, create one Elastic Beanstalk application and all required AWS resources for each web application. New versions would be deployed using AWS CloudFormation templates to create new Elastic Beanstalk environments. Traffic would be balanced between them using weighted Round Robin (WRR) records in Amazon Route 53.
This answer choice suggests using AWS CloudFormation to create and manage the infrastructure resources required by your application, including Elastic Beanstalk environments, Amazon ElastiCache clusters, Amazon SQS queues, and Amazon RDS instances. CloudFormation allows you to define your infrastructure as code, which makes it easy to version, deploy, and rollback your infrastructure changes.
To implement Blue/Green Deployment, you can use CloudFormation to create two identical Elastic Beanstalk environments, one for the blue version of your application and one for the green version. Once the green environment has been fully tested, you can use Amazon Route 53 to switch traffic between the blue and green environments using weighted Round Robin (WRR) records. WRR records distribute traffic based on the weight you assign to each record, allowing you to gradually shift traffic from one environment to another.
This approach is more flexible than using Elastic Beanstalk alone, as it allows you to define your entire infrastructure as code and use a wider range of AWS services. However, it requires more upfront work to set up the CloudFormation templates and manage the infrastructure resources.
C. Using AWS CloudFormation templates, create one Elastic Beanstalk application and all required AWS resources for each web application. New versions would be deployed updating a parameter on the CloudFormation template and passing it to the cfn-hup helper daemon. Traffic would be balanced between them using Weighted Round Robin (WRR) records in Amazon Route 53.
This answer choice is similar to option B, but it suggests using the cfn-hup helper daemon to update the CloudFormation template and deploy new versions of the application. cfn-hup is a utility that runs on an EC2 instance and listens for changes to the CloudFormation