© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
CHENNAI
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
CI CD using AWS Developer Tools
Bhuvaneswari Subramani | 10th Aug 2019
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Bhuvaneswari Subramani (Bhuvana)
Director, Engineering Operations, Infor
Currently working on Cloud Computing, DevOps &, Performance QA
https://installjournal.blogspot.com
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Agenda
• AWS CI CD Services Overview
• Use case leveraging AWS CI CD Services
• Infrastructure Rollouts + WebApp Deployment
• buildspec, appspec
• Debugging Build & Deployment
• Rollback Deployments
• Metrics to gauge DevOps
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS CI CD Services - Overview
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Software Release Phases vs
AWS CI CD Services
Source Build Test Deploy
AWS CodeCommit AWS CodeBuild Third Party Tooling AWS CodeDeploy
AWS
CodePipeline
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Plight of Self Managed
Source Control Repo
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Code Commit
• 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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Visualizer Compare Pull Request
AWS Code Commit
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
When there is no
CI CD??
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Code Build Project
Where to get the
source code?
Which build
environment to use?
Where to store the
artifact?
Where to store the
build logs?
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Code Deploy
• 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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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 Code Deploy Components
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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 Code Deploy Components
What to
deploy?
Where to
deploy?
How to
deploy?
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Action Action
Stage
Action Action
Stage
Action
Transition
AWS CodePipeline
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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 Aug 2019
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Infrastructure Rollouts &
Web Application Deployments
AWS CD CD Workflow
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Source Build Deploy
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Infrastructure Rollout +
Web App Deployment
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
buildspec.yml & appspec.yml files
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
buildspec.yml
buildspec.yml from Web Application Deployments
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
buildspec.yml from Web Application Deployments
buildspec.yml
Create & store an artifact in S3
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
appspec.yml
appspec.yml from Web Application Deployments
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
appspec.yml
appspec.yml from Web Application Deployments
Files to be copied to the
instance during deployment’s
install
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Debugging, Rollback & Metrics
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Debugging Builds
• Enable Logging in CloudWatch / S3
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
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
• CodeDeploy deployment logs
• /opt/codedeploy-agent/deployment-root/deployment-logs/
• CodeDeploy updater logs
• /tmp/codedeploy-agent.update.log
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Rollback Deployments
• Rollback in AWS is actually ====>
• Configure re-deploy by enabling
• Code deploy -> Rollbacks >
• Code deploy -> ‘Automatic Rollbacks’
• Deployment Configuration to enable rollback based on healthy instances
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Metrics to gauge DevOps
• 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
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DevOps Journey begins…
https://installjournal.blogspot.com
https://www.linkedin.com/in/bhuvanas/
@installjournal

CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019

  • 1.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. CHENNAI
  • 2.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. CI CD using AWS Developer Tools Bhuvaneswari Subramani | 10th Aug 2019
  • 3.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Bhuvaneswari Subramani (Bhuvana) Director, Engineering Operations, Infor Currently working on Cloud Computing, DevOps &, Performance QA https://installjournal.blogspot.com
  • 4.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Agenda • AWS CI CD Services Overview • Use case leveraging AWS CI CD Services • Infrastructure Rollouts + WebApp Deployment • buildspec, appspec • Debugging Build & Deployment • Rollback Deployments • Metrics to gauge DevOps
  • 5.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. AWS CI CD Services - Overview
  • 6.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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
  • 7.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Software Release Phases vs AWS CI CD Services Source Build Test Deploy AWS CodeCommit AWS CodeBuild Third Party Tooling AWS CodeDeploy AWS CodePipeline
  • 8.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Plight of Self Managed Source Control Repo
  • 9.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. AWS Code Commit • 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
  • 10.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Visualizer Compare Pull Request AWS Code Commit
  • 11.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. When there is no CI CD??
  • 12.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. AWS Code Build Project Where to get the source code? Which build environment to use? Where to store the artifact? Where to store the build logs?
  • 14.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. AWS Code Deploy • 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
  • 15.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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 Code Deploy Components
  • 16.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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 Code Deploy Components What to deploy? Where to deploy? How to deploy?
  • 17.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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
  • 18.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Action Action Stage Action Action Stage Action Transition AWS CodePipeline
  • 19.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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 Aug 2019
  • 20.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Infrastructure Rollouts & Web Application Deployments AWS CD CD Workflow
  • 21.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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
  • 22.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved.
  • 23.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Source Build Deploy
  • 24.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Infrastructure Rollout + Web App Deployment
  • 25.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. buildspec.yml & appspec.yml files
  • 26.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. buildspec.yml buildspec.yml from Web Application Deployments
  • 27.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. buildspec.yml from Web Application Deployments buildspec.yml Create & store an artifact in S3
  • 28.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. appspec.yml appspec.yml from Web Application Deployments
  • 29.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. appspec.yml appspec.yml from Web Application Deployments Files to be copied to the instance during deployment’s install
  • 30.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Debugging, Rollback & Metrics
  • 31.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Debugging Builds • Enable Logging in CloudWatch / S3
  • 32.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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
  • 34.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 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 • CodeDeploy deployment logs • /opt/codedeploy-agent/deployment-root/deployment-logs/ • CodeDeploy updater logs • /tmp/codedeploy-agent.update.log
  • 35.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Rollback Deployments • Rollback in AWS is actually ====> • Configure re-deploy by enabling • Code deploy -> Rollbacks > • Code deploy -> ‘Automatic Rollbacks’ • Deployment Configuration to enable rollback based on healthy instances
  • 36.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Metrics to gauge DevOps • 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
  • 37.
    © 2019, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. DevOps Journey begins… https://installjournal.blogspot.com https://www.linkedin.com/in/bhuvanas/ @installjournal