Which design will meet these requirements?
Deploy a CI/CD pipeline that incorporates AMIs to contain the application and their configurations. Deploy the application by replacing Amazon EC2 instances.
Specify AWS Elastic Beanstalk to stage in a secondary environment as the deployment target for the CI/CD pipeline of the application. To deploy, swap the staging and production environment URLs.
Use AWS Systems Manager to re-provision the infrastructure for each deployment. Update the Amazon EC2 user data to pull the latest code artifact from Amazon S3 and use Amazon Route 53 weighted routing to point to the new environment.
Roll out the application updates as part of an Auto Scaling event using prebuilt AMIs. Use new versions of the AMIs to add instances, and phase out all instances that use the previous AMI version with the configured termination policy during a deployment event.
Explanations:
Using AMIs and replacing EC2 instances can facilitate deployment but does not inherently support quick rollbacks or allow for frequent deployments. AMIs require time to create and can increase downtime during transitions, making them less suitable for a rapid CI/CD pipeline.
AWS Elastic Beanstalk simplifies deployment and management of applications. By utilizing a secondary environment for staging and swapping URLs for production, the CI/CD pipeline can achieve near-instant rollbacks and support multiple deployments within the same hour. This meets both the rapid deployment and quick rollback requirements.
While AWS Systems Manager can help manage infrastructure, re-provisioning the infrastructure for each deployment can introduce significant downtime and complexity. Additionally, using Route 53 weighted routing for rollbacks does not provide the speed and simplicity needed for frequent updates and immediate reversals.
Rolling out updates as part of an Auto Scaling event using prebuilt AMIs can manage deployments, but this approach can lead to delays and downtime during the transition. AMI updates also do not provide the agility required for multiple releases per hour or quick rollbacks compared to other options like Elastic Beanstalk.