grails & devops: continuous integration and delivery in the cloud

62
Benoit Hediard AgoraPulse Grails & DevOps CI & CD in the Cloud

Upload: gr8conf

Post on 17-May-2015

750 views

Category:

Technology


9 download

DESCRIPTION

Nowadays, companies require very short release cycles, especially in lean startup environments. But to release often: deployments should be routine, not terrifying. configuration should require a few clicks, not a thousand-line shell script. problems should be easy to spot, not buried in a log file. You are a developer that need to release every week or every day with a single git commit and zero-downtime? Easily spot release performance or bugs issues? If required, roll back to previous version in few seconds and one click? And you don't want to manage any dedicated repository, monitoring, build, staging, production servers? So this talk is for you! We will explore Lean startup and DevOps concepts and share our experience on how to create a simple and fully automated build pipeline for Grails apps with a live demo, based on SaaS/cloud services: GitHub, Travis CI, NewRelic, AWS (ElasticBeanstalk, CloudFront), etc.

TRANSCRIPT

Page 1: Grails & DevOps: continuous integration and delivery in the cloud

Benoit Hediard AgoraPulse

Grails & DevOps CI & CD in the Cloud

Page 2: Grails & DevOps: continuous integration and delivery in the cloud

RUNNING A LEAN STARTUP DEVOPS & GRAILS & AWS

Gr8Conf Europe 2014

agora pulse

2

Benoit Hediard @benorama

Page 3: Grails & DevOps: continuous integration and delivery in the cloud

LEAN STARTUP Part 1

3

DEPLOYMENT PIPELINE WITH GRAILS & AWS

Demo

DEVOPS CULTURE Part 2

#lean #custdev #startup

#agile #devops

#groovylang #grailsfw #aws

BUZZWORD BINGO

Page 4: Grails & DevOps: continuous integration and delivery in the cloud

About Me

4

A Social Media Management Platform for Brands

Benoit Hédiard Co-founder & CTO

Grails  Plugins  Author:  AWS  SDK,  Facebook  SDK,  CDN  Asset  Pipeline,  Coveralls,  Raven,  SegmentIO…  

Passionate about •  Lean/DevOps •  Cloud/AWS •  Java/Grails •  UX/UI •  Facebook/Twitter Platforms

@benorama

Page 5: Grails & DevOps: continuous integration and delivery in the cloud

Client Framework

Server Framework

Cloud provider

SaaS services

Our leanstack

5

Elastic Beanstalk

RDS & DynamoDB

SES & SQS

S3 & CloudFront

Route 53

Check http://leanstack.io !

Page 6: Grails & DevOps: continuous integration and delivery in the cloud

LEAN STARTUP Part 1

6

Page 7: Grails & DevOps: continuous integration and delivery in the cloud

What is a Lean Startup?

7

A Startup is a search for a repeatable and scalable business model.  The Customer Development process is the way startups quickly iterate and test each element of their business model. Agile Development is the way startups quickly iterate their product as they learn. A Lean Startup is Eric Ries’s description of the intersection of Customer Development, Agile Development and if available, open platforms and open source. – Steve Blank, author of The Startup Owner's Handbook

Page 8: Grails & DevOps: continuous integration and delivery in the cloud

Feedback Loop

8

Ideas  

BUILD  

Code  

MEASURE  

Data  

LEARN  

BUILD – MEASURE – LEARN The fundamental activity of a startup is to turn ideas into products, measure how customers respond, and then learn whether to pivot or persevere. All successful startup processes should be geared to accelerate that feedback loop. – Eric Ries, author of The Lean Startup

Page 9: Grails & DevOps: continuous integration and delivery in the cloud

Paul Graham’s Startup Curve

9

Minimum Viable Product Product Market Fit

TROUGH OF SORROW

J

L From search mode

Move fast, break things To execution mode

Grow fast, scale things

Scale Initial enthusiasm

Reality sets in

Experimenting & pivoting

Hockey stick

Starts working

Page 10: Grails & DevOps: continuous integration and delivery in the cloud

Minimum Viable Product

10

Page 11: Grails & DevOps: continuous integration and delivery in the cloud

Manual Pipeline

✔ Collaboration ✗ Manual Build ✗ Manual Testing

