DevOps - Programmierst Du noch oder betreibst Du schon?

Jean-Pierre König
Jean-Pierre König   @jpkoenig



DEVOPS
PROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON?

14.03.12
Agenda
2


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




                                               14.03.12
About me

Jean-Pierre König
Head of Technology,
  MeMo News AG
Dipl. Informatiker

Tags: Agile, BigData,
  Hadoop



                        14.03.12
Status Quo

WALL OF CONFUSION
IT Welt

• Softwareentwicklung & Systembetrieb
  organisatorisch klar getrennt
• Auslagerung von Organisationseinheiten in
  andere Unternehmen
                                  FOO Inc.



      ...   Finanzen   Personal    Software     Betrieb     Verkauf   ...




                                  BAR Corp.   Outsourcing




                                               Betrieb




                                                                            14.03.12
Gründe
• Skaleneffekt beim Konsolidieren des
  Systembetriebs nutzen
  • Personalbedarf im Betrieb steigt nicht zwangsläufig
    proportional zur Anzahl der zu betreuenden Systeme
    Betrieb mehrerer Systeme bündeln und an
    ausgewiesene Organisationseinheiten übergeben ist
    wirtschaftlich vorteilhaft
• Betriebs- und Administrationsaufgaben erfordern
  anderes Mitarbeiterprofil



                                                  14.03.12
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, ...
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



                                                                                                                           14.03.12
Ergebnis (2)
        I want                               I want
        change!                              stability!

Dev                                 Ops




• automatisiert                      • formal

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

                                                              14.03.12
Devs

ZEIT FÜR VERÄNDERUNG
Warum?

Bis zur Jahrtausendwende - klassische Software
  Entwicklungsmethoden 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
  • ...
Klassisch




                                                                                               Releasezyklus
                               Releasezyklus
                    zentrale
                    QA
                                               zentrale
                                               QA
Initialisierung                                                  zentrale
                                                                 QA
                      Analyse
                                                                                zentrale
                                                                                QA
                                                  Entwurf
                                                                                              zentrale
                                                                                              QA
                                                                 Realisierung


                                                                                 Einführung


                                                                                                               Nutzung




                                                                                                                         Zeit
              ...                                           Dev                    Ops                    Ops
                                                                                                           + Anwender
                                               Time to Release
                                                                                                                                14.03.12
Agile, Agile, Agile

Seit ca. 2003 Kanban & Scrum im Aufwand
Ziele:
  • Risiko minimieren, an Anforderungen vorbei zu
    entwickeln
  • Entwicklungskosten einsparen, Time-To-Market
Voraussetzungen:
  • Besseres Zusammenspiel zwischen Entwicklern
    und Nutzern, Anwender einbinden
  • Kürzere Entwicklungszyklen

                                            14.03.12
Agile/Iterativ
„Agilisierter Wasserfall“




                                                                                           Releasezyklus
                             Releasezyklus


                                                                            zentrale
                                                                            QA
                                                                                          zentrale
                                                                                          QA
       Sprint 1      2      3                  4 ...            n
   Analyse & Analyse & Design
        Analyse & Analyse & Design
             Design
                  Design                                 Analyse & Design    Einführung


   Implementierung
        Implementierung
             Implementierung
                  Implementierung                         Implementierung                                  Nutzung


     Test & Demo & Demo
          Test & Demo & Demo
               Test Test                                   Test & Demo



                                                                                                                     Zeit
                                             Scrum Team (Dev)                  Ops                    Ops
                                                                                                       + Anwender
  Time to Release                             + (Proxy-) Anwender
                                                                                                                            14.03.12
Die Lösung

