SlideShare ist ein Scribd-Unternehmen logo
1 von 72
DevOps Unconf




                © 2010 Mayflower GmbH
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 2
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 3
2007

 Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 4
http://www.flickr.com/photos/johnmueller/52621490/
                               Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 5
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 6
http://www.flickr.com/photos/johnmueller/52621490/
                               Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 7
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 8
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 9
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 10
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 11
Nicht schnell.




   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 12
Nicht schnell.




   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 13
Nicht schnell.




   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 13
auch schnell.




   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 14
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 15
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 16
Das bin ich.


Johann-Peter Hartmann
@johannhartmann
hartmann@mayflower.de
IRC: Freenode, EFNet
johann__




                        Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
Und das auch.


Johann-Peter Hartmann
PHP Developer
CTO of 65 developers
Likes PHP, Agility, System
Administration and
Security




                             Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
Wer seid Ihr?




                Developer?
                Sysadmin?




                         Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
(Zeit schinden durch Publikumsfragen)




                   Agile?
                   Scrum?



                               Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
(noch mehr Zeit schinden)




                   Releases / Jahr?




                            Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
(... ich muss mich beeilen)




                    Cloud?




                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
==
Hardware =
Software
      Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 23
API


Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 24
Immer noch
   Hardware
(nur woanders)
     Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 25
2009

 Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 26
Hardware = Software =
Configuration



             Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 27
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 28
Dokumentationsgetrieben
     DomainSpecificLangu
     age


         Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 29
PuppetMaster

  PuppetD


   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 30
Mach ma hin

 So Isset.


   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 31
Facter




Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 32
class web {
  package {“httpd“:
    ensure => present
  }

    file {“/etc/httpd/conf/httpd.conf“:
      owner => root,
      group => root,
      mode => 664,
      source => puppet:///modules/apache/httpd.conf,
      require => Package[“httpd“],
    }

    service {“httpd“:
      ensure => running,
      enable => true,
      require => File[“/etc/httpd/conf/httpd.conf“]
    }
}

node “web01.mydomain.test“ {
  include web
}



                               Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 33
Puppet-Modules
• apache, nginx, varnish
• php, ruby, tomcat
• mysql, postgresql, memcache,
  ejabberd
• heartbeat, dns
  (gibt eigentlich für fast alles etwas)



                   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 34
Monitoring




Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 35
Quelle: http://www.puppetlabs.com/puppet/related-projects/dashboard/
                                 Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 36
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 37
Vagra


Ich weiss, wie meine Server
aussehen.
Das Development soll
maximal ähnlich sein.

             Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 38
Vagrant


VirtualBox-basierte
automatische
Erzeugung von VMs
mit Puppet/Chef
    Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 39
Vagrant


Voll versioniert!
On-Demand
Erzeugung
Developer-Self-
Service
    Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 40
$ gem install vagrant
$ vagrant box add maverick64 http://mathie-vagrant-
boxes.s3.amazonaws.com/maverick64.box
$ mkdir maverick_demo
$ cd maverick_demo
$ vagrant init maverick64
$ vagrant up
$ vagrant ssh
vagrant@maverick64:~$




                            Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 41
Vagrant-Cluster mit
20 Maschinen lokal?



        Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 42
McCloud
    Wrapper
    likeVagrant around
    Fog

    Transparent local &
    cloud usage
                                    https://github.com/jedi4ever/
                                    mccloud
          Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 43
Und wenn ich 500
Maschinen will?



       Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 44
mCollective
ssh-for-loop on steroids

fast management for loads
of servers

uses puppet/facter, MQ-
based
            Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 45
$       mc-package -W "architecture=x86" status apache

    *
[ ============================================================>
] 10 / 10

host01.example.com                            version            =    apache-2.2.9-7
host02.example.com                            version            =    apache-2.2.9-7
host03.example.com                            version            =    apache-2.2.9-7
host04.example.com                            version            =    apache-2.2.9-7
host05.example.com                            version            =    apache-2.2.9-7
host06.example.com                            version            =    apache-2.2.9-7
host07.example.com                            version            =    apache-2.2.9-7
host08.example.com                            version            =    apache-2.2.9-7
host09.example.com                            version            =    apache-2.2.9-7
host10.example.com                            version            =    apache-2.2.9-7

