28
14.03.12 DEVOPS PROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON? Jean-Pierre König @jpkoenig

DevOps - Programmierst Du noch oder betreibst Du schon?

Embed Size (px)

DESCRIPTION

Seit der Jahrtausendwende ist in der Softwareentwicklung einiges in Bewegung geraten. Es dürfte heute kaum ein Unternehmen geben, das nicht mindestens agile Elemente in seinen Entwicklungsprozess integriert hat. Meist mit dem Ziel, das Risiko zu minimieren Software an den Anforderungen vorbei zu entwickeln und schlussendlich Kosten bei der Entwicklung zu sparen. Aber wie lässt sich agile Softwareentwicklung in den Betrieb integrieren? Wie läuft das bisher?Welche Probleme gibt es dabei und wie kann man diese lösen?Im Vortrag wird anhand praktischer Erfahrung darauf eingegangen, wie agile Softwareentwicklung durch Continuous Deployment und Continuous Delivery das Betriebsumfeld innovieren kann.

Citation preview

Page 1: DevOps - Programmierst Du noch oder betreibst Du schon?

14.03.12

DEVOPSPROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON?

Jean-Pierre König @jpkoenig

Page 2: DevOps - Programmierst Du noch oder betreibst Du schon?

Agenda

• Status Quo – „Wall of Confusion“• Agile Movement, Software Entwicklung • DevOps• DevOps @memonews

14.03.12

2

Page 3: DevOps - Programmierst Du noch oder betreibst Du schon?

About me

Jean-Pierre KönigHead of Technology,

MeMo News AGDipl. Informatiker

Tags: Agile, BigData, Hadoop

14.03.12

Page 4: DevOps - Programmierst Du noch oder betreibst Du schon?

WALL OF CONFUSIONStatus Quo

Page 5: DevOps - Programmierst Du noch oder betreibst Du schon?

• Softwareentwicklung & Systembetrieb organisatorisch klar getrennt

• Auslagerung von Organisationseinheiten in andere Unternehmen

IT Welt

14.03.12

OutsourcingBAR Corp.

Software BetriebFinanzen VerkaufPersonal

FOO Inc.

... ...

Betrieb

Page 6: DevOps - Programmierst Du noch oder betreibst Du schon?

Gründe

• Skaleneffekt beim Konsolidieren des Systembetriebs nutzen• Personalbedarf im Betrieb steigt nicht zwangsläufig

proportional zur Anzahl der zu betreuenden SystemeBetrieb mehrerer Systeme bündeln und an ausgewiesene Organisationseinheiten übergeben ist wirtschaftlich vorteilhaft

• Betriebs- und Administrationsaufgaben erfordern anderes Mitarbeiterprofil

14.03.12

Page 7: DevOps - Programmierst Du noch oder betreibst Du schon?

Ergebnis

• Etablierte „Schnittstelledefinition“ zwischen beiden Welten – Wall of Confusion• Wie überführt man Software in den Betrieb?• Wie kann man sicherstellen, dass der Betreib

den Anforderungen der Stakeholder gerecht wird?

• ...• Prozesse, Metriken, SLA‘s, Regelungen, ...

14.03.12

Die IT Infrastructure Library (ITIL) ist eine Sammlung von Best Practices bzw. Good Practices in einer Reihe von Publikationen, die eine mögliche Umsetzung eines IT-Service-Managements (ITSM) beschreiben und inzwischen international als De-facto-Standard hierfür gelten.Quelle: http://de.wikipedia.org/wiki/IT_Infrastructure_Library

Page 8: DevOps - Programmierst Du noch oder betreibst Du schon?

• automatisiert • formal

14.03.12

Ergebnis (2)

I want change!

I want stability!

Dev Ops

Allenfalls eine funktionale Zusammenarbeit, aber wenig effizient bzw. effektiv.

Page 9: DevOps - Programmierst Du noch oder betreibst Du schon?

ZEIT FÜR VERÄNDERUNGDevs

Page 10: DevOps - Programmierst Du noch oder betreibst Du schon?

Warum?

Bis zur Jahrtausendwende - klassische SoftwareEntwicklungsmethoden etabliert

Nachteilig:• Plangetrieben• Vollständige Erfassung aller Anforderungen nur

mit immensem Aufwand möglich• „Keine“ Flexibilität bei geschäftlicher,

gesetzlicher oder technischer Veränderung• ...

Page 11: DevOps - Programmierst Du noch oder betreibst Du schon?

Releasezyklus

Releasezyklus

Klassisch

14.03.12

Initialisierung

Analyse

Entwurf

Realisierung

Einführung

Nutzung

ZeitDev Ops...

+ Anwender

zentraleQA

zentraleQA

zentraleQA

zentraleQA

zentraleQA

Ops

Time to Release

Page 12: DevOps - Programmierst Du noch oder betreibst Du schon?

Agile, Agile, Agile

Seit ca. 2003 Kanban & Scrum im AufwandZiele:

• Risiko minimieren, an Anforderungen vorbei zu entwickeln

