Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Integration et déployment continu pour les appl...

Integration et déployment continu pour les applications modernes

Comment accélérer la mise à disposition de vos services et applications ? Comment tester de nouvelles idées et collecter les retours de vos clients ? Pour bénéficier de l'agilité promise par l'utilisation de containeurs et d'architectures serverless, il est essentiel de mettre en place des flux d'intégration et de déploiement continus qui permettent à vos éuipes d'itérer rapidement et de proposer de nouvelles fonctions. Lors de cette session, nous montrerons comment vous pouvez créer des flux de CI/CD pour vos applications de containeurs ou serverless sur AWS.

More Decks by Sébastien Stormacq - AWS Developer Advocate

Other Decks in Technology

Transcript

  1. © 2019, Amazon Web Services, inc. or its affiliates. All

    rights reserved. Introduction to CI/CD in the cloud Scale your dev team from 1 to1000’s deployments per day Sébastien Stormacq C l o u d E x p o E u r o p e 2 0 1 9 Senior Developer Advocate Amazon Web Services, EMEA @sebsto
  2. Continuous Integration Workflow Version Control Continuous integration Server Commit to

    dev branch Pull code Send build report to development team; stop everything if build fails Distributed builds; run tests in parallel Hook Developer Test Types Integration Unit Code coverage
  3. Continuous Integration Workflow Commit to dev branch Pull code Send

    build report to development team; stop everything if build fails Distributed builds; run tests in parallel Hook Test Types Integration Unit Code coverage Developer AWS CodeCommit AWS CodeBuild
  4. Anatomy of a buildspec File version: 0.2 phases: pre_build: commands:

    - echo Logging in to Amazon ECR... - aws --version - $(aws ecr get-login --region eu-west-1 --no-include-email) - REPOSiTORY_URi=486652066693.dkr.ecr.eu-west-1.amazonaws.com/nginx - iMAGE_TAG=$(echo $CODEBUiLD_RESOLVED_SOURCE_VERSiON | cut -c 1-7) build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $REPOSiTORY_URi:latest nginx/. - docker tag $REPOSiTORY_URi:latest $REPOSiTORY_URi:$iMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSiTORY_URi:latest - docker push $REPOSiTORY_URi:$iMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"nginx","imageUri":"%s"}]’ $REPOSiTORY_URi:$iMAGE_TAG > imagedefinitions.json artifacts: files: imagedefinitions.json
  5. CDK : Package Your Application CDK : Create a VPC

    // // create VPC w/ public and private subnets in 2 AZ // this also creates a NAT Gateway // const vpc = new ec2.Vpc(this, 'NewsBlogVPC', { maxAzs : 2 }); // // create static web site as S3 assets // var path = require('path'); const asset = new assets.Asset(this, ’YourSampleApp', { path: path.join(__dirname, '../html') }); // define a user data script to install & launch our app const userData = UserData.forLinux(); userData.addCommands('yum install -y nginx’, 'chkconfig nginx on', 'service nginx start’); userData.addCommands(`aws s3 cp s3://${asset.s3BucketName}/${asset.s3ObjectKey} .`, `unzip *.zip`, `/bin/cp -r -n ${env}/* /usr/share/nginx/html/`); CDK : Bootstrap Your Servers // create an auto scaling group for each environment const asg = new autoscaling.AutoScalingGroup(this, 'YourAppgAutoScalingGroup ' , { vpc, instanceType: ec2.instanceType.of(ec2.instanceClass.BURSTABLE3, ec2.instanceSize.MiCRO), machineimage: new ec2.AmazonLinuximage(), desiredCapacity: 2, role: role, userData: userData }); CDK : Create an Autoscaling Group
  6. CDK : Deploy your Own Dev Environment CloudFormation Template “compiler”

    CDK CLI “processor” “assembly language” “source” synthesize deploy executes
  7. Blue Green Deployment Run hook against test endpoint before green

    tasks receive prod traffic 0% Prod traffic 100% Prod traffic
  8. Blue Green Deployment Flip traffic to green tasks, rollback in

    case of alarm 80% Prod traffic 20% Prod traffic
  9. Think Big, Start Small, Iterate Trunk Based Source Code Control

    AWS CDK Developers Services Delivery pipelines Monitor Build Test Release Monitor Build Test Release Monitor Build Test Release Monitor Build Test Release Monitor Build Test Release
  10. Thank you! © 2019, Amazon Web Services, inc. or its

    affiliates. All rights reserved. Sébastien Stormacq Developer Advocate Amazon Web Services, EMEA @sebsto Jonathan Weiss Senior Manager, Development Tools Amazon Web Services @jweiss