This design is to describe principles of Continuous integration and delivery principles implementation on AWS platform using both AWS and third-party tools.

Key components

AWS IAM was used to control access to AWS services. It is set to have password policy, two-factor authentication and role-based access.

AWS VPC with Network ACLs and Security groups were used to isolate different layers and allow only necessary actions.

AWS RDS makes database layer operational management easy and reliable, for example before changing database schema CI system can trigger database backup.

AWS EC2 Auto Scaling works together with AWS Elastic Load Balancer to ensure that if AWS EC2 instance fails it will be replaced without general service failure.

It’s more than useful during deploy phase when instance needs to be put offline for time required for deploying new app version.

AWS S3 will be used for storing artifacts because of 99.999999999% durability and reliable integration with other components like Jenkins and AWS CodeDeploy.

AWS CodeCommit is source control service which is used to securely host git repositories and manage access with AWS IAM.

AWS CodeDeploy is a deployment tool which supports AWS EC2 Auto Scaling and AWS Elastic Load Balancer which makes new application version deployment process easy, secure and transparent.

Jenkins is an open source automation server that provides hundreds of plugins to support building, deploying, and automating any project.