This presentation walks through AWS Developer Tools like AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, and AWS CodePipeline to setup Continous Integration and Continous Delivery in your software development. You will learn with a CI / CD model how Developers and IT operations professionals practicing DevOps can use these services to rapidly and safely deliver software.
A Pathway to Continuous Integration/Continuous Delivery on AWS
1. Sao Paulo, Brazil
A Pathway to CI / CD on AWS
Bhuvaneswari Subramani | 22nd Feb 2021
2. Bhuvaneswari Subramani (Bhuvana)
Director, Engineering Operations, Infor
AWS DevTools Hero
Currently working on Cloud Computing, DevOps &, Performance QA
https://installjournal.blogspot.com
3. Agenda
• A Pathway to CI / CD
• AWS Developer Tools Overview
• Use case leveraging AWS CI CD Services
• WebApp Deployment
• Best practices for CI / CD
• Metrics to gauge Continuous Delivery
5. A Pathway to Continuous Integration / Continuous Delivery
SOURCE
Developers
commit changes
BUILD
Changes
are built
STAGING
Code is deployed and
tested
PRODUCTION
Developers commit
changes
6. A Pathway to Continuous Integration / Continuous Delivery
SOURCE
Developers
commit changes
BUILD
Changes
are built
STAGING
Code is deployed and
tested
PRODUCTION
Developers commit
changes
AWS CodeCommit AWS CodeBuild Third Party Tooling AWS CodeDeploy
AWS CodePipeline
AWS CodeDeploy
13. AWS CodeCommit
• Secure, Scalable, and managed Git Source
control
• Use Standard git tools
• Scalability, availability and durability of Amazon
S3 & Amazon Dynamo DB
• No limit on repo size or no. of repo
• Post commit hooks to call out to SNS / Lambda
15. AWS CodeBuild
• 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
16. 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?
17. AWS CodeDeploy
• Automates code deployments to EC2 / On-prem /
Lambda
• 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
18. Revision 1
Application
Revision 2
Revision 3
Revision n
Instance 1
Deployment Group
Instance 2
Instance 3
Instance n
Deployments
Deploy
Config
appspe
c.yml
In-place
deployment
AWS CodeDeploy Components
19. Revision 1
Application
Revision 2
Revision 3
Revision n
Instance 1
Deployment Group
Instance 2
Instance 3
Instance n
Deployments
Deploy
Config
appspe
c.yml
In-place
deployment
AWS CodeDeploy Components
What to
deploy?
Where to
deploy?
How to
deploy?
20. 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
22. 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 2021
24. Use Case – Web Application Deployment
• In-place deployment to EC2 Instance
• Install Tomcat, if it doesn’t exist; Restart otherwise
• Deploy WebApp through instructions from
appspec.yml
• Start the Tomcat Service
28. Best practices for CI / CD
• Treat your infrastructure as code – version control, peer review etc
• Have all developers commit code to the main trunk frequently, with
no long-running feature branches.
• Have developers build unit tests toward 100% coverage of the code
base and keep up-to-date
• Establish role-based security controls
• Keep and track standard metrics
• Treat your continuous delivery configuration as code.
• Use multiple distinct pipelines for each branch and team.
29. Metrics to gauge Continuous Delivery
• Rapid Delivery with Increased Efficiency
• Increased Feature releases with reduced TTM
• Quicker feedback (system/user) to teams & stake holders
• Greater % of defects detected in testing (Unit & SIT Cycles)
• Ticket / Incidents volume reduction in PreProd & Prod
• High Availability
• Elastic & Scalable Infrastructure