5. Software Release Phases
Source Build Test Deploy
Testing
• Integration Test
• UI Test
• Load Test
• Penetration Tests
Deployment
Deployment to Prod
Environments
Code Management
• Check-in source code
• Peer review new code
• Version Control
• Multi-enterprise
Package Creation
• Compile Code
• Run Unit Tests
• Create Container Images
Continuous Integration
Continuous Delivery
6. Software Release Phases vs AWS CI CD Services
Source Build Test Deploy
AWS CodeCommit AWS CodeBuild Third Party Tooling AWS CodeDeploy
AWS
CodePipeline
8. AWS CodeCommit
• Secure, Scalable, and managed Git Source
control
• Use Standard git tools
• Scalability, availability and durability of Amazon
S3 & Amazon Dynamo DB
• No repo size limit
• Post commit hooks to call out to SNS / Lambda
12. AWS Code Build
• Fully managed build service that compiles
source code, run tests, and produces
software packages
• Scales continuously and processes multiple
builds
• You can provide custom build environments
suited to your needs via Docker images
• Only pay by the minute for the compute
resources you use
• Launched with Services like CodePipeline or
Jenkins
13. AWS CodeBuild Project
•Where to get the
source code?
Which build
environment to use?
Where to store the
artifact?
Where to store the
build logs?
14. AWS CodeDeploy
• Automates code deployments to EC2 / On-prem
• Handles the complexity of updating your
applications
• Minimal deployment downtime
• Rollback automatically, if failure detected
• Supports varied languages and operating systems
• Integrates with third-party tools like Jenkins
16. AWS CodeDeploy
Revision 1
Application
Revision 2
Revision 3
Revision n
Deployment Group
Deployments
Deploy
Config
appspec
.yml
In-place
deployment
What to
deploy?
Where to
deploy?
How to
deploy?
17. AWS CodePipeline
• Continuous delivery service for fast and reliable
application updates
• Model and visualize your software release
process
• Builds, tests and deploys your code on every
commit
• Integrates with third-party tools
19. Quick look @ pricing*
• AWS CodeCommit: Anyone with an AWS account can get started with
AWS CodeCommit for free. Your account gets 5 active users per month for
free (within limits), after which you pay $1 per additional active user per
month.
• AWS CodeBuild: Only pay by minute for the compute resources you use.
• AWS CodeDeploy: There is no additional charge for code deployments to
Amazon EC2 instances through AWS CodeDeploy. You pay $0.02 per on-
premises instance update using AWS CodeDeploy.
• AWS CodePipeline: You pay only for what you use. AWS CodePipeline
costs $1 per active pipeline* per month. To encourage experimentation,
pipelines are free for the first 30 days after creation.
* Pricing as on Sep 2019
21. Use Case
• IaC using Cloud Formation Template
• Create an EC2 Instance
• Install CodeDeploy agent through UserData
• Add specific tag `Name = WebApp`
• Deploy Web Application
• Install Tomcat & deploy WebApp through instructions from
appspec.yml
32. Debugging Builds
• Enable Logging in CloudWatch / S3
• Local Build Support for AWS CodeBuild
• Get the AWS CodeBuild docker image file from AWS Github
• Build the CodeBuild image locally
• Setup CodeBuild local Agent
• Use the local agent to build your project
33. Debugging Deployments
• CodeDeploy agent generates agent, updater & deployment logs
• Send them to CloudWatch for debugging
• CodeDeploy agent logs [EC2/On-prem only]
• /var/log/aws/codedeploy-agent/codedeploy-agent.log