---- package agent summary ----
           Nodes: 10 / 10
        Versions: 10 * 0.25.5-1.el5
    Elapsed Time: 1.03 s




                                 Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 46
The most dangerous
vegetable on earth!
           Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 47
• eigentlich ein BDD-Tool
• trotzdem Bestandteil in DevOps
• und Bestandteil in Lean Startup
• cucumber-nagios
• cucumber-puppet



                         Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
Feature: Manualsearch
  In order to find an article
  As an developer
  I want to use the search function
  Scenario: Search for bdd and check resulting page
    Given I go to "http://it-republik.de/php/"
    When I fill in "search_itr" with "bdd"
    And I click "search2"
    Then I should see "Suche"




                            Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 49
Given /^I go to "([^"]*)"$/ do |url|
  visit url
end

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
  fill_in field, :with => value
end

When /^I click "([^"]*)"$/ do |button|
    click_button(button)
end

Then /^I should see "([^"]*)"$/ do |text|
  response_body.should include(text)
end




                            Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 50
johann$ cucumber
Feature: Manualsearch
  In order to find an article
  As an developer
  I want to use the search function

  Scenario: Search for bdd and check resulting page # features/
search.feature:5
    Given I go to "http://it-republik.de/php/"      # features/
step_definitions/search_steps.rb:1
    When I fill in "search_itr" with "bdd"          # features/
step_definitions/search_steps.rb:5
    And I click "search2"                           # features/
step_definitions/search_steps.rb:9
    Then I should see "Suche"                       # features/
step_definitions/search_steps.rb:13

1 scenario (1 passed)
4 steps (4 passed)
0m1.615s




                            Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 51
Feature: Install inetd
  In order to serve the web
  the httpd service
  must be installed

  Scenario: Setup httpd
    Given a node of class “web“
    When I compile the catalog
    Then package “httpd“ should be “installed“
    Then there should be a resource “Service[httpd]“
    And the service should have “enable“ set to “true“
    And State should be “running“
    And the service should require “Package[httpd]“




                              Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 52
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 53
Das verstehe sogar ich!
Und ich bin seit 20
Jahren im Marketing!




                          Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 54
Unit Tests
                             Acceptance
                             Tests
                             Metrics
                             Coding Style

                             ... you get the
                             idea.




Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 55
... and even
                             more ...

                             Packaging
                             Releasing
                             Deployment




Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 56
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 57
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 58
Wetware
Refactoring



    Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 59
Work together




        Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 60
Own together




        Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 61
Eat together




        http://www.flickr.com/photos/vilavelosa/
        3815032524/ - und dann? I Mayflower GmbH I 28. Oktober 2010
           Kontinuierliche Entiwcklung                               I 62
Plan
together




           Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 63
Mayflower
DevOpsification




      Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 64
DevOpsification of Mayflower (Wetware)




 1-2 Admins pro Team
 –Admin & Development-
  Aufgaben
 –Vollzeit dem Team
  zugeordnet

                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
DevOpsification of Mayflower (Wetware)




Enge Zusammenarbeit mit zentralem
Admin

Volle Root-Rechte auf Developer-
Infrastruktur



                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
DevOpsification of Mayflower (Software)




 1+n Puppet-Master
  – zentraler Firmenmaster
  – Teammaster pro Team / Projekt
  – Firmenmaster ist Startpunkt der
    Teamkonfiguration




                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
DevOpsification of Mayflower (Software)




 Beispiel-Setup:
  – lokale Developer-VM
  – CI-Deployment-Server in der DMZ
  – Staging in der private Cloud
  – Beta in Amazon-Cloud
  – Production bei Amazon




                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
DevOpsification of Mayflower (Software)




 lokaler GIT- / Gitorious-
 Server

 Private Cloud in der DMZ
 - im Self-Service!

                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
DevOpsification of Mayflower (Future)




         Vagrant für das
           Development
        Scrum => KanBan
          Puppet Nagios


                              Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
Vielen Dank für Ihre Aufmerksamkeit!




Kontakt   Johann-Peter Hartmann
          johann__ @ freenode
          Mail / Jabber:
          johann-peter.hartmann@mayflower.de




                                              © 2010 Mayflower GmbH

Weitere ähnliche Inhalte

Ähnlich wie Dev ops für php talk

