AWS Deployment Tools - Overview, Details, Implementation Serkan Capkan
• Toolset overview ○ CodeCommit ○ CodeBuild ○ CodeDeploy ○ CodePipeline ○ --CodeStar ○ -- Cloud9 ○ -- X-Ray • Implementation AGENDA AWS Deployment Tools - Overview, Details, Implementation.
DESIGN OPERATEBUILD Standardisation FlexibilityDiversity wishes, demands, budget sizing, contract procedures, templates CD, SLA MANAGED PUBLIC CLOUD. SENTIA /
CodeCommit. ● a version control service hosted by Amazon Web Services (~gitlab,bitbucket,github ...) ● branch, PR, review, compare, visualizer...
CodeCommit. extras; ● IAM Support ● sns / lambda (commit, pr, pr comment)
CodeCommit. ● direct CodePipeline integration * ● everything is under one account ● IAM support (everything is under one account) ● SNS support advantages
CodeCommit. ● already have github, gitlab, bitbucket ? ● region? disadvantages
CodeBuild. “AWS CodeBuild is a fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy” Usage; - build - test - ./do_whatever_you_want.sh
CodeBuild - Options. - Source provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables
CodeBuild - Options. - Source Provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables *
CodeBuild - Options. - Source provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables - aws managed docker images - python - golang - php etc - custom images - ECR - others * can be customized during pre_build phase
CodeBuild - Options. - Source provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables - S3 artifact - No Artifacts (think about CodePipeline) - [CodePipeline virtual artifacts] * - zip - folder
CodeBuild - Options. - Source provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables
CodeBuild - Options. - Source provider - Environment - Build specifications - Artifacts - Service Role - VPC - Environment variables buildspec_build.yml buildspec_test.yml
CodeBuild - buildspec.yml.
CodeBuild - pros & cons. ?
CodeBuild - logs & triggers.
CodeDeploy. “AWS CodeDeploy is a deployment service that automates application deployments to Amazon EC2 instances, on-premises instances, or serverless Lambda functions.” - ec2 instances - on-promise - lambda
CodeDeploy - deployment types. In-place deployment (ec2, on-promise) Blue/green deployment (ec2, lambda) - Canary - Linear - All-at-once
CodeDeploy - lambda deployment.
CodeDeploy - options. - deployment configuration - triggers - alarms - rollback
CodeDeploy - ec2/on-promise depl.
CodeDeploy - ec2/on-promise depl. deploy-agent. - win / linux application - https 443 - ruby
- Deployment Type - In-place deployment - blue/green deployment - Environment Configuration - Deployment Configuration - Triggers / Alarms / Rollback CodeDeploy - ec2/on-promise depl. options.
CodeDeploy - AppSpec file.
CodeDeploy - pros & cons.
CodePipeline. “AWS CodePipeline is a continuous delivery service you can use to model, visualize, and automate the steps required to release your software” - glue for other AWS and 3rd party deployment and testing tools - UI with some* buttons - multiple stages / actions - trigger + actions structure
CodePipeline - Options. - Source Provider (Trigger)
CodePipeline - Options. - Build Provider * Artifact is required
CodePipeline - Options. - Deployment Provider
CodePipeline - Dashboard.
CodePipeline - Actions.
CodePipeline - etc.
CodePipeline - pros & cons. + flexible + supports 3rd party tools + supports lambda functions - UI is not developer friendly - not easy to change branch - opinionated deployment strategy
CodePipeline Real Life Implementation. CodeBuild CodeBuild CodeBuild CodeCommit
CodePipeline Real Life Implementation. Account Strategy - administrative isolation - limited visibility and discoverability - isolation in order to minimize blast radius
CodePipeline Real Life Implementation. - Source Step * both repos trigger CodePipeline 1 2
CodePipeline Real Life Implementation. - Build Step buildspec_build.yml codepipeline configuration
CodePipeline Real Life Implementation. - Deploy Step * no need to any artifact
CodePipeline Real Life Implementation. - Branch Strategy (Requirement) -- Deploy any branch* to Acceptance Manually -- Deploy Master branch to Pre-Production Automatically -- Deploy Master branch to Production Manually
CodePipeline Real Life Implementation. - Branch Strategy (Requirement) 1. get CodePipeline configuration 2. change current branch to desired branch 3. change CodePipeline configuration
Final Words. ● It’s nice to be able to have workflow elements under one provider, AWS. ● There is no installation, servers, maintenance on all these services, it just works! ● It’s cheap, price wise, really cheap comparing with having a CI/CD server and maintaining it. ● CodePipeline is quite flexible, considering the dashboard as a tool for developers, it can be improved with more functionality ● It’s not possible to deploy a specific branch from web interface ● CodeDeploy support is very limited
DESIGN OPERATEBUILD Standardisation FlexibilityDiversity wishes, demands, budget sizing, contract procedures, templates CD, SLA MANAGED PUBLIC CLOUD. SENTIA / we’re hiring !

Aws Deployment Tools - Overview, Details, Implementation