41
© 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

DevOps on AWS

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

The Amazon DevOps story

Monolith development lifecycle

developers

releasetestbuild

delivery pipelineapp

Service-Oriented

Architecture (SOA)

Single-purpose

Connected through APIs

Highly decoupled

“Microservices”

Two-pizza teams

Full ownership

Full accountability

Aligned incentives

“DevOps”

Missing tools

developers delivery pipelineservices

???

Self-service

Technology-agnostic

Encourage best

practices

Single-purpose services

Deployment service

No downtime

deployments

Health tracking

Versioned artifacts and

rollbacks

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

How can others do this?

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 Code Services

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

We have a strong partner list, and it’s growing

Source Build Test Deploy

HPE StormRunner

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

DevOps:road to loveable product

AWS Summit, Stockholm 4.5.2016Niilo Ursin / Alma Talent

@niiloursin

who am I ::

Niilo Ursin @niiloursin

CTO, Alma Talent OyJoined Alma Media/ Kauppalehti 2009Commercial web sites since 1998

@niiloursin

1996

website

1898

founded

2015

latest mobilesite

@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

DevOps ::

“gives capability to do rapid and experimental business safely”

@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 ::

Collaboration and Communication

@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

DevOps ::

Measure end user experience -> Visible metrics

@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

@niiloursin@niiloursin

be fast or be last.Niilo Ursin / Alma Talent @almadevelopers

Thank you!

Woody Borraccino, AWS Solutions Architect