international PHP2011_J.Hartmann_DevOps für PHP
international PHP2011_J.Hartmann_DevOps für PHPinternational PHP2011_J.Hartmann_DevOps für PHP
international PHP2011_J.Hartmann_DevOps für PHPsmueller_sandsmedia
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenFotiosKaramitsos
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit AnsibleMichael Döhler
 
Präsentation plug in development
Präsentation plug in developmentPräsentation plug in development
Präsentation plug in developmentxxtesaxx
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...E-Government
 
Einfürung iPhone Entwicklung
Einfürung iPhone EntwicklungEinfürung iPhone Entwicklung
Einfürung iPhone EntwicklungStuff Mc
 
Shell Fu for Developers
Shell Fu for DevelopersShell Fu for Developers
Shell Fu for DevelopersMayflower GmbH
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Peter Hecker
 
W-Jax 2015: QS-Maßnahmen bei Continuous Delivery
W-Jax 2015: QS-Maßnahmen bei Continuous DeliveryW-Jax 2015: QS-Maßnahmen bei Continuous Delivery
W-Jax 2015: QS-Maßnahmen bei Continuous DeliveryStephan Kaps
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python DevelopmentMartin Christen
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
Clouds, leicht beherrschbar
Clouds, leicht beherrschbarClouds, leicht beherrschbar
Clouds, leicht beherrschbarFrank Müller
 
MOOC und OER - Warum, weshalb, wieso, wozu?
MOOC und OER - Warum, weshalb, wieso, wozu?MOOC und OER - Warum, weshalb, wieso, wozu?
MOOC und OER - Warum, weshalb, wieso, wozu?Martin Ebner
 

Ähnlich wie Dev ops für php talk (20)

international PHP2011_J.Hartmann_DevOps für PHP
international PHP2011_J.Hartmann_DevOps für PHPinternational PHP2011_J.Hartmann_DevOps für PHP
international PHP2011_J.Hartmann_DevOps für PHP
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Forms 12c und der Oracle SB
Forms 12c und der Oracle SBForms 12c und der Oracle SB
Forms 12c und der Oracle SB
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit Ansible
 
CSS3 produktiv
CSS3 produktivCSS3 produktiv
CSS3 produktiv
 
Präsentation plug in development
Präsentation plug in developmentPräsentation plug in development
Präsentation plug in development
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...
Ein ansatz für die untersuchung von linkquellen einer webseite mithilfe von p...
 
Einfürung iPhone Entwicklung
Einfürung iPhone EntwicklungEinfürung iPhone Entwicklung
Einfürung iPhone Entwicklung
 
Shell Fu for Developers
Shell Fu for DevelopersShell Fu for Developers
Shell Fu for Developers
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
W-Jax 2015: QS-Maßnahmen bei Continuous Delivery
W-Jax 2015: QS-Maßnahmen bei Continuous DeliveryW-Jax 2015: QS-Maßnahmen bei Continuous Delivery
W-Jax 2015: QS-Maßnahmen bei Continuous Delivery
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Clouds, leicht beherrschbar
Clouds, leicht beherrschbarClouds, leicht beherrschbar
Clouds, leicht beherrschbar
 
MOOCs & OER
MOOCs & OERMOOCs & OER
MOOCs & OER
 
MOOC und OER - Warum, weshalb, wieso, wozu?
MOOC und OER - Warum, weshalb, wieso, wozu?MOOC und OER - Warum, weshalb, wieso, wozu?
MOOC und OER - Warum, weshalb, wieso, wozu?
 
Ec13 xpages-basic
Ec13 xpages-basicEc13 xpages-basic
Ec13 xpages-basic
 

Mehr von Johann-Peter Hartmann

E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018Johann-Peter Hartmann
 
Warum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtWarum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtJohann-Peter Hartmann
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?Johann-Peter Hartmann
 
RoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaRoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaJohann-Peter Hartmann
 
Von Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenVon Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenJohann-Peter Hartmann
 
Lügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeLügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeJohann-Peter Hartmann
 
How not to screw the operating system of your startup
How not to screw the operating system of your startupHow not to screw the operating system of your startup
How not to screw the operating system of your startupJohann-Peter Hartmann
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesJohann-Peter Hartmann
 

Mehr von Johann-Peter Hartmann (20)

The End of my Career
The End of my CareerThe End of my Career
The End of my Career
 
E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018
 