DEVOPS
DevOps
Auch: Continuous Delivery, Continuous Deployment



                    Releasezyklus


                                    Releasezyklus


                                                    Releasezyklus


                                                                    Releasezyklus




                                                                                                             Releasezyklus
      Sprint 1       2                 3                    4         ...                      n
  Analyse & Design Design Design Design
         Analyse &
                Analyse &
                       Analyse &                                                          Analyse & Design


   Implementierung
         Implementierung
                Implementierung
                      Implementierung                                                     Implementierung


    Test & Demo Demo Demo Demo
           Test & Test & Test &                                                             Test & Demo


     Einführung
            Einführung
                   Einführung
                          Einführung                                                         Einführung


      Nutzung
            Nutzung
                  Nutzung
                        Nutzung                                                               Nutzung


                                                                                    Delivery Team                            Zeit
                                                                                     + (Proxy-) Anwender
  Time to Release
                                                                                                                                    14.03.12
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
DevOps

... is emerging set of
   principles, methods
   and practices for
   communication,                                DevOps

   collaboration and
   integration between                         Technology
                                               Operations


   ...
   [wikipedia]




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

                                                            14.03.12
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
DevOps

PRINCIPLES
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
DevOps

TOOLS
Tools (1)

„Infrastructure as Code“



                                 Betriebshandbuch
                    Dev                                                        Ops


    • „nicht“ versiert in Shell Programmierung                   • „keine“ tiefen Kenntnisse über das
    • „keine“ fundierte Kenntnisse im Umgang                     Verhalten von Anwendungen auf dem
    mit Unix-Systemen                                            Zielsystem
                                                                 • „wenig“ Informationen über die Funktionen
                                                                 einer Anwendungen
                                                                 • „wenig“ Informationen zur Konfiguration


     1.   Gemeinsames Vokabular (DSL) definieren
     2.   Gemeinsames Beschreiben aller notwendigen Schritte
     3.   Direkte Überführung in ein ausführbares Programm
     4.   Versionierung des Programms zusammen mit der Software

     •    Sehr schnelle betriebsfertige Einrichtung mehrerer Systeme aus einer einheitlichen Quelle


                                                                                                  14.03.12
Tools (2)

Deployment von Anwendung



                              Betriebshandbuch
                  Dev                                                     Ops


   • „keine“ Informationen zu                              •„wenig“ Informationen zur Installation einer
   Installationspfaden und Environment                     Anwendung auf dem Zielsystem
   Variablen




    1.   Gemeinsames Vokabular (DSL) definieren                                               capistrano
    2.   Gemeinsames Beschreiben aller notwendigen Schritte                                   Fabric
    3.   Direkte Überführung in ein ausführbares Programm
    4.   Versionierung des Programms zusammen mit der Software

    •    Sehr schnelles Deployment einer lauffähigen Anwendung pro Umgebung


                                                                                             14.03.12
DevOps

@MEMO


         14.03.12
Infrastructure as Code
                       [Basics]                                        [Basics]

• Open-Source          Name=k3‐s14
                       Networks[]=lan
                       IPv4forwarding=enabled
                                                                       Name=memo‐test‐hmaster
                                                                       IPbase=10.147.55
                                                                       Fixed=1


  Software, YMC AG
                                                                       VirtualIP=disabled
                       AdminGroups[]=ymcRootAccessToAnyHost            HA[]=disabled
                                                                       Port=22
                       cnames[]=disabled
                                                                       Servers[]=k3‐s14

• Produktiver          LVM[]=root
                       LVM[]=swap                                      cnames[]=disabled



  Einsatz: Schweizer
                       [LVM_root]                                      Admins[]=ymc‐jaou
                       Size=10G                                        Admins[]=memo‐jeko
                       Filesystem=ext4                                 Admins[]=memo‐vaki
                                                                       Admins[]=memo‐niku

  Fernsehen            [LVM_swap]
                       Size=5G
                       Filesystem=swap
                                                                       Admins[]=memo‐chgu

                                                                       LVM[]=disabled



