• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
DevOps - Programmierst Du noch oder betreibst Du schon?
 

DevOps - Programmierst Du noch oder betreibst Du schon?

on

  • 1,723 views

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

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.

Statistics

Views

Total Views
1,723
Views on SlideShare
1,722
Embed Views
1

Actions

Likes
1
Downloads
13
Comments
0

1 Embed 1

http://www.agilerescue.de 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    DevOps - Programmierst Du noch oder betreibst Du schon? DevOps - Programmierst Du noch oder betreibst Du schon? Presentation Transcript

    • Jean-Pierre König @jpkoenigDEVOPSPROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON?14.03.12
    • Agenda2 • Status Quo – „Wall of Confusion“ • Agile Movement, Software Entwicklung • DevOps • DevOps @memonews 14.03.12
    • About meJean-Pierre KönigHead of Technology, MeMo News AGDipl. InformatikerTags: Agile, BigData, Hadoop 14.03.12
    • Status QuoWALL 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 einemögliche Umsetzung eines IT-Service-Managements (ITSM) beschreiben und inzwischen international als De-facto-Standard hierfürgelten.Quelle: http://de.wikipedia.org/wiki/IT_Infrastructure_Library 14.03.12
    • Ergebnis (2) I want I want change! stability!Dev Ops• automatisiert • formalAllenfalls eine funktionale Zusammenarbeit, aber wenig effizientbzw. effektiv. 14.03.12
    • DevsZEIT FÜR VERÄNDERUNG
    • Warum?Bis zur Jahrtausendwende - klassische Software Entwicklungsmethoden etabliertNachteilig: • 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 QAInitialisierung 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, AgileSeit 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
    • 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ösungDEVOPS
    • DevOpsAuch: 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 derdevopsdays.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
    • DevOpsPRINCIPLES
    • 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
    • DevOpsTOOLS
    • 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.comDANKE!
    • Quellen & Literaturhttp://www.jedi.be/blog/2010/02/12/what-is-this-devops-thing-anyway/http://devopsdays.org/http://www.agileweboperations.com/20-devops-guyshttp://en.wikipedia.org/wiki/DevOpshttp://dev2ops.org/blog/2010/2/22/what-is-devops.htmlhttp://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/