DevOps beyond the Tools
DevOps beyond the ToolsDevOps beyond the Tools
DevOps beyond the Tools
 
Warum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtWarum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommt
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
RoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaRoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für China
 
Die Architektur, die man kann
Die Architektur, die man kannDie Architektur, die man kann
Die Architektur, die man kann
 
NewWork in der Praxis
NewWork in der PraxisNewWork in der Praxis
NewWork in der Praxis
 
Von Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenVon Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und Systemadministratoren
 
Das Ende der Karriere
Das Ende der KarriereDas Ende der Karriere
Das Ende der Karriere
 
DevOps jenseits der Tools
DevOps jenseits der ToolsDevOps jenseits der Tools
DevOps jenseits der Tools
 
Reparier Deine Unternehmenskultur!
Reparier Deine Unternehmenskultur!Reparier Deine Unternehmenskultur!
Reparier Deine Unternehmenskultur!
 
Lügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeLügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-Verträge
 
How not to screw the operating system of your startup
How not to screw the operating system of your startupHow not to screw the operating system of your startup
How not to screw the operating system of your startup
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektes
 
Agile versus Management WJAX 2014
Agile versus Management WJAX 2014Agile versus Management WJAX 2014
Agile versus Management WJAX 2014
 
Leadership in der IT
Leadership in der ITLeadership in der IT
Leadership in der IT
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Erfolgreiche rewrites
Erfolgreiche rewritesErfolgreiche rewrites
Erfolgreiche rewrites
 
Surviving Complexity
Surviving ComplexitySurviving Complexity
Surviving Complexity
 

