Upload
amazon-web-services
View
2.581
Download
2
Embed Size (px)
Citation preview
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Woody Borraccino, AWS Solutions Architect
May 4, 2016, Stockholm
DevOps on AWS
Deep Dive on Continuous Delivery and the AWS
Developer Tools
What to expect from the session
• The Amazon DevOps story
• New developer tools for everyone:
• AWS CodeCommit
• AWS CodeDeploy
• AWS CodePipeline
• AWS Elastic Beanstalk
What is DevOps?
DevOps = efficiencies that speed up this lifecycle
developers customers
releasetestbuild
plan monitor
delivery pipeline
feedback loop
Software development lifecycle
Service-Oriented
Architecture (SOA)
Single-purpose
Connected through APIs
Highly decoupled
“Microservices”
PipelinesContinuous delivery
Automated release
process
Faster and more reliable
releases
>90% of teams
Microservice development lifecycle
developers delivery pipelinesservices
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
= 50 million deployments a year
Thousands of teams
× Microservice architecture
× Continuous delivery
× Multiple environments
Setting up a delivery pipeline
Testing Staging Production
de
plo
y
de
plo
y
de
plo
y
Source Build
release
AWS CodeDeploy
AWS CodePipeline
AWS
CodeCommit
AWS CodeCommit
Use standard Git tools
Scalability, availability, and durability of Amazon S3
Encryption at rest with customer-specific keys
git pull/push CodeCommit
Git objects in
Amazon S3
Git index in
Amazon
DynamoDB
Encryption key
in AWS KMS
SSH or HTTPS
AWS CodeDeploy
Easy and reliable deployments
Scale with ease
Deploy to any server
TestCodeDeployv1, v2, v3
Production
Dev
application
revisions
deployment groups
AWS CodePipeline
Connect to best-of-breed tools
Accelerate your release process
Consistently verify each release
Build
1) Build
2) Unit test
1) Deploy
2) UI test
Source Beta Production
1) Deploy
2) Perf test
Gamma
1) Deploy canary
2) Deploy region 1
3) Deploy region 2
1) Pull
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
PipelineStage
Action
Transition
CodePipeline
MyApplication
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
NotifyDevelopers
Lambda
CodePipeline
MyApplication
Parallel actions
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
NotifyDevelopers
Lambda
TestAPI
Runscope
CodePipeline
MyApplication
Sequential actions
8. Retrieve build artifact
EC2 instance
CodePipeline
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
Source Artifact
S3
Build Artifact
S3
5. Get source artifact
1. Get Changes
6. Store build artifact
3. Poll for Job
4. Acknowledge Job
7. Put Success
9. Deploy build artifact
Elastic Beanstalk
Web container
Java App
MyApplication
AWS service integrations
Source Invoke Logic Deploy
AWS Elastic BeanstalkAmazon S3
AWS CodeDeploy
AWS Lambda
AWS CodeCommit
AWS Elastic Beanstalk
Fast & simple
to begin
Developer
productivity
Impossible
to outgrow
Complete
resource control
Easily deploy PHP, Java, Python, Ruby,
Node.js, .NET, Go or Docker application
@niiloursin
who am I ::
Niilo Ursin @niiloursin
CTO, Alma Talent OyJoined Alma Media/ Kauppalehti 2009Commercial web sites since 1998
@niiloursin
Kauppalehti’s road to DevOps
1996 - 2013 dedicated & virtual servers2013 started experimenting cloud with private cloud + AWS • Automation with Chef (private cloud)• AWS Route53, S3, CloudFront, SES, SNS, SQS
2015 Three sites (frontends+some apis) moved to AWS• Automation with scripts + CloudFormation• AWS Elastic Load Balancing, Elastic Beanstalk, EC2, DynamoDB, ElasticSearch,
Lambda, CloudWatch
2016 Kinesis, Redshift, Aurora
@niiloursin
MINIMUM LOVEABLE PRODUCT
© https://medium.com/the-happy-startup-school/beyond-mvp-10-steps-to-make-your-product-minimum-loveable-51800164ae0c
MLP = The version of a new product that brings back the maximum amount of love from your early tribe members with the least effort.
@niiloursin
DevOps ::
TRUST -> NO FEAR
1. EVERY DEVELOPER HAS ACCESS TO EVERYTHING
2. EVERY DEVELOPER CAN UPDATE PRODUCTION
3. NO FEAR OF UPDATING PRODUCTION © Spotify : https://labs.spotify.com/2014/09/20/spotify-engineering-culture-part-2/
@niiloursin
DevOps ::
Automation -> Infrastructure as a code
deploy-to-production.sh
QASTAGING
PRODUCTION
One time testing environments
for:
PERFORMANCE SECURITY
@niiloursin
DevOps ::
Tested small increments continuously deployed to
production record 7 production deployments in one DAY
(20.1.2015)
@niiloursin
Prototypes ::
After desktop site renewal team built four prototypes of mobile site within two weeks:
• NodeJS with Express and React (serverside)• RiotJS (clientside)• Golang (serverside)• React + Fluxible + nodeJS (universal)
All prototypes were deployed multiple times per day to Amazon Elastic Beanstalk