SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS re:INVENT
Building a CI/CD Pipeline for Containers on
Amazon ECS
J e r e m y C o w a n , A W S S o l u t i o n A r c h i t e c t
A j i t Z a d g a o n k a r , E x e c u t i v e D i r e c t o r o f O p s
N o v e m b e r 2 7 , 2 0 1 7
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What to Expect from This Session
Review of continuous integration, delivery, and deployment
Examine pipelines stages
Overview of CI/CD reference architectures
Next steps and call to action
How Edmunds is using Amazon Elastic Container Service
(Amazon ECS) and CI/CD to accelerate innovation
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What is CI/CD?
Continuous integration
• The practice of merging all developer working copies to a
shared mainline multiple times a day
Continuous delivery
• An approach in which teams produce software in short
cycles, ensuring that the software can be reliably released
at any time
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment versus Delivery
Continuous delivery
• Creates a deployable asset
• Often requires manual approval before changes pushed to
production
Continuous deployment
• Changes pushed to production automatically
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What problems does CI/CD address?
Automates the build, test, and deployment phases
Accelerates the software release cycle
Reduces the cost and risk of delivering changes
Gives developers an opportunity to get fast feedback
Facilitates an iterative approach to software development
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Why Use Containers for Continuous Delivery?
Containers allow you to deploy updates quickly
• Layered file system
• Shared OS kernel
• Packaged dependencies
Revision control through tagging
Predictable and reproducible across different environments
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
A Common Docker Workflow
Build
• Creates standardized packaged applications
Test
• Offers an easy way to smoke test your whole stack
• Runs consistently between environments
Deployment
• Abstracts how services work or are deployed
• Deploys easily via an orchestration service
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Source Build Test Production
• Version Control
• Branching
• Code Review
• Compilation
• Unit Tests
• Static Analysis
• Packaging
• Integration Tests
• Load Tests
• Security Tests
• Acceptance
Tests
• Deployment
• Monitoring
• Measuring
• Validation
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Source Stage
Tools
• AWS CodeCommit
• Git compatible source code repo
• Integrates with other AWS services, e.g. IAM, KMS
• Audit changes
• Pull requests (released 11/20) and CWE
• GitHub Enterprise
• Bitbucket, etc.
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Source Best Practices
• Do frequent check-ins multiple times a day
• Store source code in same repository as
dockerfile
• Store compiled assets in separate versioned
repository, e.g. Amazon S3 or third-party solution
• Copy assets into container at build-time
• Keep code for building container infrastructure in
separate repository
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Build Stage
Tools
• AWS CodeBuild
• A managed build service that compiles source code, runs
tests, and creates assets that are ready to deploy
• VPC access (released 11/21)
• Jenkins
• Others
Build Specification—Phases
Phase Description Examples
install Installation of packages into the
environment
Install testing frameworks
e.g. RSpec, Mocha
pre_build Commands to run before the build
such as login steps or installation of
dependencies
Log in to Amazon ECR.
run Ruby bundler or npm
build Sequence to run the build such as
compilation and/or running tests
Run go build, sbt, Mocha,
RSpec
post_build Commands to run after a build on
success or failure
Build a JAR via Maven or
push a Docker image to
Amazon ECR
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Build Specification—Docker
version: 0.1
phases:
pre_build:
commands:
- $(aws ecr get-login --no-include-email)
build:
commands:
- docker build –t ʺ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}ʺ .
post_build:
commands:
- docker push ʺ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}ʺ
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Docker Build Best Practices
• Tag output artifacts to source control revisions
(e.g. git SHA, semantic version)
• Avoid using a “latest” or “production” tag
• Optimize for build speed
• Co-locate build process with its artifact repository
• Scan images for vulnerabilities before pushing to
a repository
• Rebuild images when base image changes
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Testing Phase
Verify updates across different dimensions
• UI, load, integration, API
Simplified because app dependencies are packaged along with
the application
Validate updates and uncover bugs
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Testing In the Container
Build the container and invoke the test suite inside the container
Override cmds in dockerfile from the command line docker post
build
docker run –e ENVIRONMENT=testing -it my_app:v1 ~/harness/test.sh
Capture output to a file to see if it has resulted in success
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Detached Mode Testing
Deploy to a test environment and run load and other tests
outside the container
Testing tools
• Selenium, Runscope (APIs), JMeter, etc.
Handling environment variables
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Production/Deployment Phase
Repeatable process
Configuration captured in dockerfile
Orchestration services: ECS, Kubernetes, Mesos
Deployment types:
• Rolling
• Blue/green
• Canary
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Amazon ECS—Task & Service
EC2 INSTANCES
LOAD
BALANCER
Internet
ECS
AGENT
TASK
Container
TASK
Container
ECS
AGENT
TASK
Container
TASK
Container
AGENT COMMUNICATION
SERVICE
Amazon
ECS
API
CLUSTER MANAGEMENT
ENGINE
KEY/VALUE STORE
ECS
AGENT
TASK
Container
TASK
Container
LOAD
BALANCER
ECS Service
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ref Architecture CI/CD ECS
AWS
CodeCommit
AWS CodeBuild
Amazon ECR
AWS CodePipeline
Amazon ECS
Source
Repository
Build
Deploy
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Integration with CodePipeline
AWS CloudFormation Action
• Call CloudFormation script from CodePipeline that updates
the task and service definitions
ECS Action for CodePipeline (coming soon)
• Calls the ECS update service API to trigger a deployment
• Eliminates the need to learn CloudFormation
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Controlling ECS Deployments
Minimum and maximum healthy instances
• Controls how container instances are replaced
• Connections are drained before the task is stopped
Update process
• Update task definition with new container version
• Update service definition with new task definition
• Automate using API, CFN, ECS Action, or the CLI
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment—Rolling
Availability Zone Availability Zone
Scenario
Service’s task definition is
updated to a new revision with
parameters:
Desired Count = 2
Minimum Healthy Percent = 50%
Maximum Percent = 100%
These settings constrain the
service to not exceed its desired
size but allow it to halve the
number of tasks during
deployment
EXISTING EXISTING
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment—Rolling
Availability Zone Availability Zone
First, an existing task is
stopped which brings the
healthy percentage of the
service to 50% and makes
room on the cluster for new
tasks
EXISTING
Desired Count = 2
Minimum Healthy Percent = 50%
Maximum Percent = 100%
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment—Rolling
Availability Zone Availability Zone
A task using the new task
definition is started,
bringing the service back to
100% healthy
EXISTING
Desired Count = 2
Minimum Healthy Percent = 50%
Maximum Percent = 100%
NEW
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment—Rolling
Availability Zone Availability Zone
After the new task is
verified to be healthy by the
Elastic Load Balancer health
check, the next existing task
with the older task
definition is drained and
stopped
Desired Count = 2
Minimum Healthy Percent = 50%
Maximum Percent = 100%
NEW
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment—Rolling
Availability Zone Availability Zone
The second new task is
started on the cluster.
bringing the service back to
100% healthy
NEW NEW
Desired Count = 2
Minimum Healthy Percent = 50%
Maximum Percent = 100%
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Blue/Green Deployments
Involves deploying new version of container/task alongside the
old version
Only one version serves production traffic
Allows for fast rollback
Can test new version without impacting production
• Example: new version could be listening on a different port
or only accessible by internal resources
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment – Blue/Green – Target Group Swap
Availability Zone
EXISTING EXISTING
Scenario
Two services are defined each
with their own target group
registered in the same
Application Load Balancer
using host-based routing
Deployment is completed by
swapping the listener rules
between the two target
groups
Availability Zone
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment – Blue/Green – Target Group Swap
Availability Zone
EXISTING EXISTING
The second service is deployed
with a new target group and
registered to the same
Application Load Balancer
Using host-based routing,
requests to www.example.com
are directed to our blue service
while requests to
next.example.com are directed
to our green service
NEW NEW
Availability Zone
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment – Blue/Green – Target Group Swap
Availability Zone
After automated or manual
testing, the deployment can
be completed by swapping
the listener rules on the
Application Load Balancer
and sending traffic to the
green service
NEW NEW
Availability Zone
EXISTING EXISTING
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Deployment – Blue/Green – Target Group Swap
Availability Zone
The previous service and
its target group can then
be destroyed
NEW NEW
Availability Zone
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Canary-Style Deployments
Diverts a percentage of production traffic to the new version of a
container/task
Enables A/B feature testing
Routing could be random or based on user profile
Based on results, canary version could replace production version
or stopped
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ref Architecture Blue/Green Canary
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Amazon ECS Continuous Delivery Partners
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Call to Action
Clone the CI/CD reference architectures
Provide feedback by filing issues or submitting pull requests
https://github.com/awslabs/ecs-refarch-continuous-deployment
https://github.com/awslabs/ecs-canary-blue-green-deployment
https://github.com/awslabs/ecs-blue-green-deployment
Join the Slack workspace, amazon-ecs.slack.com
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
How Edmunds Uses ECS
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
We love helping
people find their
perfect car
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Agenda
Who are we? Edmunds introduction
Edmunds migration into AWS
Containers, architecture at Edmunds
Continuous Integration and Continuous Delivery at Edmunds
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Interesting Numbers
200M+ monthly page views
Over 13K+ dealer partners
Over 18K+ franchise
Over 5M active inventory on website
Quarter billion unique visitors visit edmunds.com every year
59% car shoppers are influenced by Edmunds
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Journey into Clouds
2011
Zen
2012 2013 2014 2016
Citrix CloudStack
AWS
100%
AWS
Site
100%
AWS
ECS
Docker
2017
Ops
Works
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Why Clouds
Business growth
Need for speed
Desire for rapid experimentation
Dynamic infrastructure changes
Ongoing high cost of infrastructure
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
So, why containers?
• Immutable, consistent artifact bundle across benches
• Faster deployments
• Better HA, less upkeep in production
• ~30% lower operating cost
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Container Management & Orchestration
• Transitioned our services from Amazon EC2 to Docker and ECS
• Amazon ECS for managing Docker deployments
• Amazon ECR for our Docker repositories
• CloudFormation for provisioning ECS nodes and E/ALBs
• AWS OpsWorks for configuring ECS nodes {logging, SSM}
• With a few exceptions, our entire stack is powered by Docker and ECS
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Why Amazon ECS?
• Native integration with other AWS services (ELB, CloudWatch, EC2, etc.)
• Automatic scaling of services deployed in ECS
• Using ELB metrics, CPU, memory to scale
• AZ and resource aware container placement
• Task placement strategies
• Faster scaling
• Better utilization of our AWS resources
• Zero downtime deployments
• Easier AMI upgrades
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Need for CI/CD
• Faster feedback cycle
• Lower risk
• Exposes bottlenecks and inefficiencies
• Many more
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Platform
App
Tier
Service
Tier
Persistence
Tier
S3 MongoDB
Elasticsearch
{ Vehicle }
{ Inventory }
{ Dealer }
Commit
... in Sandbox
... in Pre-production
... in Production
Write
Git
Better Team code
collaboration
Control over Artifact
progression
Canary Deployments
Safe (isolated),
Easy Feature Testing
Deploy Manage
View into Real Users,
EVERY Transactions
CI/CD at Edmunds
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Edmunds Site
• Multi-AZ and multi-region deployments
• Nginx for traffic routing, Canary, and A/B testing
• Nginx hundreds of rules, regex, custom header
• Multi CDN for caching
• Latency or availability based routing
Multi-CDN
(InstartLogic, Fastly, AWS CloudFront)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ECS—Infrastructure Architecture
CloudFormation provisions ECS instances and ELBs
ECS instances configured via OpsWorks
•Easier to manage host level config, e.g. Docker agents, ECS, logging, APM config, Amazon
Inspector, etc.
Internal tooling to manage creation of ECS services, task def and Auto Scaling config
•Standardized templates—sets up service with required properties and defined container
standards
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Container Standardization—Do It !
ECS Host
|-------------------|
Reserved Memory
(host)
|-------------------|
Reserved Memory
(container)
|---------------------------------------------------------
|Container Memory Allocation
|--------------------------------|
Heap Allocation
Standard Container Sizing - Container CPU Units + Container Memory Units
Standard EC2 Instance Type for ECS Hosts
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Configuration by Default
All applications running on ECS platform are environment-aware
Internal library automatically points application to correct VIP
• e.g. inventory-elastic-prod-x.route.edmunds.com
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Auto Scaling
• ECS service Auto Scaling
• Request-based (ALB metrics - #RequestCount*)
• CPU and memory-based
• Schedule based
• ECS (EC2) instance Auto Scaling
• Scale based on reserved capacity
• Downscale and remove instances with no
containers
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
EC2 Downscaling Nuances
Avoid thrashing
• Check free nodes
• Enable termination protection on occupied EC2 nodes
• Enable downscaling
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Custom Docker Build Framework
Edmunds EcoSystem Framework
- Templated dockerfiles
- Templates are extensible
- Easy to manage global configs
- e.g. APM config, DNS related
properties, etc.
- Routing rules
- Few types of artifacts = few dockerfiles
to manage
- Developer flexibility
- Modifications are easy
- Generates dockerfile at build time
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• Application routing framework to
route requests to multiple
applications
• Nginx for routing requests
• Developers define request
paths/patterns for their
applications
• Rules are sorted
Edmunds Traffic Routing (aka Service Registry)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ability to validate and/or release code changes
with live traffic
• Unique services for canary and stable
• Nginx for traffic distribution between canary
and stable
• Real-time analytics and processing of Nginx
logs
• Real-time canary feedback loop
• Feedback-based auto traffic increment/
roll-back
Edmunds Canary
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
mainline branch
(project repo. master/origin)
< branch >
feature branch
(project repo. branch) azadgaonkar-uct-
3221
myapp
< clone >
local feature branch
(local repo.)
- developer -
- acting technical lead
-
< commit >
< rebase >
< push > [ merge request ]+
< merge >
Continuous Integ.
(Jenkins builds)
Continuous Delivery
(Deployment pipeline)
v1.
3
Dev QA Prod
< build >
< deploy >
[ resolve ]
v1.2v1.1v1.0
Sandbox Deployment
(Docker images)
azadgaonkar-
myapp.sand.edmundsd
ev.com
< deploy > < deploy >
- sandbox -
Commit Merge request workflow example
Prod
C C
Tests Tests Tests
Canary Feedback
loop
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Our CI/CD Tool Set
• Git
• Jenkins, CodeBuild
• ECR
• OpsWorks
• Tools on ECS APIs
• A lot of ƛ and step functions
• Jenkins Pipeline, CodeDeploy
• Metric store (Wavefront), CloudWatch—events, rules, and alerts
• AWS Config
• Alerts (VictorOps)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
End-to-End CI/CD Visual Representation
If Canary Version is an Improvement
● Time to First Byte is equal or less
● HTTP Error Rates are equal or
reduced
● Logged Exception Rates are equal or
reduced
If Canary Version is NOT an Improvement
● Time to First Byte is greater
● HTTP Error Rates, Logged Exception
Rates are increased
● Difference for ttfb (75th percentile)
(107.89%) - Canary: `1037.05 ms`,
Stable: `310.25 ms`
● QA canary version recovered at traffic
ratio *20%*
● Canary version reset to 0%
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• ECS related metrics sent to
metrics datastore for trending,
analytics, and alerting
• AWS Config to monitor
differences between same ECS
config across different cluster
• AWS Config to ensure ECS
config follows container
standards and application
requirements (e.g. min heap)
Metrics and Monitoring—ML
Time Series – data store
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Canary versus Stable Version Real-Time Dashboard
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AI for Decision Making
• Gather data for everything—CPU, memory, #requests, test failures
• Build simplistic time series trending data
• Find, track, and remove anomalies
• Address anomalies, understand root causes
• Build simple ML models to remove white noise
• Let DL guide your deployment decisions—roll forward, roll back, autoscale,
etc.
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
The Mantra for CI/CD Success
• Invest in better engineering practices
• Respect failures, invest in well-written automated tests
• 360O Monitoring—monitor everything
• Measure, baseline and benchmark
• Use data science (AI/ DL/ML) to guide decisions
• Have a commitment from ALL stakeholders
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
In Closing
• Better developer experience
• Smoother feature and product rollout
• Rock solid HA ~99+% and a fully automated recovery
• No efforts are wasted on container management
• $$$ {33%}
• It simply works!
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Surveys
Don’t forget to complete your survey for CON302 in the mobile app
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...Amazon Web Services
 
Interstella GTC: Monolith to Microservices with ECS
Interstella GTC: Monolith to Microservices with ECSInterstella GTC: Monolith to Microservices with ECS
Interstella GTC: Monolith to Microservices with ECSAmazon Web Services
 
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017Amazon Web Services
 
Create a Serverless Image Processing Platform
Create a Serverless Image Processing PlatformCreate a Serverless Image Processing Platform
Create a Serverless Image Processing PlatformAmazon Web Services
 
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...Amazon Web Services
 
Getting Started with Amazon EC2 Container Service
Getting Started with Amazon EC2 Container ServiceGetting Started with Amazon EC2 Container Service
Getting Started with Amazon EC2 Container ServiceAmazon Web Services
 
CON317_Advanced container management at catsndogs.lol
CON317_Advanced container management at catsndogs.lolCON317_Advanced container management at catsndogs.lol
CON317_Advanced container management at catsndogs.lolAmazon Web Services
 
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017Amazon Web Services
 
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017Amazon Web Services
 
Managing Container Images with Amazon ECR - AWS Online Tech Talks
Managing Container Images with Amazon ECR - AWS Online Tech TalksManaging Container Images with Amazon ECR - AWS Online Tech Talks
Managing Container Images with Amazon ECR - AWS Online Tech TalksAmazon Web Services
 
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017Amazon Web Services
 
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...Amazon Web Services
 
DEV205_Developing Applications on AWS in the JVM
DEV205_Developing Applications on AWS in the JVMDEV205_Developing Applications on AWS in the JVM
DEV205_Developing Applications on AWS in the JVMAmazon Web Services
 
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017Serverless DevOps to the Rescue - SRV330 - re:Invent 2017
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017Amazon Web Services
 
Comparing Compute Options for Microservices - AWS Summti Sydney 2018
Comparing Compute Options for Microservices - AWS Summti Sydney 2018Comparing Compute Options for Microservices - AWS Summti Sydney 2018
Comparing Compute Options for Microservices - AWS Summti Sydney 2018Amazon Web Services
 
Build a Serverless Web Application in One Day
Build a Serverless Web Application in One DayBuild a Serverless Web Application in One Day
Build a Serverless Web Application in One DayAmazon Web Services
 
Serverless Architectural Patterns
Serverless Architectural PatternsServerless Architectural Patterns
Serverless Architectural PatternsAmazon Web Services
 

Was ist angesagt? (20)

STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
 
Interstella GTC: Monolith to Microservices with ECS
Interstella GTC: Monolith to Microservices with ECSInterstella GTC: Monolith to Microservices with ECS
Interstella GTC: Monolith to Microservices with ECS
 
Serverless Developer Experience
Serverless Developer ExperienceServerless Developer Experience
Serverless Developer Experience
 
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017
Build a Java Spring Application on Amazon ECS - CON332 - re:Invent 2017
 
Create a Serverless Image Processing Platform
Create a Serverless Image Processing PlatformCreate a Serverless Image Processing Platform
Create a Serverless Image Processing Platform
 
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...
DAT321_How Careem Used Amazon ElastiCache for Redis to Accelerate Their Ride ...
 
Serverless - State Of the Union
Serverless - State Of the UnionServerless - State Of the Union
Serverless - State Of the Union
 
Getting Started with Amazon EC2 Container Service
Getting Started with Amazon EC2 Container ServiceGetting Started with Amazon EC2 Container Service
Getting Started with Amazon EC2 Container Service
 
CON317_Advanced container management at catsndogs.lol
CON317_Advanced container management at catsndogs.lolCON317_Advanced container management at catsndogs.lol
CON317_Advanced container management at catsndogs.lol
 
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017
Simplifying Microsoft Architectures with AWS - CMP214 - re:Invent 2017
 
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017
Best Practices for Orchestrating AWS Lambda Workloads - SRV335 - re:Invent 2017
 
Managing Container Images with Amazon ECR - AWS Online Tech Talks
Managing Container Images with Amazon ECR - AWS Online Tech TalksManaging Container Images with Amazon ECR - AWS Online Tech Talks
Managing Container Images with Amazon ECR - AWS Online Tech Talks
 
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017
Accelerate Digital Experience with Serverless Computing - DEM86 - re:Invent 2017
 
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...
AWS Compute: What’s New in Amazon EC2, Containers and Serverless - CMP218 - r...
 
HLC308_Refactoring to the Cloud
HLC308_Refactoring to the CloudHLC308_Refactoring to the Cloud
HLC308_Refactoring to the Cloud
 
DEV205_Developing Applications on AWS in the JVM
DEV205_Developing Applications on AWS in the JVMDEV205_Developing Applications on AWS in the JVM
DEV205_Developing Applications on AWS in the JVM
 
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017Serverless DevOps to the Rescue - SRV330 - re:Invent 2017
Serverless DevOps to the Rescue - SRV330 - re:Invent 2017
 
Comparing Compute Options for Microservices - AWS Summti Sydney 2018
Comparing Compute Options for Microservices - AWS Summti Sydney 2018Comparing Compute Options for Microservices - AWS Summti Sydney 2018
Comparing Compute Options for Microservices - AWS Summti Sydney 2018
 
Build a Serverless Web Application in One Day
Build a Serverless Web Application in One DayBuild a Serverless Web Application in One Day
Build a Serverless Web Application in One Day
 
Serverless Architectural Patterns
Serverless Architectural PatternsServerless Architectural Patterns
Serverless Architectural Patterns
 

Ähnlich wie CON302_Building a CICD Pipeline for Containers on Amazon ECS

GPSTEC304_Shipping With PorpoiseA K8s Story
GPSTEC304_Shipping With PorpoiseA K8s StoryGPSTEC304_Shipping With PorpoiseA K8s Story
GPSTEC304_Shipping With PorpoiseA K8s StoryAmazon Web Services
 
Building CI/CD Pipelines for Serverless Applications
Building CI/CD Pipelines for Serverless ApplicationsBuilding CI/CD Pipelines for Serverless Applications
Building CI/CD Pipelines for Serverless ApplicationsAmazon Web Services
 
Building A CICD Pipeline for Deploying to Containers
Building A CICD Pipeline for Deploying to ContainersBuilding A CICD Pipeline for Deploying to Containers
Building A CICD Pipeline for Deploying to ContainersAmazon Web Services
 
DEV326_DevOps Essentials An Introductory Workshop on CICD Practices
DEV326_DevOps Essentials An Introductory Workshop on CICD PracticesDEV326_DevOps Essentials An Introductory Workshop on CICD Practices
DEV326_DevOps Essentials An Introductory Workshop on CICD PracticesAmazon Web Services
 
CON203_Driving Innovation with Containers
CON203_Driving Innovation with ContainersCON203_Driving Innovation with Containers
CON203_Driving Innovation with ContainersAmazon Web Services
 
Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017Amazon Web Services
 
Building a CICD Pipeline for Deploying to Containers
Building a CICD Pipeline for Deploying to ContainersBuilding a CICD Pipeline for Deploying to Containers
Building a CICD Pipeline for Deploying to ContainersAmazon Web Services
 
SRV412 Deep Dive on CICD and Docker
SRV412 Deep Dive on CICD and DockerSRV412 Deep Dive on CICD and Docker
SRV412 Deep Dive on CICD and DockerAmazon Web Services
 
Building a CI/CD Pipeline For Container Deployment to Amazon ECS
Building a CI/CD Pipeline For Container Deployment to Amazon ECSBuilding a CI/CD Pipeline For Container Deployment to Amazon ECS
Building a CI/CD Pipeline For Container Deployment to Amazon ECSAmazon Web Services
 
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...Amazon Web Services
 
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...Amazon Web Services Korea
 
Born in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupBorn in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupAmazon Web Services
 
Building a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersBuilding a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersAmazon Web Services
 
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Amazon Web Services
 
Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECS Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECS Amazon Web Services
 
Building a CICD Pipeline for Container Deployment to Amazon ECS
Building a CICD Pipeline for Container Deployment to Amazon ECSBuilding a CICD Pipeline for Container Deployment to Amazon ECS
Building a CICD Pipeline for Container Deployment to Amazon ECSAmazon Web Services
 
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...Amazon Web Services
 
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017Amazon Web Services
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersAmazon Web Services
 

Ähnlich wie CON302_Building a CICD Pipeline for Containers on Amazon ECS (20)

GPSTEC304_Shipping With PorpoiseA K8s Story
GPSTEC304_Shipping With PorpoiseA K8s StoryGPSTEC304_Shipping With PorpoiseA K8s Story
GPSTEC304_Shipping With PorpoiseA K8s Story
 
Building CI/CD Pipelines for Serverless Applications
Building CI/CD Pipelines for Serverless ApplicationsBuilding CI/CD Pipelines for Serverless Applications
Building CI/CD Pipelines for Serverless Applications
 
Building A CICD Pipeline for Deploying to Containers
Building A CICD Pipeline for Deploying to ContainersBuilding A CICD Pipeline for Deploying to Containers
Building A CICD Pipeline for Deploying to Containers
 
DEV326_DevOps Essentials An Introductory Workshop on CICD Practices
DEV326_DevOps Essentials An Introductory Workshop on CICD PracticesDEV326_DevOps Essentials An Introductory Workshop on CICD Practices
DEV326_DevOps Essentials An Introductory Workshop on CICD Practices
 
CON203_Driving Innovation with Containers
CON203_Driving Innovation with ContainersCON203_Driving Innovation with Containers
CON203_Driving Innovation with Containers
 
Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017Driving Innovation with Containers - CON203 - re:Invent 2017
Driving Innovation with Containers - CON203 - re:Invent 2017
 
Building a CICD Pipeline for Deploying to Containers
Building a CICD Pipeline for Deploying to ContainersBuilding a CICD Pipeline for Deploying to Containers
Building a CICD Pipeline for Deploying to Containers
 
SRV412 Deep Dive on CICD and Docker
SRV412 Deep Dive on CICD and DockerSRV412 Deep Dive on CICD and Docker
SRV412 Deep Dive on CICD and Docker
 
Building a CI/CD Pipeline For Container Deployment to Amazon ECS
Building a CI/CD Pipeline For Container Deployment to Amazon ECSBuilding a CI/CD Pipeline For Container Deployment to Amazon ECS
Building a CI/CD Pipeline For Container Deployment to Amazon ECS
 
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
 
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
 
Born in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupBorn in the Cloud, Built like a Startup
Born in the Cloud, Built like a Startup
 
ARC205_Born in the Cloud
ARC205_Born in the CloudARC205_Born in the Cloud
ARC205_Born in the Cloud
 
Building a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on ContainersBuilding a CICD Pipeline for deploying on Containers
Building a CICD Pipeline for deploying on Containers
 
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
 
Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECS Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECS
 
Building a CICD Pipeline for Container Deployment to Amazon ECS
Building a CICD Pipeline for Container Deployment to Amazon ECSBuilding a CICD Pipeline for Container Deployment to Amazon ECS
Building a CICD Pipeline for Container Deployment to Amazon ECS
 
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
 
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017
Building a CI/CD Pipeline for Containers - DevDay Los Angeles 2017
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 

Mehr von Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Mehr von Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

CON302_Building a CICD Pipeline for Containers on Amazon ECS

  • 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS re:INVENT Building a CI/CD Pipeline for Containers on Amazon ECS J e r e m y C o w a n , A W S S o l u t i o n A r c h i t e c t A j i t Z a d g a o n k a r , E x e c u t i v e D i r e c t o r o f O p s N o v e m b e r 2 7 , 2 0 1 7
  • 2. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What to Expect from This Session Review of continuous integration, delivery, and deployment Examine pipelines stages Overview of CI/CD reference architectures Next steps and call to action How Edmunds is using Amazon Elastic Container Service (Amazon ECS) and CI/CD to accelerate innovation
  • 3. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What is CI/CD? Continuous integration • The practice of merging all developer working copies to a shared mainline multiple times a day Continuous delivery • An approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time
  • 4. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment versus Delivery Continuous delivery • Creates a deployable asset • Often requires manual approval before changes pushed to production Continuous deployment • Changes pushed to production automatically
  • 5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What problems does CI/CD address? Automates the build, test, and deployment phases Accelerates the software release cycle Reduces the cost and risk of delivering changes Gives developers an opportunity to get fast feedback Facilitates an iterative approach to software development
  • 6. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Why Use Containers for Continuous Delivery? Containers allow you to deploy updates quickly • Layered file system • Shared OS kernel • Packaged dependencies Revision control through tagging Predictable and reproducible across different environments
  • 7. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. A Common Docker Workflow Build • Creates standardized packaged applications Test • Offers an easy way to smoke test your whole stack • Runs consistently between environments Deployment • Abstracts how services work or are deployed • Deploys easily via an orchestration service
  • 8. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Source Build Test Production • Version Control • Branching • Code Review • Compilation • Unit Tests • Static Analysis • Packaging • Integration Tests • Load Tests • Security Tests • Acceptance Tests • Deployment • Monitoring • Measuring • Validation
  • 9. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Source Stage Tools • AWS CodeCommit • Git compatible source code repo • Integrates with other AWS services, e.g. IAM, KMS • Audit changes • Pull requests (released 11/20) and CWE • GitHub Enterprise • Bitbucket, etc.
  • 10. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Source Best Practices • Do frequent check-ins multiple times a day • Store source code in same repository as dockerfile • Store compiled assets in separate versioned repository, e.g. Amazon S3 or third-party solution • Copy assets into container at build-time • Keep code for building container infrastructure in separate repository
  • 11. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Build Stage Tools • AWS CodeBuild • A managed build service that compiles source code, runs tests, and creates assets that are ready to deploy • VPC access (released 11/21) • Jenkins • Others
  • 12. Build Specification—Phases Phase Description Examples install Installation of packages into the environment Install testing frameworks e.g. RSpec, Mocha pre_build Commands to run before the build such as login steps or installation of dependencies Log in to Amazon ECR. run Ruby bundler or npm build Sequence to run the build such as compilation and/or running tests Run go build, sbt, Mocha, RSpec post_build Commands to run after a build on success or failure Build a JAR via Maven or push a Docker image to Amazon ECR
  • 13. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Build Specification—Docker version: 0.1 phases: pre_build: commands: - $(aws ecr get-login --no-include-email) build: commands: - docker build –t ʺ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}ʺ . post_build: commands: - docker push ʺ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}ʺ
  • 14. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Docker Build Best Practices • Tag output artifacts to source control revisions (e.g. git SHA, semantic version) • Avoid using a “latest” or “production” tag • Optimize for build speed • Co-locate build process with its artifact repository • Scan images for vulnerabilities before pushing to a repository • Rebuild images when base image changes
  • 15. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Testing Phase Verify updates across different dimensions • UI, load, integration, API Simplified because app dependencies are packaged along with the application Validate updates and uncover bugs
  • 16. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Testing In the Container Build the container and invoke the test suite inside the container Override cmds in dockerfile from the command line docker post build docker run –e ENVIRONMENT=testing -it my_app:v1 ~/harness/test.sh Capture output to a file to see if it has resulted in success
  • 17. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Detached Mode Testing Deploy to a test environment and run load and other tests outside the container Testing tools • Selenium, Runscope (APIs), JMeter, etc. Handling environment variables
  • 18. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Production/Deployment Phase Repeatable process Configuration captured in dockerfile Orchestration services: ECS, Kubernetes, Mesos Deployment types: • Rolling • Blue/green • Canary
  • 19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon ECS—Task & Service EC2 INSTANCES LOAD BALANCER Internet ECS AGENT TASK Container TASK Container ECS AGENT TASK Container TASK Container AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK Container TASK Container LOAD BALANCER ECS Service
  • 20. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ref Architecture CI/CD ECS AWS CodeCommit AWS CodeBuild Amazon ECR AWS CodePipeline Amazon ECS Source Repository Build Deploy
  • 21. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Integration with CodePipeline AWS CloudFormation Action • Call CloudFormation script from CodePipeline that updates the task and service definitions ECS Action for CodePipeline (coming soon) • Calls the ECS update service API to trigger a deployment • Eliminates the need to learn CloudFormation
  • 22. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Controlling ECS Deployments Minimum and maximum healthy instances • Controls how container instances are replaced • Connections are drained before the task is stopped Update process • Update task definition with new container version • Update service definition with new task definition • Automate using API, CFN, ECS Action, or the CLI
  • 23. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment—Rolling Availability Zone Availability Zone Scenario Service’s task definition is updated to a new revision with parameters: Desired Count = 2 Minimum Healthy Percent = 50% Maximum Percent = 100% These settings constrain the service to not exceed its desired size but allow it to halve the number of tasks during deployment EXISTING EXISTING
  • 24. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment—Rolling Availability Zone Availability Zone First, an existing task is stopped which brings the healthy percentage of the service to 50% and makes room on the cluster for new tasks EXISTING Desired Count = 2 Minimum Healthy Percent = 50% Maximum Percent = 100%
  • 25. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment—Rolling Availability Zone Availability Zone A task using the new task definition is started, bringing the service back to 100% healthy EXISTING Desired Count = 2 Minimum Healthy Percent = 50% Maximum Percent = 100% NEW
  • 26. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment—Rolling Availability Zone Availability Zone After the new task is verified to be healthy by the Elastic Load Balancer health check, the next existing task with the older task definition is drained and stopped Desired Count = 2 Minimum Healthy Percent = 50% Maximum Percent = 100% NEW
  • 27. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment—Rolling Availability Zone Availability Zone The second new task is started on the cluster. bringing the service back to 100% healthy NEW NEW Desired Count = 2 Minimum Healthy Percent = 50% Maximum Percent = 100%
  • 28. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Blue/Green Deployments Involves deploying new version of container/task alongside the old version Only one version serves production traffic Allows for fast rollback Can test new version without impacting production • Example: new version could be listening on a different port or only accessible by internal resources
  • 29. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment – Blue/Green – Target Group Swap Availability Zone EXISTING EXISTING Scenario Two services are defined each with their own target group registered in the same Application Load Balancer using host-based routing Deployment is completed by swapping the listener rules between the two target groups Availability Zone
  • 30. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment – Blue/Green – Target Group Swap Availability Zone EXISTING EXISTING The second service is deployed with a new target group and registered to the same Application Load Balancer Using host-based routing, requests to www.example.com are directed to our blue service while requests to next.example.com are directed to our green service NEW NEW Availability Zone
  • 31. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment – Blue/Green – Target Group Swap Availability Zone After automated or manual testing, the deployment can be completed by swapping the listener rules on the Application Load Balancer and sending traffic to the green service NEW NEW Availability Zone EXISTING EXISTING
  • 32. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deployment – Blue/Green – Target Group Swap Availability Zone The previous service and its target group can then be destroyed NEW NEW Availability Zone
  • 33. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Canary-Style Deployments Diverts a percentage of production traffic to the new version of a container/task Enables A/B feature testing Routing could be random or based on user profile Based on results, canary version could replace production version or stopped
  • 34. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ref Architecture Blue/Green Canary
  • 35. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon ECS Continuous Delivery Partners
  • 36. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Call to Action Clone the CI/CD reference architectures Provide feedback by filing issues or submitting pull requests https://github.com/awslabs/ecs-refarch-continuous-deployment https://github.com/awslabs/ecs-canary-blue-green-deployment https://github.com/awslabs/ecs-blue-green-deployment Join the Slack workspace, amazon-ecs.slack.com
  • 37. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. How Edmunds Uses ECS
  • 38. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. We love helping people find their perfect car
  • 39. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Agenda Who are we? Edmunds introduction Edmunds migration into AWS Containers, architecture at Edmunds Continuous Integration and Continuous Delivery at Edmunds
  • 40. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Interesting Numbers 200M+ monthly page views Over 13K+ dealer partners Over 18K+ franchise Over 5M active inventory on website Quarter billion unique visitors visit edmunds.com every year 59% car shoppers are influenced by Edmunds
  • 41. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Journey into Clouds 2011 Zen 2012 2013 2014 2016 Citrix CloudStack AWS 100% AWS Site 100% AWS ECS Docker 2017 Ops Works
  • 42. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Why Clouds Business growth Need for speed Desire for rapid experimentation Dynamic infrastructure changes Ongoing high cost of infrastructure
  • 43. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. So, why containers? • Immutable, consistent artifact bundle across benches • Faster deployments • Better HA, less upkeep in production • ~30% lower operating cost
  • 44. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Container Management & Orchestration • Transitioned our services from Amazon EC2 to Docker and ECS • Amazon ECS for managing Docker deployments • Amazon ECR for our Docker repositories • CloudFormation for provisioning ECS nodes and E/ALBs • AWS OpsWorks for configuring ECS nodes {logging, SSM} • With a few exceptions, our entire stack is powered by Docker and ECS
  • 45. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Why Amazon ECS? • Native integration with other AWS services (ELB, CloudWatch, EC2, etc.) • Automatic scaling of services deployed in ECS • Using ELB metrics, CPU, memory to scale • AZ and resource aware container placement • Task placement strategies • Faster scaling • Better utilization of our AWS resources • Zero downtime deployments • Easier AMI upgrades
  • 46. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Need for CI/CD • Faster feedback cycle • Lower risk • Exposes bottlenecks and inefficiencies • Many more
  • 47. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Platform App Tier Service Tier Persistence Tier S3 MongoDB Elasticsearch { Vehicle } { Inventory } { Dealer } Commit ... in Sandbox ... in Pre-production ... in Production Write Git Better Team code collaboration Control over Artifact progression Canary Deployments Safe (isolated), Easy Feature Testing Deploy Manage View into Real Users, EVERY Transactions CI/CD at Edmunds
  • 48. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Edmunds Site • Multi-AZ and multi-region deployments • Nginx for traffic routing, Canary, and A/B testing • Nginx hundreds of rules, regex, custom header • Multi CDN for caching • Latency or availability based routing Multi-CDN (InstartLogic, Fastly, AWS CloudFront)
  • 49. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ECS—Infrastructure Architecture CloudFormation provisions ECS instances and ELBs ECS instances configured via OpsWorks •Easier to manage host level config, e.g. Docker agents, ECS, logging, APM config, Amazon Inspector, etc. Internal tooling to manage creation of ECS services, task def and Auto Scaling config •Standardized templates—sets up service with required properties and defined container standards
  • 50. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Container Standardization—Do It ! ECS Host |-------------------| Reserved Memory (host) |-------------------| Reserved Memory (container) |--------------------------------------------------------- |Container Memory Allocation |--------------------------------| Heap Allocation Standard Container Sizing - Container CPU Units + Container Memory Units Standard EC2 Instance Type for ECS Hosts
  • 51. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Configuration by Default All applications running on ECS platform are environment-aware Internal library automatically points application to correct VIP • e.g. inventory-elastic-prod-x.route.edmunds.com
  • 52. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Auto Scaling • ECS service Auto Scaling • Request-based (ALB metrics - #RequestCount*) • CPU and memory-based • Schedule based • ECS (EC2) instance Auto Scaling • Scale based on reserved capacity • Downscale and remove instances with no containers
  • 53. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. EC2 Downscaling Nuances Avoid thrashing • Check free nodes • Enable termination protection on occupied EC2 nodes • Enable downscaling
  • 54. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Custom Docker Build Framework Edmunds EcoSystem Framework - Templated dockerfiles - Templates are extensible - Easy to manage global configs - e.g. APM config, DNS related properties, etc. - Routing rules - Few types of artifacts = few dockerfiles to manage - Developer flexibility - Modifications are easy - Generates dockerfile at build time
  • 55. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • Application routing framework to route requests to multiple applications • Nginx for routing requests • Developers define request paths/patterns for their applications • Rules are sorted Edmunds Traffic Routing (aka Service Registry)
  • 56. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ability to validate and/or release code changes with live traffic • Unique services for canary and stable • Nginx for traffic distribution between canary and stable • Real-time analytics and processing of Nginx logs • Real-time canary feedback loop • Feedback-based auto traffic increment/ roll-back Edmunds Canary
  • 57. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. mainline branch (project repo. master/origin) < branch > feature branch (project repo. branch) azadgaonkar-uct- 3221 myapp < clone > local feature branch (local repo.) - developer - - acting technical lead - < commit > < rebase > < push > [ merge request ]+ < merge > Continuous Integ. (Jenkins builds) Continuous Delivery (Deployment pipeline) v1. 3 Dev QA Prod < build > < deploy > [ resolve ] v1.2v1.1v1.0 Sandbox Deployment (Docker images) azadgaonkar- myapp.sand.edmundsd ev.com < deploy > < deploy > - sandbox - Commit Merge request workflow example Prod C C Tests Tests Tests Canary Feedback loop
  • 58. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Our CI/CD Tool Set • Git • Jenkins, CodeBuild • ECR • OpsWorks • Tools on ECS APIs • A lot of ƛ and step functions • Jenkins Pipeline, CodeDeploy • Metric store (Wavefront), CloudWatch—events, rules, and alerts • AWS Config • Alerts (VictorOps)
  • 59. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. End-to-End CI/CD Visual Representation If Canary Version is an Improvement ● Time to First Byte is equal or less ● HTTP Error Rates are equal or reduced ● Logged Exception Rates are equal or reduced If Canary Version is NOT an Improvement ● Time to First Byte is greater ● HTTP Error Rates, Logged Exception Rates are increased ● Difference for ttfb (75th percentile) (107.89%) - Canary: `1037.05 ms`, Stable: `310.25 ms` ● QA canary version recovered at traffic ratio *20%* ● Canary version reset to 0%
  • 60. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • ECS related metrics sent to metrics datastore for trending, analytics, and alerting • AWS Config to monitor differences between same ECS config across different cluster • AWS Config to ensure ECS config follows container standards and application requirements (e.g. min heap) Metrics and Monitoring—ML Time Series – data store
  • 61. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Canary versus Stable Version Real-Time Dashboard
  • 62. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AI for Decision Making • Gather data for everything—CPU, memory, #requests, test failures • Build simplistic time series trending data • Find, track, and remove anomalies • Address anomalies, understand root causes • Build simple ML models to remove white noise • Let DL guide your deployment decisions—roll forward, roll back, autoscale, etc.
  • 63. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. The Mantra for CI/CD Success • Invest in better engineering practices • Respect failures, invest in well-written automated tests • 360O Monitoring—monitor everything • Measure, baseline and benchmark • Use data science (AI/ DL/ML) to guide decisions • Have a commitment from ALL stakeholders
  • 64. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. In Closing • Better developer experience • Smoother feature and product rollout • Rock solid HA ~99+% and a fully automated recovery • No efforts are wasted on container management • $$$ {33%} • It simply works!
  • 65. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Surveys Don’t forget to complete your survey for CON302 in the mobile app
  • 66. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Thank you!