AWS Certified Solutions Architect – Professional — Question 615
A company is developing a messaging application that is based on a microservices architecture. A separate team develops each microservice by using Amazon
Elastic Container Service (Amazon ECS). The teams deploy the microservices multiple times daily by using AWS CloudFormation and AWS CodePipeline.
The application recently grew in size and complexity. Each service operates correctly on its own during development, but each service produces error messages when it has to interact with other services in production. A solutions architect must improve the application's availability.
Which solution will meet these requirements with the LEAST amount of operational overhead?
Answer options
- A. Add an extra stage to CodePipeline for each service. Use the extra stage to deploy each service to a test environment. Test each service after deployment to make sure that no error messages occur.
- B. Add an AWS::CodeDeployBlueGreen Transform section and Hook section to the template to enable blue/green deployments by using AWS CodeDeploy in CloudFormation. Configure the template to perform ECS blue/green deployments in production.
- C. Add an extra stage to CodePipeline for each service. Use the extra stage to deploy each service to a test environment. Write integration tests for each service. Run the tests automatically after deployment.
- D. Use an ECS DeploymentConfiguration parameter in the template to configure AWS CodeDeploy to perform a rolling update of the service. Use a CircuitBreaker property to roll back the deployment if any error occurs during deployment.
Correct answer: B
Explanation
Configuring blue/green deployments using the AWS::CodeDeployBlueGreen transform in AWS CloudFormation provides a managed, low-overhead method to safely route traffic to new ECS tasks and automatically roll back if production errors occur. Options A and C require creating and managing additional test environments and complex integration test suites, which significantly increases operational overhead. Option D uses rolling updates with a deployment circuit breaker, which only monitors container stabilization rather than application-level interaction errors after deployment.