今天下午,学习AWS DevOps的白皮书,刚好看到Continuous Integration and Continuous Delivery (CI/CD)部分,回忆起之前做AWS SAP练习题有一道相关题目如下:
A company is using AWS to run an internet-facing production application written in Node.js. The Development team is responsible for pushing new versions of their software directly to production. The application software is updated multiple times a day. The team needs guidance from a Solutions Architect to help them deploy the software to the production fleet quickly and with the least amount of disruption to the service. Which option meets these requirements?
A. Prepackage the software into an AMI and then use Auto Scaling to deploy the production fleet. For software changes, update the AMI and allow Auto Scaling to automatically push the new AMI to production.
B. Use AWS CodeDeploy to push the prepackaged AMI to production. For software changes, reconfigure CodeDeploy with new AMI identification to push the new AMI to the production fleet.
C. Use AWS Elastic Beanstalk to host the production application. For software changes, upload the new application version to Elastic Beanstalk to push this to the production fleet using a blue/green deployment method.
D. Deploy the base AMI through Auto Scaling and bootstrap the software using user data. For software changes, SSH to each of the instances and replace the software with the new version.
答案:C
题目难度:低
题目解析:题目中提到应用会在一天内产生多次更新,要求实现应用的快速发布,并将由此造成的服务影响降到最低。这是一道典型的考察CI/CD概念的题目。
选项ABD均涉及使用不同方法通过AMI启动实例来完成应用发布。姑且不论方案是否可行,仅从AMI启动实例就可能需要中断应用服务十几到几十分钟不等。
而选项C中提到的Blue/Green Deployment,是指使用AWS CodePipeline部署相互隔离且完全相同的两套AWS Elastic Beanstalk环境(Blue/Green),从而实现开发,测试,部署应用程序的同时,提高系统可用性并降低风险。因此是最符合题目要求的选项。
参考:https://amazonaws-china.com/quickstart/architecture/blue-green-deployment/