using paas to iterate on devops colin humphreys @hatofmonkeys [email protected]...

63
Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys [email protected] blog.hatofmonkeys.com

Upload: others

Post on 29-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Using PaaS to Iterate on DevOps

Colin Humphreys

@[email protected]

Page 2: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 3: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 4: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 5: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 6: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 7: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 8: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 9: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 10: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 11: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 12: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

The thing that runs your applications.

Page 13: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

You've been making them for years!

Page 14: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Not magical.Not terrifying.What we do.

Page 15: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Extension of the principles of IaC:Servers are ephemeralServices are permanent

Change the focus to the services:Shift to PaaS

Page 16: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Does PaaS mean I don't need an operations team?

Page 17: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

No-ops?

Page 18: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

No-devs?

Page 19: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

No-thing?

Page 20: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Only do things that make you money

Page 21: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 22: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Culture:it's all about validating knowledge

Get meaningful feedback fast about your app/service

Stop wasting time - MTTV

Page 23: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Fast feedback

Get the MVP out and iterate

Page 24: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 25: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Get your pipeline deploying early!

Borrow someone else's platform until you need your own

Page 26: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 27: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

PaaS takes you a long way with little effort(I AM VERYVERY LAZY)

Get the goodness without the work

Page 28: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Continuous Delivery

● Blue-green deployments

● Self-service deployments

● Automate provisioning● Production-like

environments● Quick walking skeleton

Page 29: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

●http://www.12factor.net/●Stateless processes●Port binding●Scale out via processes●Disposability●Dev-prod parity

The Twelve-Factor App

Page 30: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 31: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Open vs Closed

Page 32: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Why restrict your future capabilities with a closed-source

PaaS?

Page 33: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 34: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Don't use Heroku!

(Although it's great)●Devs need to get things done quickly

They grab a credit card => Heroku!

●Don't block them, enable them!●Deploy to Appfog/Openshift etc.●Move to a local/customised PaaS later

Page 35: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Compliance/security/performance/functionality

Be able to take control!

Page 36: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Culture - don't be a barrier:be an enabler

Provide, customise, and iterate a platform for your services

Open PaaS is like a Rails scaffold for platforms:

get it out quick, customise later

Page 37: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 38: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Cloud Foundry

● Pivotal (VMWare)● Heroku compatible

buildpacks● Java, Ruby, Node● MySQL, Postgres,

Redis, MongoDB etc● CF gem deployments

Page 39: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Cloud Foundry Reality

● Ruby + Go + Java● Containers (warden)● Most mature open PaaS● Excellent, but complex architecture● Some interesting(!) ruby, getting better● BOSH is the future

Page 40: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

OpenShift

● RedHat● Java, Ruby, Node,

Python, PHP and more

● MySQL, Postgres, MongoDB

● Deployment via Git

Page 41: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

● Ruby + bash● Containers (docker/lxc)● MCollective firing scripts● Immature compared to CF● Easier to learn than CF● Very easy to add simple services● Shows RedHat legacy

OpenShift Reality

Page 42: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 43: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Event-sourced,eventually consistent,financial application.

Pipeline of microapps.

Page 44: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Had a PoC deployed to CF.com on first day

Fast, meaningful feedback

Page 45: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Tools used to customise our PaaSes

● Jenkins● Chef● BOSH● Cucumber● Vagrant

Page 46: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Monitoring sux

● CF dashboard● Graphite/Statsd● Logstash/Kibana for

app logs● Graylog2 for CF/OS

logs● Nagios for alerting

Page 47: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Performance tuning:it's just like a normal platform!

Page 48: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Add data components as required

Started with Redis,then MongoDB,

then PostgreSQL

Page 49: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 50: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

6 people5 months

Feedback from day 1Continuous value

First time with no downtime£75 million taken in 6 hours

Page 51: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 52: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Cloud Foundry Deployment - BOSH

E, [2012­08­31T11:52:38.553423 #16523]

[task:97] ERROR ­­ :

can't use multiple availability zones:

eu­west­1a, eu­west­1a

WAT

Page 53: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

hato@tosh ~/vcs/presentation $ rhc domain show ­l...Application Info================presentation    Framework: ruby­1.9      Git URL: ssh://ba0674d1fd392f8281b9186cf86986dc@presentatissh://ba0674d1fd392f8281b9186cf86986dc@presentation.rhcloud.comon.rhcloud.com/~/git/presentation.git/ Embedded:      mysql­5.1 ­ Connection URL: mysql://127.8.96.129:3306/      mongodb­2.0 ­ Connection URL: mongodb://127.8.96.129:27017/

SSH? PaaS or IaaS?

OpenShift Operations

Page 54: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate
Page 55: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

A challenge!Scientific method:

let's acquire some knowledgeas a community

Page 56: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Hypothesis:going from nothing to a deployed “Hello World” application will take less time using a PaaS than your

current IaC solution

Page 57: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

●Set up an account with one of:run.pivotal.ioanynines.comopenshift.com

●Have a quick play to familiarise yourself with their client tools●Time how long it takes to deploy your “Hello World” app

Test:

Page 58: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

eg. run.pivotal.iocf logincf push

<answer questions>

Page 59: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Now try the same thing with your IaC solution

Page 60: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

eg. ChefCreate basic networking in IaaS provider

Use knife to bootstrap nodesConverge the nodes

Add additional IaaS networkingPoint some DNS at something

Page 61: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Analysis:Send me your MTTV!

@[email protected]

I will aggregate the results and publish

Page 62: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Summary:test if PaaS works for youyou

Page 63: Using PaaS to Iterate on DevOps Colin Humphreys @hatofmonkeys colin@hatofmonkeys.com ...gotocon.com/dl/goto-berlin-2013/slides/ColinHumphreys... · 2013-10-21 · Using PaaS to Iterate

Thank you

@[email protected]

Please talk to me!