• PHP-basiert,
                       [Network_lan]                                   Mount[]=disabled
                       Interfaces[]=1
                       IP=10.147.213.14                                [k3‐s14]
                       Netmask=255.255.0.0                             Number=1

  automatisiert        Gateway=10.147.89.254
                       Layout=single
                       Routes[]=disabled
                                                                       ...
                       [Interface_lan1]
                       hwAddr=00:1b:05:93:d5:0e
                       ConnectedToInfo=r2‐s5

                       [Monitoring]
                       CheckGroups[]=ymcClusterNodeDefaultCheckGroup




                                                                                  14.03.12
Deployment
                               [9:33:14] nkuebler:processr git:(master) $ cap unicorn:start

• Web Anwendung                   triggering start callbacks for `unicorn:start'
                                * executing `multistage:ensure'
                               *** Defaulting to `rapid‐test'
                                * executing `rapid‐test'

       • capistrano             * 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) 

• Java Anwendung               >/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‐

       • Jenkins*              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"]
           (PostBuildSteps)       [k3‐s7.ymchq] executing command
                                  [k3‐s8.ymchq] executing command
                                  [k3‐s9.ymchq] executing command

       • capistrano*              [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
* (noch) nicht in Produktion   ** [out :: k3‐s17.ymchq] starting unicorn...
                                  command finished in 3884ms
                                                                                         14.03.12
jean-pierre.koenig@menonews.com

DANKE!
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/
1 of 28

Recommended

About Dogs and Cats - über DevOps in großen Konzernen by
About Dogs and Cats - über DevOps in großen KonzernenAbout Dogs and Cats - über DevOps in großen Konzernen
About Dogs and Cats - über DevOps in großen KonzernenStefan Bauer
1.3K views43 slides
DevOps: Revolution im IT Betrieb? by
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?Digicomp Academy AG
3.6K views27 slides
DevOps und ITIL: Waffenbrüder oder Feinde? by
DevOps und ITIL: Waffenbrüder oder Feinde?DevOps und ITIL: Waffenbrüder oder Feinde?
DevOps und ITIL: Waffenbrüder oder Feinde?OPITZ CONSULTING Deutschland
3.1K views90 slides
DevOps in der Praxis by
DevOps in der PraxisDevOps in der Praxis
DevOps in der Praxisinovex GmbH
1.4K views21 slides
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick by
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
2.8K views42 slides
Quo vadis DevOps by
Quo vadis DevOpsQuo vadis DevOps
Quo vadis DevOpscusy GmbH
1K views35 slides

More Related Content

What's hot

Die devops-bewegung by
Die devops-bewegungDie devops-bewegung
Die devops-bewegungcodecentric AG
2.7K views12 slides
DevOps Meetup Freiburg - DevOps in Practice by
DevOps Meetup Freiburg - DevOps in PracticeDevOps Meetup Freiburg - DevOps in Practice
DevOps Meetup Freiburg - DevOps in PracticeHaufe-Lexware GmbH & Co KG
1.2K views23 slides
VSHN DevOps Workshop at topsoft 2019 by
VSHN DevOps Workshop at topsoft 2019VSHN DevOps Workshop at topsoft 2019
VSHN DevOps Workshop at topsoft 2019Markus Speth
830 views33 slides
E-Commerce vs Architektur CodeTalks.Commerce_2018 by
E-Commerce vs Architektur CodeTalks.Commerce_2018E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018Johann-Peter Hartmann
1.7K views149 slides
Agile BI in der Praxis - DevOps4BI by
Agile BI in der Praxis - DevOps4BIAgile BI in der Praxis - DevOps4BI
Agile BI in der Praxis - DevOps4BIOPITZ CONSULTING Deutschland
1.1K views31 slides
Agile BI in der Praxis - Agiles Testen by
Agile BI in der Praxis - Agiles TestenAgile BI in der Praxis - Agiles Testen
Agile BI in der Praxis - Agiles TestenOPITZ CONSULTING Deutschland
2.4K views40 slides

What's hot(20)

VSHN DevOps Workshop at topsoft 2019 by Markus Speth
VSHN DevOps Workshop at topsoft 2019VSHN DevOps Workshop at topsoft 2019
VSHN DevOps Workshop at topsoft 2019
Markus Speth830 views
Realisierung des Application Lifecycle Management im OWB by Minerva SoftCare GmbH
Realisierung des Application Lifecycle Management im OWBRealisierung des Application Lifecycle Management im OWB
Realisierung des Application Lifecycle Management im OWB
Infrastruktur agil bauen - der DBA im SAFe-Umfeld by Daniel Steiger
Infrastruktur agil bauen - der DBA im SAFe-UmfeldInfrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Daniel Steiger231 views
BizDevOps - Die prozessorientierte IT-Organisation by Uwe Weng
BizDevOps - Die prozessorientierte IT-OrganisationBizDevOps - Die prozessorientierte IT-Organisation
BizDevOps - Die prozessorientierte IT-Organisation
Uwe Weng4.2K views
Bessere Software schneller liefern by Mayflower GmbH
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
Mayflower GmbH1.8K views
Lean development 04 by SuperB2
Lean development 04Lean development 04
Lean development 04
SuperB2541 views
Scrum - Von traditionellen Ansaetzen zu agilen Methoden wie Scrum by Ralf Ohlenbostel
Scrum - Von traditionellen Ansaetzen zu agilen Methoden wie ScrumScrum - Von traditionellen Ansaetzen zu agilen Methoden wie Scrum
Scrum - Von traditionellen Ansaetzen zu agilen Methoden wie Scrum
Ralf Ohlenbostel4.1K views
Agil in der Normativen Welt by Thomas Arends
Agil in der Normativen WeltAgil in der Normativen Welt
Agil in der Normativen Welt
Thomas Arends276 views
Cusy Developer-Baukasten by cusy GmbH
Cusy Developer-BaukastenCusy Developer-Baukasten
Cusy Developer-Baukasten
cusy GmbH1.2K views
Scrum Workshop by mrdoubleb
Scrum WorkshopScrum Workshop
Scrum Workshop
mrdoubleb2.3K views
Organisation 4.0 by Uwe Weng
Organisation 4.0Organisation 4.0
Organisation 4.0
Uwe Weng1.4K views

Viewers also liked

Digital Disruption with DevOps - Reference Architecture Overview by
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewIBM UrbanCode Products
3.4K views28 slides
Continuous integration eine Einführung für Unkundige by
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundigeabuwipp
866 views8 slides
Continuous Delivery Maturity Model by
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity ModelIBM UrbanCode Products
9K views41 slides
The Future of DevOps and UrbanCode by
The Future of DevOps and UrbanCodeThe Future of DevOps and UrbanCode
The Future of DevOps and UrbanCodeIBM UrbanCode Products
1.9K views36 slides
Accenture DevOps: Delivering applications at the pace of business by
Accenture DevOps: Delivering applications at the pace of businessAccenture DevOps: Delivering applications at the pace of business
Accenture DevOps: Delivering applications at the pace of businessAccenture Technology
162.4K views10 slides
Desarrollo sostenible by
Desarrollo sostenibleDesarrollo sostenible
Desarrollo sostenibleWILS2015
212 views4 slides

Viewers also liked(20)

Digital Disruption with DevOps - Reference Architecture Overview by IBM UrbanCode Products
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview
Continuous integration eine Einführung für Unkundige by abuwipp
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
abuwipp866 views
Accenture DevOps: Delivering applications at the pace of business by Accenture Technology
Accenture DevOps: Delivering applications at the pace of businessAccenture DevOps: Delivering applications at the pace of business
Accenture DevOps: Delivering applications at the pace of business
Accenture Technology162.4K views
Desarrollo sostenible by WILS2015
Desarrollo sostenibleDesarrollo sostenible
Desarrollo sostenible
WILS2015212 views
The Jasna Gora wunders by Erasmus+
The Jasna Gora wundersThe Jasna Gora wunders
The Jasna Gora wunders
Erasmus+ 1.1K views
entorno y primeros pasos de powerpoint by salmardze
entorno y primeros pasos de powerpointentorno y primeros pasos de powerpoint
entorno y primeros pasos de powerpoint
salmardze296 views
soziales semantisches web by _veronika_
soziales semantisches websoziales semantisches web
soziales semantisches web
_veronika_671 views
Bernd Fuhlert: Code of conduct zum Datenschutz by Bernd Fuhlert
Bernd Fuhlert: Code of conduct zum DatenschutzBernd Fuhlert: Code of conduct zum Datenschutz
Bernd Fuhlert: Code of conduct zum Datenschutz
Bernd Fuhlert1.7K views
Pensamiento sistematico by maryyalitza
Pensamiento sistematicoPensamiento sistematico
Pensamiento sistematico
maryyalitza432 views
Cierre de Práctica Investigativa Rural en la vereda San José by Ivan Gutierrez
Cierre de Práctica Investigativa Rural en la vereda San JoséCierre de Práctica Investigativa Rural en la vereda San José
Cierre de Práctica Investigativa Rural en la vereda San José
Ivan Gutierrez558 views

Similar to DevOps - Programmierst Du noch oder betreibst Du schon?

20110321 activiti märz by
20110321 activiti märz20110321 activiti märz
20110321 activiti märzcamunda services GmbH
695 views41 slides
20110203 jug stuttgart by
20110203 jug stuttgart20110203 jug stuttgart
20110203 jug stuttgartcamunda services GmbH
606 views45 slides
YOUR SL GmbH by
YOUR SL GmbHYOUR SL GmbH
YOUR SL GmbHNative Enterprise Solutions GmbH
1.1K views15 slides
20110406 activiti mai by
20110406 activiti mai20110406 activiti mai
20110406 activiti maicamunda services GmbH
408 views40 slides
Creasoft - Software QS by
Creasoft - Software QSCreasoft - Software QS
Creasoft - Software QSCreasoft AG
1.4K views28 slides
Roadshow 2018 - Camunda in der Praxis: So geht's by
Roadshow 2018 - Camunda in der Praxis: So geht'sRoadshow 2018 - Camunda in der Praxis: So geht's
Roadshow 2018 - Camunda in der Praxis: So geht'scamunda services GmbH
998 views32 slides

Similar to DevOps - Programmierst Du noch oder betreibst Du schon?(20)

Creasoft - Software QS by Creasoft AG
Creasoft - Software QSCreasoft - Software QS
Creasoft - Software QS
Creasoft AG1.4K views
Lean Development / Standardisierte Software-Entwicklung by SuperB2
Lean Development / Standardisierte Software-EntwicklungLean Development / Standardisierte Software-Entwicklung
Lean Development / Standardisierte Software-Entwicklung
SuperB21.1K views
Einführung Vorgehensmodelle und Agile Software Entwicklung by Christian Baranowski
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
Kanban, Lean, and Scrum by Thomas Moedl
Kanban, Lean, and ScrumKanban, Lean, and Scrum
Kanban, Lean, and Scrum
Thomas Moedl7.3K views
IBM SmartCloud Provisioning Workshop, 25. Oktober 2012 by IBM Switzerland
IBM SmartCloud Provisioning Workshop, 25. Oktober 2012IBM SmartCloud Provisioning Workshop, 25. Oktober 2012
IBM SmartCloud Provisioning Workshop, 25. Oktober 2012
IBM Switzerland2.9K views
Roadshow 2019: Praxistipps für die erfolgreiche Einführung von Camunda in Ihr... by camunda services GmbH
Roadshow 2019: Praxistipps für die erfolgreiche Einführung von Camunda in Ihr...Roadshow 2019: Praxistipps für die erfolgreiche Einführung von Camunda in Ihr...
Roadshow 2019: Praxistipps für die erfolgreiche Einführung von Camunda in Ihr...
We Do Web Sphere Deutsch Webcast On24 by Christoph Goertz
We Do Web Sphere Deutsch   Webcast On24We Do Web Sphere Deutsch   Webcast On24
We Do Web Sphere Deutsch Webcast On24
Christoph Goertz979 views
Rails und Scrum in großen Projekten by Phillip Oertel
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
Phillip Oertel2K views

DevOps - Programmierst Du noch oder betreibst Du schon?

  • 1. Jean-Pierre König @jpkoenig DEVOPS PROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON? 14.03.12
  • 2. Agenda 2 • Status Quo – „Wall of Confusion“ • Agile Movement, Software Entwicklung • DevOps • DevOps @memonews 14.03.12
  • 3. About me Jean-Pierre König Head of Technology, MeMo News AG Dipl. Informatiker Tags: Agile, BigData, Hadoop 14.03.12
  • 4. Status Quo WALL OF CONFUSION
  • 5. IT Welt • Softwareentwicklung & Systembetrieb organisatorisch klar getrennt • Auslagerung von Organisationseinheiten in andere Unternehmen FOO Inc. ... Finanzen Personal Software Betrieb Verkauf ... BAR Corp. Outsourcing Betrieb 14.03.12
  • 6. Gründe • Skaleneffekt beim Konsolidieren des Systembetriebs nutzen • Personalbedarf im Betrieb steigt nicht zwangsläufig proportional zur Anzahl der zu betreuenden Systeme Betrieb mehrerer Systeme bündeln und an ausgewiesene Organisationseinheiten übergeben ist wirtschaftlich vorteilhaft • Betriebs- und Administrationsaufgaben erfordern anderes Mitarbeiterprofil 14.03.12
  • 7. 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, ... 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 14.03.12
  • 8. Ergebnis (2) I want I want change! stability! Dev Ops • automatisiert • formal Allenfalls eine funktionale Zusammenarbeit, aber wenig effizient bzw. effektiv. 14.03.12
  • 10. Warum? Bis zur Jahrtausendwende - klassische Software Entwicklungsmethoden 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 • ...
  • 11. Klassisch Releasezyklus Releasezyklus zentrale QA zentrale QA Initialisierung zentrale QA Analyse zentrale QA Entwurf zentrale QA Realisierung Einführung Nutzung Zeit ... Dev Ops Ops + Anwender Time to Release 14.03.12
  • 12. Agile, Agile, Agile Seit ca. 2003 Kanban & Scrum im Aufwand Ziele: • Risiko minimieren, an Anforderungen vorbei zu entwickeln • Entwicklungskosten einsparen, Time-To-Market Voraussetzungen: • Besseres Zusammenspiel zwischen Entwicklern und Nutzern, Anwender einbinden • Kürzere Entwicklungszyklen 14.03.12
  • 13. Agile/Iterativ „Agilisierter Wasserfall“ Releasezyklus Releasezyklus zentrale QA zentrale QA Sprint 1 2 3 4 ... n Analyse & Analyse & Design Analyse & Analyse & Design Design Design Analyse & Design Einführung Implementierung Implementierung Implementierung Implementierung Implementierung Nutzung Test & Demo & Demo Test & Demo & Demo Test Test Test & Demo Zeit Scrum Team (Dev) Ops Ops + Anwender Time to Release + (Proxy-) Anwender 14.03.12
  • 15. DevOps Auch: Continuous Delivery, Continuous Deployment Releasezyklus Releasezyklus Releasezyklus Releasezyklus Releasezyklus Sprint 1 2 3 4 ... n Analyse & Design Design Design Design Analyse & Analyse & Analyse & Analyse & Design Implementierung Implementierung Implementierung Implementierung Implementierung Test & Demo Demo Demo Demo Test & Test & Test & Test & Demo Einführung Einführung Einführung Einführung Einführung Nutzung Nutzung Nutzung Nutzung Nutzung Delivery Team Zeit + (Proxy-) Anwender Time to Release 14.03.12
  • 16. 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
  • 17. DevOps ... is emerging set of principles, methods and practices for communication, DevOps collaboration and integration between Technology Operations ... [wikipedia] Patrick Debois prägte den Begriff 2009 erstmalig auf der devopsdays.org Konferenz 14.03.12
  • 18. 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
  • 20. 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
  • 22. Tools (1) „Infrastructure as Code“ Betriebshandbuch Dev Ops • „nicht“ versiert in Shell Programmierung • „keine“ tiefen Kenntnisse über das • „keine“ fundierte Kenntnisse im Umgang Verhalten von Anwendungen auf dem mit Unix-Systemen Zielsystem • „wenig“ Informationen über die Funktionen einer Anwendungen • „wenig“ Informationen zur Konfiguration 1. Gemeinsames Vokabular (DSL) definieren 2. Gemeinsames Beschreiben aller notwendigen Schritte 3. Direkte Überführung in ein ausführbares Programm 4. Versionierung des Programms zusammen mit der Software • Sehr schnelle betriebsfertige Einrichtung mehrerer Systeme aus einer einheitlichen Quelle 14.03.12
  • 23. Tools (2) Deployment von Anwendung Betriebshandbuch Dev Ops • „keine“ Informationen zu •„wenig“ Informationen zur Installation einer Installationspfaden und Environment Anwendung auf dem Zielsystem Variablen 1. Gemeinsames Vokabular (DSL) definieren capistrano 2. Gemeinsames Beschreiben aller notwendigen Schritte Fabric 3. Direkte Überführung in ein ausführbares Programm 4. Versionierung des Programms zusammen mit der Software • Sehr schnelles Deployment einer lauffähigen Anwendung pro Umgebung 14.03.12
  • 24. DevOps @MEMO 14.03.12
  • 25. Infrastructure as Code [Basics] [Basics] • Open-Source Name=k3‐s14 Networks[]=lan IPv4forwarding=enabled Name=memo‐test‐hmaster IPbase=10.147.55 Fixed=1 Software, YMC AG VirtualIP=disabled AdminGroups[]=ymcRootAccessToAnyHost HA[]=disabled Port=22 cnames[]=disabled Servers[]=k3‐s14 • Produktiver LVM[]=root LVM[]=swap cnames[]=disabled Einsatz: Schweizer [LVM_root] Admins[]=ymc‐jaou Size=10G Admins[]=memo‐jeko Filesystem=ext4 Admins[]=memo‐vaki Admins[]=memo‐niku Fernsehen [LVM_swap] Size=5G Filesystem=swap Admins[]=memo‐chgu LVM[]=disabled • PHP-basiert, [Network_lan] Mount[]=disabled Interfaces[]=1 IP=10.147.213.14 [k3‐s14] Netmask=255.255.0.0 Number=1 automatisiert Gateway=10.147.89.254 Layout=single Routes[]=disabled ... [Interface_lan1] hwAddr=00:1b:05:93:d5:0e ConnectedToInfo=r2‐s5 [Monitoring] CheckGroups[]=ymcClusterNodeDefaultCheckGroup 14.03.12
  • 26. Deployment [9:33:14] nkuebler:processr git:(master) $ cap unicorn:start • Web Anwendung triggering start callbacks for `unicorn:start' * executing `multistage:ensure' *** Defaulting to `rapid‐test' * executing `rapid‐test' • capistrano * 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)  • Java Anwendung >/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‐ • Jenkins* 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"] (PostBuildSteps) [k3‐s7.ymchq] executing command [k3‐s8.ymchq] executing command [k3‐s9.ymchq] executing command • capistrano* [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 * (noch) nicht in Produktion ** [out :: k3‐s17.ymchq] starting unicorn... command finished in 3884ms 14.03.12
  • 28. 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/