Dev ops für php talk

  • 1. DevOps Unconf © 2010 Mayflower GmbH
  • 2. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 2
  • 3. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 3
  • 4. 2007 Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 4
  • 5. http://www.flickr.com/photos/johnmueller/52621490/ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 5
  • 6. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 6
  • 7. http://www.flickr.com/photos/johnmueller/52621490/ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 7
  • 8. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 8
  • 9. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 9
  • 10. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 10
  • 11. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 11
  • 12. Nicht schnell. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 12
  • 13. Nicht schnell. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 13
  • 14. Nicht schnell. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 13
  • 15. auch schnell. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 14
  • 16. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 15
  • 17. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 16
  • 18. Das bin ich. Johann-Peter Hartmann @johannhartmann hartmann@mayflower.de IRC: Freenode, EFNet johann__ Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 19. Und das auch. Johann-Peter Hartmann PHP Developer CTO of 65 developers Likes PHP, Agility, System Administration and Security Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 20. Wer seid Ihr? Developer? Sysadmin? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 21. (Zeit schinden durch Publikumsfragen) Agile? Scrum? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 22. (noch mehr Zeit schinden) Releases / Jahr? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 23. (... ich muss mich beeilen) Cloud? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 24. == Hardware = Software Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 23
  • 25. API Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 24
  • 26. Immer noch Hardware (nur woanders) Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 25
  • 27. 2009 Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 26
  • 28. Hardware = Software = Configuration Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 27
  • 29. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 28
  • 30. Dokumentationsgetrieben DomainSpecificLangu age Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 29
  • 31. PuppetMaster PuppetD Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 30
  • 32. Mach ma hin So Isset. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 31
  • 33. Facter Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 32
  • 34. class web { package {“httpd“: ensure => present } file {“/etc/httpd/conf/httpd.conf“: owner => root, group => root, mode => 664, source => puppet:///modules/apache/httpd.conf, require => Package[“httpd“], } service {“httpd“: ensure => running, enable => true, require => File[“/etc/httpd/conf/httpd.conf“] } } node “web01.mydomain.test“ { include web } Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 33
  • 35. Puppet-Modules • apache, nginx, varnish • php, ruby, tomcat • mysql, postgresql, memcache, ejabberd • heartbeat, dns (gibt eigentlich für fast alles etwas) Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 34
  • 36. Monitoring Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 35
  • 37. Quelle: http://www.puppetlabs.com/puppet/related-projects/dashboard/ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 36
  • 38. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 37
  • 39. Vagra Ich weiss, wie meine Server aussehen. Das Development soll maximal ähnlich sein. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 38
  • 40. Vagrant VirtualBox-basierte automatische Erzeugung von VMs mit Puppet/Chef Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 39
  • 41. Vagrant Voll versioniert! On-Demand Erzeugung Developer-Self- Service Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 40
  • 42. $ gem install vagrant $ vagrant box add maverick64 http://mathie-vagrant- boxes.s3.amazonaws.com/maverick64.box $ mkdir maverick_demo $ cd maverick_demo $ vagrant init maverick64 $ vagrant up $ vagrant ssh vagrant@maverick64:~$ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 41
  • 43. Vagrant-Cluster mit 20 Maschinen lokal? Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 42
  • 44. McCloud Wrapper likeVagrant around Fog Transparent local & cloud usage https://github.com/jedi4ever/ mccloud Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 43
  • 45. Und wenn ich 500 Maschinen will? Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 44
  • 46. mCollective ssh-for-loop on steroids fast management for loads of servers uses puppet/facter, MQ- based Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 45
  • 47. $ mc-package -W "architecture=x86" status apache * [ ============================================================> ] 10 / 10 host01.example.com version = apache-2.2.9-7 host02.example.com version = apache-2.2.9-7 host03.example.com version = apache-2.2.9-7 host04.example.com version = apache-2.2.9-7 host05.example.com version = apache-2.2.9-7 host06.example.com version = apache-2.2.9-7 host07.example.com version = apache-2.2.9-7 host08.example.com version = apache-2.2.9-7 host09.example.com version = apache-2.2.9-7 host10.example.com version = apache-2.2.9-7 ---- package agent summary ---- Nodes: 10 / 10 Versions: 10 * 0.25.5-1.el5 Elapsed Time: 1.03 s Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 46
  • 48. The most dangerous vegetable on earth! Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 47
  • 49. • eigentlich ein BDD-Tool • trotzdem Bestandteil in DevOps • und Bestandteil in Lean Startup • cucumber-nagios • cucumber-puppet Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 50. Feature: Manualsearch In order to find an article As an developer I want to use the search function Scenario: Search for bdd and check resulting page Given I go to "http://it-republik.de/php/" When I fill in "search_itr" with "bdd" And I click "search2" Then I should see "Suche" Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 49
  • 51. Given /^I go to "([^"]*)"$/ do |url| visit url end When /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value| fill_in field, :with => value end When /^I click "([^"]*)"$/ do |button| click_button(button) end Then /^I should see "([^"]*)"$/ do |text| response_body.should include(text) end Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 50
  • 52. johann$ cucumber Feature: Manualsearch In order to find an article As an developer I want to use the search function Scenario: Search for bdd and check resulting page # features/ search.feature:5 Given I go to "http://it-republik.de/php/" # features/ step_definitions/search_steps.rb:1 When I fill in "search_itr" with "bdd" # features/ step_definitions/search_steps.rb:5 And I click "search2" # features/ step_definitions/search_steps.rb:9 Then I should see "Suche" # features/ step_definitions/search_steps.rb:13 1 scenario (1 passed) 4 steps (4 passed) 0m1.615s Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 51
  • 53. Feature: Install inetd In order to serve the web the httpd service must be installed Scenario: Setup httpd Given a node of class “web“ When I compile the catalog Then package “httpd“ should be “installed“ Then there should be a resource “Service[httpd]“ And the service should have “enable“ set to “true“ And State should be “running“ And the service should require “Package[httpd]“ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 52
  • 54. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 53
  • 55. Das verstehe sogar ich! Und ich bin seit 20 Jahren im Marketing! Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 54
  • 56. Unit Tests Acceptance Tests Metrics Coding Style ... you get the idea. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 55
  • 57. ... and even more ... Packaging Releasing Deployment Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 56
  • 58. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 57
  • 59. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 58
  • 60. Wetware Refactoring Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 59
  • 61. Work together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 60
  • 62. Own together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 61
  • 63. Eat together http://www.flickr.com/photos/vilavelosa/ 3815032524/ - und dann? I Mayflower GmbH I 28. Oktober 2010 Kontinuierliche Entiwcklung I 62
  • 64. Plan together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 63
  • 65. Mayflower DevOpsification Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 64
  • 66. DevOpsification of Mayflower (Wetware) 1-2 Admins pro Team –Admin & Development- Aufgaben –Vollzeit dem Team zugeordnet Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 67. DevOpsification of Mayflower (Wetware) Enge Zusammenarbeit mit zentralem Admin Volle Root-Rechte auf Developer- Infrastruktur Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 68. DevOpsification of Mayflower (Software) 1+n Puppet-Master – zentraler Firmenmaster – Teammaster pro Team / Projekt – Firmenmaster ist Startpunkt der Teamkonfiguration Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 69. DevOpsification of Mayflower (Software) Beispiel-Setup: – lokale Developer-VM – CI-Deployment-Server in der DMZ – Staging in der private Cloud – Beta in Amazon-Cloud – Production bei Amazon Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 70. DevOpsification of Mayflower (Software) lokaler GIT- / Gitorious- Server Private Cloud in der DMZ - im Self-Service! Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 71. DevOpsification of Mayflower (Future) Vagrant für das Development Scrum => KanBan Puppet Nagios Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 72. Vielen Dank für Ihre Aufmerksamkeit! Kontakt Johann-Peter Hartmann johann__ @ freenode Mail / Jabber: johann-peter.hartmann@mayflower.de © 2010 Mayflower GmbH