✗ Manual Delivery ✗ Manual Provisioning ✗ Manual Deployment ✗ Manual Monitoring

Demo – Part 1

11

Code   Build   Test   Release   Deploy   Monitor  

Code repo Team communication

Agile Project Management

EC2

Hosting

Idea Customer

Page 12: Grails & DevOps: continuous integration and delivery in the cloud

Semi-automated Pipeline

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✗ Manual Provisioning ✗ Manual Deployment ✗ Manual Monitoring

Demo – Part 2

12

Code   Build   Test   Release   Deploy   Monitor  

Continuous integration and delivery

Idea Customer

Test coverage history & stats

Coveralls Plugin

Page 13: Grails & DevOps: continuous integration and delivery in the cloud

DEVOPS CULTURE Part 2

13

Page 14: Grails & DevOps: continuous integration and delivery in the cloud

What is DevOps?

14

DevOps is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) operations professionals.

✔ Collaboration

✔ Automation & Infrastructure as Code ✔ Continuous Integration / Testing ✔ Continuous Delivery / Deployment ✔ Continuous Monitoring

GOALS: reduce friction and increase velocity

Page 15: Grails & DevOps: continuous integration and delivery in the cloud

Pre-2000’s Developer…

15

The Game of Thrones era Developers

Page 16: Grails & DevOps: continuous integration and delivery in the cloud

Requirements  

Design  

Development  

Test  

Release  

Maintenance  

Pre-2000’s Waterfall Development

16

Dev  

Test  /  QA  

Ops  

Business  

Idea

Customer

Silo

Silo

Silo

Friction

Friction

Friction

Cycle time: Months or Years

Page 17: Grails & DevOps: continuous integration and delivery in the cloud

2000’s Developer…

17

The Rocky Balboa era

Ops Dev

Page 18: Grails & DevOps: continuous integration and delivery in the cloud

2000’s Iterative Agile Development

18

Develop  

Test  Release  

Design  

Dev  

Ops  

Business  

Idea

Customer

Cycle time: Weeks

or Months

Stability

Change

Page 19: Grails & DevOps: continuous integration and delivery in the cloud

2010’s Developer…

19

The X-Men era Business Dev Ops

One team approach

Page 20: Grails & DevOps: continuous integration and delivery in the cloud

2010’s Lean & DevOps

20

Develop  

Test  Release  

Design  

Dev  

Ops  

Business  

Idea

Customer

Cycle time: Hours

or Days DevOps

Page 21: Grails & DevOps: continuous integration and delivery in the cloud

Automated Pipeline Demo – Part 3

21

Code   Build   Test   Release   Deploy   Monitor  

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✔ Automated Provisioning ✔ Automated Deployment ✗ Manual Monitoring

Elastic Beanstalk

S3 & CloudFront

RDS

PaaS CDN DB

Managed Services

Idea Customer

Elastic Beanstalk Plugin CDN Asset Pipeline Plugin

Page 22: Grails & DevOps: continuous integration and delivery in the cloud

Git Branching Model

22

develop beta master (PROD)

Snapshot merge deploy  Elastic

Beanstalk BETA

feature

Feature merge

test  

test  

test  

Snapshot merge Release merge Version upgrade deploy  

Elastic Beanstalk

PROD

test  

test  

test  

test  

test  

test  

test  

Page 23: Grails & DevOps: continuous integration and delivery in the cloud

Cultural shift

23

Developers must own application-layer code wherever it lives, while ops must own the infrastructure wherever that is. – Donnie Berkholz, analyst at RedMonk

Dev/Test Production

Dev   Ops  ApplicaMons   ApplicaMons  

Infrastructure   Infrastructure  

Dev/Test Production  

Dev   ApplicaMons   ApplicaMons  

Ops   Infrastructure   Infrastructure  

Responsability

Responsability

Confuse of Dev or Ops? Simple rule: if you are praise for Web site success, you are Dev; if you are blame when Web site down, you are Ops – DevOps Borat

Cultural shift

Page 24: Grails & DevOps: continuous integration and delivery in the cloud

IT Automation + IaaS Enterprise DevOps

24

3. Deploy your App

1. Describe your “Infrastructure as Code”

2. Build and manage your “Automated Infrastructure”

PROs Portability

Control Flexibility

