Continuous evolution - iterating to a continuous delivery platform

41
www.immobilienscout24.de www.immobilienscout24.de Berlin | 25.04.2012 | Ingmar Krusch, DevOps believer Continuous Evolution Iterating to a Continuous Delivery Platform

description

@IngmarKrusch describes how the journey to continuous delivery looks like for ImmobilienScout24. He shows the evolutionary steps that were taken, both on the technical side, as well as on the cultural side. The talk was given at http://berlindevops.org/2012/03/22/109/

Transcript of Continuous evolution - iterating to a continuous delivery platform

Page 1: Continuous evolution - iterating to a continuous delivery platform

www.immobilienscout24.de

www.immobilienscout24.de

Berlin | 25.04.2012 | Ingmar Krusch, DevOps believer

Continuous Evolution Iterating to a Continuous Delivery Platform

Page 2: Continuous evolution - iterating to a continuous delivery platform

| Things we learned while scaling DevOps | Ingmar Krusch, André von Deetzen Seite 2

Page 3: Continuous evolution - iterating to a continuous delivery platform

Continuous Delivery

at ImmobilienScout24

| Continuous Evolution | @IngmarKrusch Seite 3

Page 4: Continuous evolution - iterating to a continuous delivery platform

When we started

running at capacity in

ops and above

| Continuous Evolution | @IngmarKrusch Seite 4

Page 5: Continuous evolution - iterating to a continuous delivery platform

historically grown

infrastructure

and code

| Continuous Evolution | @IngmarKrusch Seite 5

Page 6: Continuous evolution - iterating to a continuous delivery platform

Got root?

No!

Wait, what?!

| Continuous Evolution | @IngmarKrusch Seite 6

Page 7: Continuous evolution - iterating to a continuous delivery platform

we knew we had to

fundamentally change

| Continuous Evolution | @IngmarKrusch Seite 7

Page 8: Continuous evolution - iterating to a continuous delivery platform

even without everyone

pushing us

| Continuous Evolution | @IngmarKrusch Seite 8

Page 9: Continuous evolution - iterating to a continuous delivery platform

ground changing

beneath us

| Continuous Evolution | @IngmarKrusch Seite 9

Page 10: Continuous evolution - iterating to a continuous delivery platform

old and complicated

build- and deployment

infrastructure

| Continuous Evolution | @IngmarKrusch Seite 10

Page 11: Continuous evolution - iterating to a continuous delivery platform

Our dilemma

we were devided

amongst ourselves

| Continuous Evolution | @IngmarKrusch Seite 11

Page 12: Continuous evolution - iterating to a continuous delivery platform

taking

evolutionary steps

| Continuous Evolution | @IngmarKrusch Seite 12

Page 13: Continuous evolution - iterating to a continuous delivery platform

Old world

Iteration zero

| Continuous Evolution | @IngmarKrusch Seite 13

Page 14: Continuous evolution - iterating to a continuous delivery platform

old world

| Continuous Evolution | @IngmarKrusch Seite 14

some

config

config

share

build &

release

47.0.1

48.2.1

devapp01

deploy

tool

Page 15: Continuous evolution - iterating to a continuous delivery platform

Iteration one

| Continuous Evolution | @IngmarKrusch Seite 15

Page 16: Continuous evolution - iterating to a continuous delivery platform

old world

| Continuous Evolution | @IngmarKrusch Seite 16

some

config

config

share

build &

release

47.0.1

48.2.1

devapp01

deploy

tool

-> first iterration

Page 17: Continuous evolution - iterating to a continuous delivery platform

1st iteration – RPM tech demo

| Continuous Evolution | @IngmarKrusch Seite 17

config

SVN

svn ci

devapp01

converter

script

post

commit

hook

build &

release

47.0.1

48.2.1

global

YUM

config

viewer

yum

install

Page 18: Continuous evolution - iterating to a continuous delivery platform

Config RPMs intermezzo

| Continuous Evolution | @IngmarKrusch Seite 18

application

tomcat

config

SVN

models the

landscape

generates one

RPM

for each host

post

commit

hook

is24-conf-devapp01

Page 19: Continuous evolution - iterating to a continuous delivery platform

Iteration two

| Continuous Evolution | @IngmarKrusch Seite 19

Page 20: Continuous evolution - iterating to a continuous delivery platform

2nd iteration – RPM POC

| Continuous Evolution | @IngmarKrusch Seite 20

config

SVN

svn ci

devapp01

converter

script

post

commit

hook

build &

release

47.0.1

48.2.1

global

YUM

config

viewer

yum

install

Page 21: Continuous evolution - iterating to a continuous delivery platform