• Entwicklungskosten einsparen, Time-To-MarketVoraussetzungen:

• Besseres Zusammenspiel zwischen Entwicklern und Nutzern, Anwender einbinden

• Kürzere Entwicklungszyklen

14.03.12

Page 13: DevOps - Programmierst Du noch oder betreibst Du schon?

Analyse & Design

Implementierung

Test & Demo

Analyse & Design

Implementierung

Test & Demo

Analyse & Design

Implementierung

Test & Demo

Releasezyklus

Releasezyklus

Agile/Iterativ

14.03.12

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

Zeit

Scrum Team (Dev) Ops+ Anwender

zentraleQA

zentraleQA

Ops

Time to Release + (Proxy-) Anwender

Sprint 1 2 3 4 ... n

Analyse & Design

Implementierung

Test & Demo

„Agilisierter Wasserfall“

Page 14: DevOps - Programmierst Du noch oder betreibst Du schon?

DEVOPSDie Lösung

Page 15: DevOps - Programmierst Du noch oder betreibst Du schon?

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

Releasezyklus

Releasezyklus

DevOps

14.03.12

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

ZeitDelivery Team

Time to Release

+ (Proxy-) Anwender

Sprint 1 2 3 4 ... n

Auch: Continuous Delivery, Continuous Deployment

Releasezyklus

Releasezyklus

Releasezyklus

Analyse & Design

Implementierung

Test & Demo

Einführung

Nutzung

Page 16: DevOps - Programmierst Du noch oder betreibst Du schon?

DevOps steht für ...

• Engere Verbindung von Entwicklungsabteilung und Systembetrieb unter Zuhilfenahme agiler Praktiken• Entsprechende Kultur im Umgang miteinander

• Werkzeuge, mit denen sich Betriebsaufgaben automatisieren lassen• Zunahme der Häufigkeit von Änderungen bei

gleichzeitiger Risikominimierung

14.03.12

Page 17: DevOps - Programmierst Du noch oder betreibst Du schon?

DevOps

... is emerging set of principles, methodsand practices forcommunication, collaboration and integration between...[wikipedia]

14.03.12

Patrick Debois prägte den Begriff 2009 erstmalig auf der devopsdays.org Konferenz

TechnologyOperations

DevOps

Page 18: DevOps - Programmierst Du noch oder betreibst Du schon?

Funktionierts?

• Google (2010): > 20‘000 Experimente führten zu mehr als 500 Updates verschiedener Algorithmen – fast 2 mal täglich

• Wordpress (2005-2010): > 25‘000 Releases – ca. 16 pro Tag

• Etsy, (2010): > 25 Releases/Tag

14.03.12

Page 19: DevOps - Programmierst Du noch oder betreibst Du schon?

PRINCIPLESDevOps

Page 20: DevOps - Programmierst Du noch oder betreibst Du schon?

DevOps Principles

• Reproducible, automated releasing• Fail fast – fail early – fail often• Don’t hack under stress – find, fix & start over!• Everything is under version control• Don‘t blame others• It‘s not (mine|yours|theirs ) – it‘s our• Continuous improvement

14.03.12

Page 21: DevOps - Programmierst Du noch oder betreibst Du schon?

TOOLSDevOps

Page 22: DevOps - Programmierst Du noch oder betreibst Du schon?

Betriebshandbuch

1. Gemeinsames Vokabular (DSL) definieren2. Gemeinsames Beschreiben aller notwendigen Schritte3. Direkte Überführung in ein ausführbares Programm4. Versionierung des Programms zusammen mit der Software

Tools (1)

Dev

• „keine“ tiefen Kenntnisse über das Verhalten von Anwendungen auf dem Zielsystem• „wenig“ Informationen über die Funktionen einer Anwendungen • „wenig“ Informationen zur Konfiguration

• „nicht“ versiert in Shell Programmierung• „keine“ fundierte Kenntnisse im Umgang mit Unix-Systemen

Ops

14.03.12

„Infrastructure as Code“

• Sehr schnelle betriebsfertige Einrichtung mehrerer Systeme aus einer einheitlichen Quelle

Page 23: DevOps - Programmierst Du noch oder betreibst Du schon?

Betriebshandbuch

1. Gemeinsames Vokabular (DSL) definieren2. Gemeinsames Beschreiben aller notwendigen Schritte3. Direkte Überführung in ein ausführbares Programm4. Versionierung des Programms zusammen mit der Software

Tools (2)

Dev

•„wenig“ Informationen zur Installation einer Anwendung auf dem Zielsystem

• „keine“ Informationen zu Installationspfaden und EnvironmentVariablen

Ops

14.03.12

• Sehr schnelles Deployment einer lauffähigen Anwendung pro Umgebung

Deployment von Anwendung

capistranoFabric

Page 24: DevOps - Programmierst Du noch oder betreibst Du schon?

@MEMODevOps

14.03.12

Page 25: DevOps - Programmierst Du noch oder betreibst Du schon?

Infrastructure as Code

