View
2.301
Download
0
Category
Preview:
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
14.03.12
DEVOPSPROGRAMMIERST DU NOCH ODER BETREIBST DU SCHON?
Jean-Pierre König @jpkoenig
Agenda
• Status Quo – „Wall of Confusion“• Agile Movement, Software Entwicklung • DevOps• DevOps @memonews
14.03.12
2
About me
Jean-Pierre KönigHead of Technology,
MeMo News AGDipl. Informatiker
Tags: Agile, BigData, Hadoop
14.03.12
WALL OF CONFUSIONStatus Quo
• Softwareentwicklung & Systembetrieb organisatorisch klar getrennt
• Auslagerung von Organisationseinheiten in andere Unternehmen
IT Welt
14.03.12
OutsourcingBAR Corp.
Software BetriebFinanzen VerkaufPersonal
FOO Inc.
... ...
Betrieb
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
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
• automatisiert • formal
14.03.12
Ergebnis (2)
I want change!
I want stability!
Dev Ops
Allenfalls eine funktionale Zusammenarbeit, aber wenig effizient bzw. effektiv.
ZEIT FÜR VERÄNDERUNGDevs
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• ...
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
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
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“
DEVOPSDie Lösung
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
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, 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
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
PRINCIPLESDevOps
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
TOOLSDevOps
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
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
@MEMODevOps
14.03.12
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
...
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
DANKE!jean-pierre.koenig@menonews.com
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/
Recommended