| Continuous Evolution | @IngmarKrusch Seite 21

Taking a RPMized app live

Tomcat / solr

DB

internet

LB

Frontend

Backend

http

Page 22: Continuous evolution - iterating to a continuous delivery platform

RPMize the maschines

the solr app runs on

| Continuous Evolution | @IngmarKrusch Seite 22

devapp01

Page 23: Continuous evolution - iterating to a continuous delivery platform

2nd iteration – RPM POC

| Continuous Evolution | @IngmarKrusch Seite 23

config

SVN

svn ci

post

commit

hook

global

YUM

config

viewer

devsol01 tuvsol01 bersol01 hamsol01

Cron:

sudo yum upgrade -y

TeamCity

Page 24: Continuous evolution - iterating to a continuous delivery platform

Iteration three

| Continuous Evolution | @IngmarKrusch Seite 24

Page 25: Continuous evolution - iterating to a continuous delivery platform

3rd iteration: Combining two POCs

| Continuous Evolution | @IngmarKrusch Seite 25

config

SVN

svn ci

post

commit

hook

global

YUM

config

viewer

devsol01 tuvsol01 bersol01 hamsol01

Cron:

sudo yum upgrade -y

TeamCity

Page 26: Continuous evolution - iterating to a continuous delivery platform

Map and reduce YADT

| Continuous Evolution | @IngmarKrusch Seite 26

some

config

config

share

build &

release

47.0.1

48.2.1

YADT

rsync

config 1 artefact 1

tomcat / solr

service

UDT

devapp01

start & stop

services

Page 27: Continuous evolution - iterating to a continuous delivery platform

First complete solution

| Continuous Evolution | @IngmarKrusch Seite 27

config

SVN

svn ci

post

commit

hook

global

YUM

config

viewer

devsol01 tuvsol01 bersol01 hamsol01

TeamCity

tomcat / solr

service

UDT

YADT

start

stop

status

Page 28: Continuous evolution - iterating to a continuous delivery platform

integrating with our

datacenter partner

| Continuous Evolution | @IngmarKrusch Seite 28

Page 29: Continuous evolution - iterating to a continuous delivery platform

http://code.google.com/p/yadt

YADT controls the

whole datacenter

| Continuous Evolution | @IngmarKrusch Seite 29

Page 30: Continuous evolution - iterating to a continuous delivery platform

http://code.google.com/p/yadt

Open Sourcing YADT

was a great idea!

| Continuous Evolution | @IngmarKrusch Seite 30

Page 31: Continuous evolution - iterating to a continuous delivery platform

Splitting up legacy

applications is HARD!

| Continuous Evolution | @IngmarKrusch Seite 31

Page 32: Continuous evolution - iterating to a continuous delivery platform

Iteration four

| Continuous Evolution | @IngmarKrusch Seite 32

Page 33: Continuous evolution - iterating to a continuous delivery platform

Iteration four – Package Promotion

The maven release

process is crap!

| Continuous Evolution | @IngmarKrusch Seite 33

TeamCity

global

YUM

Page 34: Continuous evolution - iterating to a continuous delivery platform

Package Promotion Pipeline

| Continuous Evolution | @IngmarKrusch Seite 34

devsol01 tuvsol01

bersol01

hamsol01

global

YUM

TUV

YUM

DEV

YUM

TeamCity

promote promote

Page 35: Continuous evolution - iterating to a continuous delivery platform

Untold stories (so little time :)

Nexus

as YUM Repository

| Continuous Evolution | @IngmarKrusch Seite 35

Page 36: Continuous evolution - iterating to a continuous delivery platform

But it‘s Open Source

code.google.com/p/

nexus-yum-plugin

| Continuous Evolution | @IngmarKrusch Seite 36

Page 37: Continuous evolution - iterating to a continuous delivery platform

the journey continues…

| Continuous Evolution | @IngmarKrusch Seite 37

Page 38: Continuous evolution - iterating to a continuous delivery platform

dedicated vs. shared

infrastructure

| Continuous Evolution | @IngmarKrusch Seite 38

Page 39: Continuous evolution - iterating to a continuous delivery platform

integrate better with

the linux distro

| Continuous Evolution | @IngmarKrusch Seite 39

Page 40: Continuous evolution - iterating to a continuous delivery platform

Finally

changing our culture

| Continuous Evolution | @IngmarKrusch Seite 40

Page 41: Continuous evolution - iterating to a continuous delivery platform

www.immobilienscout24.de

Contact: ImmobilienScout24 Andreasstraße 10 10243 Berlin

Let‘s discuss!!!

Google+: http://bit.ly/ingmar Twitter: @IngmarKrusch URL: www.immobilienscout24.de