Hinweis der Redaktion

  1. DevOps: \n- Organisationsgeprägt, Wall of Confusion \n- Test, Software und Deployment-geprägt (siehe Sebastian)\n- Kanban / Lean-Startup-Motiviert (habe ich dabei, mach ich aber nicht)\nFazit: Tools mit ein bischen Organisation\n
  2. Warnung: Leute mit empfindlichen Magen haben jetzt die Gelegenheit, den Raum zu verlassen.\n
  3. Meine Geschichte heute beginnt lange vor unserer Zeit. Eine Zeit, in der vieles grundlegend anders war, vieles überraschend und wenige Dinge so wie heute.\n
  4. Konkret geht es etwa um das Jahr 2007. \nJepp, unsere Branche ist da etwas schnelllebiger als die anderen.\nIn unserer Branche haben sich zwei Dinge geändert:\n
  5. Zum einen haben Consultants auf einmal damit angefangen, den ganzen Tag von Wolken zu reden.\n
  6. Zum anderen mussten einige Dinge auf einmal schnell gehen.\n
  7. Die Cloud war erst mal ein typisches IT-Ding. \nWir haben eine Lösung, die ist echt super. \nWir haben bloss kein Problem dafür. \n
  8. Das hat auch den Consultants, die so begeistert von der Cloud erzählt haben, ein Problem gebracht.\n
  9. \n
  10. Nach einer Weile gab es dann auch einen ganzen Haufen Cloudplattformen, die unserer Web-Applikationen unterstützt haben - IaaS per se, manche PaaS explizit und spezialisiert - nur wir wussten nicht, was wir damit machen sollten. Das wussten nur die Consultants und die CIOs\n
  11. Kommen wir zum Thema Geschwindigkeit: \nDinge, die auf einmal schnell gehen müssen. Und damit ist nicht Responsivität oder Request per Minute gemeint, sondern wie schnell die Unternehmen ticken.\n
  12. Die Jungs sind zum Beispiel nicht so schnell\n
  13. Die wiederum sind schnell. Facebook kann Features in wenigen Tagen durchbringen. Es gibt Dinge wie Code von neuen Kollegen, der nach 2 Tagen in Produktion ist. Auf ein paar 100.000 Servern.\n
  14. Die sind auch schnell. Und die sind nicht nur schnell in Features wie Facebook, sondern auch schnell in wachsen.\n
  15. Scalarium: DevOps-Firma, die genau das für Kunden macht.\nPlinga: 16 Mio aktive User\nWooga mit 32 Millionen aktiven Nutzern\nIn 2 Monaten von 100 auf 6 Mio Nutzer (Brain Buddies) \n\n
  16. Wie die das machen, erzähl ich hier heute.\n
  17. \n
  18. \n
  19. \n
  20. Wer von euch arbeitet agil? \nWer von macht SCRUM? \n\n
  21. Wenn Ihr agil seid, wieviele Releases kommen da pro Jahr raus? Wenn es viele sind, wieviele Releases haben Bugs? Welche manuellen Tests werden vor der Produktivnahme gefahren? \n
  22. Wie lange braucht Ihr, um von einer Idee in Produktion zu kommen? \n\n
  23. Hinter der Cloud steht die Idee - speziell bei IaaS - Hardware wie Software zu behandeln.\n
  24. Und zwar ganz konkret. Bei Amazon habe ich genau ein WebFrontend oder eine API. Ob die Server dann auf einem Mainframe emuliere, auf Marsbakterien oder per Hand von sehr schnellen Indern ausrechnen lassen weiss ich nicht.\n
  25. In der Praxis wurde es trotzdem weiter wie Hardware behandelt. Eine Virtualisierung, die nicht bei uns im Keller, sondern eben woanders steht. Nach Maschine abgerechnet und individuell per SSH gepflegt.\n
  26. In 2009, nach also 2 Jahren nachdenken, kamen ein paar clevere Admins zu dem Schluss, dass das vielleicht nicht die richtige Strategie ist. \n
  27. Und da sind sie rausgekommen: Wenn meine Hardware wie Software ist, dann kann ich die auch Automatisieren. Konkret: ich schreibe auf, was ich eigentlich haben will, und dann macht die Automatisierung, dass ich genau das bekomme.\n
  28. Neben Puppet gibt es noch Chef. Ist genauso gut, etwas flexibler, ich kann es nur nicht. Die Prinzipien sind aber die gleichen.\n
  29. Puppet ist eine DSL für Systembeschreibungen. Das beginnt mit der IP-Adresse bishin zur Konfiguration der Software. \n\n
  30. Puppet besteht aus zwei Kernkomponenten - einem Puppetmaster, der als Server irgendwo in der Mitte steht - und einem lokalen PuppetD, der zB alle 30 minuten die Konfiguration anpasst.\n
  31. Puppet sagt an. Der Status wird definiert, und der Puppetd macht, dass der Rechner den dann hat. Egal wie es vorher aussah.\n
  32. Wie macht er das? Über Facter wird der aktuelle Status - Versionen, laufen Services, sind die benötigten Files da - gegen das Puppet-Manifest geprüft. Wenn irgendetwas nicht stimmt, weiss PuppetD aus dem Manifest, wie er es zu machen hat.\n
  33. Und so sieht so eine Beschreibung konkret aus. Wie man sieht: das ist gar nicht so ruby, das tut gar nicht weh.\n\n
  34. \n
  35. Wenn ich eh schon weiss, wie es aussehen soll, und mit facter prüfe, ob das wirklich so aussieht, kann ich ja auch zentral wissen, ob alles ok ist.\n
  36. Das ist das Puppetlabs-Dashboard. Das zeigt mir in diversen Ansichten, wie die kritischen Dienste auf meinen Servern aussehen.\n
  37. Über puppet-Nagios kann ich das ganze sogar in mein vorhandenes Monitoring einbinden.\n
  38. Wenn ich eh alles in Code habe, und weiss, wie meine Server aussehen sollen. Und wenn mein Development genauso aussehen soll wie die Produktion - mit abstrichen - dann kann ich doch einfach die Konfiguration übernehmen?\n
  39. Damit lassen sich VMs automatisch erzeugen. Virtualbox = läuft überall & OpenSource.\nDas ist geil weil ... \n
  40. - jeder Developer kann on Demand welche bekommen\n- das setup das er gerade braucht in Multi-VM-Environments\n- Admin braucht nicht aktiv zu werden. Keine 8 Wochen bis der neue Testrechner bestellt ist :-)\n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. architecture=x86 ist facter-wissen als filter. das geht auch über klassen, services, speichergröße, cloud-zone etc.\n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. Danke an Jimdo für das Beispiel.. \n
  54. \n
  55. Wer setzt Jenkins ein? (sonst erklären)\n
  56. \n
  57. Sebastian wird hierüber noch mehr erzählen. \n
  58. \n
  59. \n
  60. - gemeinsame Standups\n- gegenseitige Teilnahme an den Sprint Plannings & Retros\n- gleiche Räume, wenn möglich\n
  61. Der Code gehört auch den Admins, die Konfiguration und die Verlässlichkeit auch den Developern.\n
  62. Wie bekommt man Respekt hin?\n- Soziale Interaktion, Feiern, Teambuilding\nWenn ich jemand persönliche kenne nehme ich auf seine Interessen Rücksicht\n
  63. Die langfristige Planung wird gemeinsam gemacht. Es werden gemeinsame Ziele definiert, und die Lösungsstrategien gemeinsam erstellt.\n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n