CONs Complexity

Maintenance Amazon

EC2

Google Compute Engine

IaaS (Infrastructure as a Service)

Configuration Management Tools

Portable Containers

Page 25: Grails & DevOps: continuous integration and delivery in the cloud

Lean DevOps / NoOps

25

PaaS + SaaS 1. Deploy your App and use Managed Services

Cloud SQL Amazon RDS

Relational DB

Cloud Datastore DynamoDB

NoSQL

Cloud Storage Amazon S3

Storage

+ Cloud EndPoints + Elasticache, AppStream, SWF, SQS, SES, FPS, Elastic Transcoder…

Amazon RedShift

Big Data BigQuery

Google App Engine

PaaS (Platform as a Service)

Cloud DNS

Elastic Beanstalk

PaaS (Platform as a Service)

Amazon Route 53

PROs Focus on building applications instead of managing Infrastructure

Page 26: Grails & DevOps: continuous integration and delivery in the cloud

Automated Pipeline Demo – Part 4

26

Code   Build   Test   Release   Deploy   Monitor  

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✔ Automated Provisioning ✔ Automated Deployment ✔ Continuous Monitoring

Application and server monitoring

Business monitoring

Exception monitoring

Idea Customer

Sentry Plugin NewRelic Plugin SegmentIO Plugin

Page 27: Grails & DevOps: continuous integration and delivery in the cloud

Demo – Part 5

27

Zero Downtime Deployment (blue/green)

Page 28: Grails & DevOps: continuous integration and delivery in the cloud

40 minutes ago…

28

MVP running on locale dev machine (manual build pipeline)

Page 29: Grails & DevOps: continuous integration and delivery in the cloud

2 Travis files & few Grails Plugins later…

29

“Unlimited” Horizontal Auto-Scaling (hundred of web servers)

Push-Button Scalable Database with Multi-AZ (up to 32vCPU and 244Go of RAM)

100% Resilient (no single point of failure)

Deployment in < 10 minutes (deployment pipeline)

100% Cloud-based (fully managed/no SSH)

Page 30: Grails & DevOps: continuous integration and delivery in the cloud

CONCLUSION

30

Page 31: Grails & DevOps: continuous integration and delivery in the cloud

Conclusion

31

Such an exciting time to be a developer AND an entrepreneur today…

Embrace Lean Embrace DevOps

Become an entrepreneur!

#lean #custdev

#agile #devops

#groovylang #grailsfw #aws

#PaaS #SaaS

Page 32: Grails & DevOps: continuous integration and delivery in the cloud

LEAN STARTUP Part 1

32

DEPLOYMENT PIPELINE WITH GRAILS & AWS

Demo

DEVOPS CULTURE Part 2

#lean #custdev #startup

#agile #devops

#groovylang #grailsfw #aws

BUZZWORD BINGO

Page 33: Grails & DevOps: continuous integration and delivery in the cloud

About Me

33

A Social Media Management Platform for Brands

Benoit Hédiard Co-founder & CTO

Grails  Plugins  Author:  AWS  SDK,  Facebook  SDK,  CDN  Asset  Pipeline,  Coveralls,  Sentry,  SegmentIO…  

Passionate about •  Lean/DevOps •  Cloud/AWS •  Java/Grails •  UX/UI •  Facebook/Twitter Platforms

@benorama

Page 34: Grails & DevOps: continuous integration and delivery in the cloud

Client Framework

Server Framework

Cloud provider

SaaS services

Our leanstack

34

Elastic Beanstalk

RDS & DynamoDB

SES & SQS

S3 & CloudFront

Route 53

Check out http://leanstack.io !

Page 35: Grails & DevOps: continuous integration and delivery in the cloud

LEAN STARTUP Part 1

35

Page 36: Grails & DevOps: continuous integration and delivery in the cloud

What is a Lean Startup?

36

A Startup is a search for a repeatable and scalable business model.  The Customer Development process is the way startups quickly iterate and test each element of their business model. Agile Development is the way startups quickly iterate their product as they learn. A Lean Startup is Eric Ries’s description of the intersection of Customer Development, Agile Development and if available, open platforms and open source. – Steve Blank, author of The Startup Owner's Manual

Page 37: Grails & DevOps: continuous integration and delivery in the cloud