• Open-SourceSoftware, YMC AG

• Produktiver Einsatz: Schweizer Fernsehen

• PHP-basiert, automatisiert

14.03.12

[Basics]Name=k3‐s14Networks[]=lanIPv4forwarding=enabled

AdminGroups[]=ymcRootAccessToAnyHost

cnames[]=disabled

LVM[]=rootLVM[]=swap

[LVM_root]Size=10GFilesystem=ext4

[LVM_swap]Size=5GFilesystem=swap

[Network_lan]Interfaces[]=1IP=10.147.213.14Netmask=255.255.0.0Gateway=10.147.89.254Layout=singleRoutes[]=disabled

[Interface_lan1]hwAddr=00:1b:05:93:d5:0eConnectedToInfo=r2‐s5

[Monitoring]CheckGroups[]=ymcClusterNodeDefaultCheckGroup

[Basics]Name=memo‐test‐hmasterIPbase=10.147.55Fixed=1VirtualIP=disabledHA[]=disabledPort=22

Servers[]=k3‐s14

cnames[]=disabled

Admins[]=ymc‐jaouAdmins[]=memo‐jekoAdmins[]=memo‐vakiAdmins[]=memo‐nikuAdmins[]=memo‐chgu

LVM[]=disabled

Mount[]=disabled

[k3‐s14]Number=1

...

Page 26: DevOps - Programmierst Du noch oder betreibst Du schon?

Deployment

• Web Anwendung• capistrano

• Java Anwendung• Jenkins*

(PostBuildSteps)

• capistrano*

14.03.12

[9:33:14] nkuebler:processr git:(master) $ cap unicorn:starttriggering start callbacks for `unicorn:start'

* executing `multistage:ensure'*** Defaulting to `rapid‐test'* executing `rapid‐test'* executing `unicorn:start'* executing `unicorn:start_production'* executing "if [ ‐f /usr/share/memo‐processr/shared/pids/unicorn.pid ] && kill ‐0 $(</usr/share/memo‐processr/shared/pids/unicorn.pid) >/dev/null 2>&1; then echo 'unicorn already running'; else echo 'starting unicorn...'; source /usr/local/rvm/environments/ruby‐1.9.2‐p290; cd /usr/share/memo‐processr/current && /usr/share/memo‐processr/shared/binstubs/unicorn ‐E production ‐D ‐c /usr/share/memo‐processr/current/config/unicorn/production.rb; fi"

servers: ["k3‐s7.ymchq", "k3‐s8.ymchq", "k3‐s9.ymchq", "k3‐s10.ymchq", "k3‐s19.ymchq", "k3‐s20.ymchq"]

[k3‐s7.ymchq] executing command[k3‐s8.ymchq] executing command[k3‐s9.ymchq] executing command[k3‐s10.ymchq] executing command[k3‐s19.ymchq] executing command[k3‐s20.ymchq] executing command

** [out :: k3‐s19.ymchq] starting unicorn...** [out :: k3‐s10.ymchq] starting unicorn...** [out :: k3‐s7.ymchq] starting unicorn...** [out :: k3‐s20.ymchq] starting unicorn...** [out :: k3‐s8.ymchq] starting unicorn...** [out :: k3‐s9.ymchq] starting unicorn...

command finished in 4967ms* executing `unicorn:start_test'* executing "if [ ‐f /usr/share/memo‐processr/shared/pids/unicorn.pid ] && kill ‐0 $(</usr/share/memo‐processr/shared/pids/unicorn.pid) >/dev/null 2>&1; then echo 'unicorn already running'; else echo 'starting unicorn...'; source /usr/local/rvm/environments/ruby‐1.9.2‐p290; cd /usr/share/memo‐processr/current && /usr/share/memo‐processr/shared/binstubs/unicorn ‐E production ‐D ‐c /usr/share/memo‐processr/current/config/unicorn/test.rb; fi"

servers: ["k3‐s17.ymchq"][k3‐s17.ymchq] executing command

** [out :: k3‐s17.ymchq] starting unicorn...command finished in 3884ms

* (noch) nicht in Produktion

Page 28: DevOps - Programmierst Du noch oder betreibst Du schon?

Quellen & Literatur

http://www.jedi.be/blog/2010/02/12/what-is-this-devops-thing-anyway/

http://devopsdays.org/

http://www.agileweboperations.com/20-devops-guys

http://en.wikipedia.org/wiki/DevOps

http://dev2ops.org/blog/2010/2/22/what-is-devops.html

http://continuousdelivery.com/

Tools:

• http://wiki.opscode.com/display/chef/Home

• http://puppetlabs.com/

• https://github.com/capistrano/capistrano/wiki/Documentation-v2.x

• http://docs.fabfile.org/en/1.4.0/index.html

• http://rundeck.org/

Beispiele:

• Google: http://insidesearch.blogspot.com/2011/11/ten-recent-algorithm-changes.html

• Wordpress: http://toni.org/2010/05/19/

• Etsy: http://codeascraft.etsy.com/2011/02/04/