Iridium woes (Fail fast)

•  Conceived in 1987 by Motorala •  Bought a fleet of 15 rockets from Russia,

the U.S. and China •  Built and launch 72 satellites •  Nine months after the first call was made

in 1998, Iridium was in Chapter 11 bankruptcy.

37

5.2 billion dollar business plan mistake

No Business Plan Survives First Contact With A Customer – Steve Blank, author of The Startup Owner's Handbook

Page 38: Grails & DevOps: continuous integration and delivery in the cloud

Feedback Loop

38

Ideas  

BUILD  

Code  

MEASURE  

Data  

LEARN  

BUILD – MEASURE – LEARN The fundamental activity of a startup is to turn ideas into products, measure how customers respond, and then learn whether to pivot or persevere. All successful startup processes should be geared to accelerate that feedback loop. – Eric Ries, author of The Lean Startup

Page 39: Grails & DevOps: continuous integration and delivery in the cloud

Paul Graham’s Startup Curve

39

Minimum Viable Product Product Market Fit

TROUGH OF SORROW

J

L From search mode

Move fast, break things To execution mode

Grow fast, scale things

Scale Initial enthusiasm

Reality sets in

Experimenting & pivoting

Hockey stick

Starts working

Page 40: Grails & DevOps: continuous integration and delivery in the cloud

Minimum Viable Product

40

Page 41: Grails & DevOps: continuous integration and delivery in the cloud

Manual Pipeline

✔ Collaboration ✗ Manual Build ✗ Manual Testing

✗ Manual Delivery ✗ Manual Provisioning ✗ Manual Deployment ✗ Manual Monitoring

Demo – Part 1

41

Code   Build   Test   Release   Deploy   Monitor  

Code repo Team communication

Agile Project Management

EC2

Hosting

Idea Customer

Page 42: Grails & DevOps: continuous integration and delivery in the cloud

Semi-automated Pipeline

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✗ Manual Provisioning ✗ Manual Deployment ✗ Manual Monitoring

Demo – Part 2

42

Code   Build   Test   Release   Deploy   Monitor  

Continuous integration and delivery

Idea Customer

Test coverage history & stats

Coveralls Plugin

Page 43: Grails & DevOps: continuous integration and delivery in the cloud

DEVOPS CULTURE Part 2

43

Page 44: Grails & DevOps: continuous integration and delivery in the cloud

What is DevOps?

44

DevOps is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) operations professionals.

✔ Collaboration

✔ Automation & Infrastructure as Code ✔ Continuous Integration / Testing ✔ Continuous Delivery / Deployment ✔ Continuous Monitoring

GOALS: reduce friction and increase velocity

Page 45: Grails & DevOps: continuous integration and delivery in the cloud

Pre-2000’s Developer…

45

The Game of Thrones era Developers

Page 46: Grails & DevOps: continuous integration and delivery in the cloud

Requirements  

Design  

Development  

Test  

Release  

Maintenance  

Pre-2000’s Waterfall Development

46

Dev  

Test  /  QA  

Ops  

Business  

Idea

Customer

Silo

Silo

Silo

Friction

Friction

Friction

Cycle time: Months or Years

Page 47: Grails & DevOps: continuous integration and delivery in the cloud

2000’s Developer…

47

The Rocky Balboa era

Ops Dev

Page 48: Grails & DevOps: continuous integration and delivery in the cloud

2000’s Iterative Agile Development

48

Develop  

Test  Release  

Design  

Dev  

Ops  

Business  

Idea

Customer

Cycle time: Weeks

or Months

Stability

Change

Agile

Page 49: Grails & DevOps: continuous integration and delivery in the cloud

2010’s Developer…

49

The X-Men era Business Dev Ops

One team approach

Page 50: Grails & DevOps: continuous integration and delivery in the cloud

2010’s Lean & DevOps

50

Develop  

Test  Release  

Design  

Dev  

Ops  

Business  

Idea

Customer

Cycle time: Hours

or Days DevOps

Lean

Page 51: Grails & DevOps: continuous integration and delivery in the cloud

Automated Pipeline Demo – Part 3

51

Code   Build   Test   Release   Deploy   Monitor  

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✔ Automated Provisioning ✔ Automated Deployment ✗ Manual Monitoring

Elastic Beanstalk

S3 & CloudFront

RDS

PaaS CDN DB

Managed Services

Idea Customer

Elastic Beanstalk Plugin CDN Asset Pipeline Plugin

Page 52: Grails & DevOps: continuous integration and delivery in the cloud

Git Branching Model

52

develop beta master (PROD)

Snapshot merge deploy  Elastic

Beanstalk BETA

feature

Feature merge

test  

test  

test  

Snapshot merge Release merge Version upgrade deploy  

Elastic Beanstalk

PROD

test  

test  

test  

test  

test  

test  

test  

Page 53: Grails & DevOps: continuous integration and delivery in the cloud

Cultural shift

53

Developers must own application-layer code wherever it lives, while ops must own the infrastructure wherever that is. – Donnie Berkholz, analyst at RedMonk

Dev/Test Production

Dev   Ops  ApplicaMons   ApplicaMons  

Infrastructure   Infrastructure  

Dev/Test Production  

Dev   ApplicaMons   ApplicaMons  

Ops   Infrastructure   Infrastructure  

Responsability

Responsability

Confuse of Dev or Ops? Simple rule: if you are praise for Web site success, you are Dev; if you are blame when Web site down, you are Ops – DevOps Borat

Cultural shift

Page 54: Grails & DevOps: continuous integration and delivery in the cloud

IT Automation + IaaS Enterprise DevOps

54

3. Deploy your App

1. Describe your “Infrastructure as Code”

2. Build and manage your “Automated Infrastructure”

PROs Portability

Control Flexibility

CONs Complexity

Maintenance Amazon

EC2

Google Compute Engine

IaaS (Infrastructure as a Service)

Configuration Management Tools

Portable Containers

Page 55: Grails & DevOps: continuous integration and delivery in the cloud

Lean DevOps / NoOps

55

PaaS + SaaS 1. Deploy your App and use Managed Services

Cloud SQL Amazon RDS

Relational DB

Cloud Datastore DynamoDB

NoSQL

Cloud Storage Amazon S3

Storage

+ Cloud EndPoints + Elasticache, AppStream, SWF, SQS, SES, FPS, Elastic Transcoder…

Amazon RedShift

Big Data BigQuery

Google App Engine

PaaS (Platform as a Service)

Cloud DNS

Elastic Beanstalk

PaaS (Platform as a Service)

Amazon Route 53

PROs Focus on building applications instead of managing Infrastructure

Page 56: Grails & DevOps: continuous integration and delivery in the cloud

Automated Pipeline Demo – Part 4

56

Code   Build   Test   Release   Deploy   Monitor  

✔ Collaboration ✔ Continuous Build ✔ Continuous Testing

✔ Continuous Delivery ✔ Automated Provisioning ✔ Automated Deployment ✔ Continuous Monitoring

Application and server monitoring

Business monitoring

Exception monitoring

Idea Customer

Sentry Plugin NewRelic Plugin SegmentIO Plugin

Page 57: Grails & DevOps: continuous integration and delivery in the cloud

Demo – Part 5

57

Zero Downtime Deployment (blue/green)

Page 58: Grails & DevOps: continuous integration and delivery in the cloud

40 minutes ago…

58

MVP running on locale dev machine (manual build pipeline)

Page 59: Grails & DevOps: continuous integration and delivery in the cloud

2 Travis files & few Grails Plugins later…

59

“Unlimited” Horizontal Auto-Scaling (hundred of web servers)

Push-Button Scalable Database with Multi-AZ (up to 32vCPU and 244Go of RAM)

100% Resilient (no single point of failure)

Deployment in < 10 minutes (deployment pipeline)

100% Cloud-based (fully managed/no SSH)

Page 60: Grails & DevOps: continuous integration and delivery in the cloud

CONCLUSION

60

Page 61: Grails & DevOps: continuous integration and delivery in the cloud

Conclusion

61

Such an exciting time to be a developer AND an entrepreneur today…

Embrace Lean Embrace DevOps

Become an entrepreneur!

#lean #custdev

#agile #devops

#groovylang #grailsfw #aws

#PaaS #SaaS

Page 62: Grails & DevOps: continuous integration and delivery in the cloud

Reading recommendations

62