SlideShare una empresa de Scribd logo
1 de 56
DevOps für PHP
International PHP Conference
Spring Edition 2011




                               © 2010 Mayflower GmbH
Agenda



• Warum dieses DevOps überhaupt?
• Wetware-Refactoring
• Operations-Refactoring
• Bewertung & Spassfaktur für uns
  PHPler




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




                Developer?
                Sysadmin?




                         Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
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 55 developers
Likes PHP, Agility, System
Administration and
Security




                             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
(in Wahrheit wirds eh wieder knapp am




                  Tage im Mittel für
                  Idee ->
                  Produktion?


                               Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
Waterfallization of Scrum- wie gemein ist das




http://dev2ops.org/blog/2010/2/22/what-is-
devops.html                                  Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
„It‘s not our
machines, it‘s
 your Code!“



  Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 10
„It‘s not our code,
           it‘s your
         machines“



       Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 11
Betrieb:

    Stabilität und
   Zuverlässigkeit



           Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 12
Development:

Neue Funktionalität
   und Wandel



        Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 13
http://dev2ops.org/blog/2010/2/22/what-is-
devops.html                       Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 14
http://dev2ops.org/blog/2010/2/22/what-is-
devops.html                       Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 15
Wetware
Refactoring



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




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




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




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




           Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 20
Tool
Refactoring



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

                             ... you get the
                             idea.




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

                             Packaging
                             Releasing
                             Deployment




Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 24
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 25
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 26
Vagrant


Wer benutzt eine
VM zur
Entwicklung?


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


VirtualBox-basierte
automatische
Erzeugung von VMs


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


On-Demand
Erzeugung
Developer-Self-
Service
    Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 29
Vagrant


Chef/Puppet-
Integration
Einfach!


   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 30
$ 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 31
Vagrant


Configuration is
Code!
- Vagrant Box
- Konfiguration
      Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 32
Mccloud
    Wrapper around
    Vagrant and Fog

    Transparent local &
    cloud usage

                                    https://github.com/jedi4ever/
                                    mccloud
          Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 33
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 34
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 35
• Dokumentation = Konfiguration
• DSL für Systemkonfiguration
• Server „puppetmaster“ -
  serverdaemon
• Client „puppetd“
 – runs as root
 – polls every few minutes
 – configures everything as needed
 – starts services etc
                  Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 36
• SSL als Verschlüsselung
 – bringt eine eigene CA mit


• Nutzt die vorhandenen Tools:
 – apt, RPM, gem, (noch kein PEAR)
• Facter: Tool um Informationen über
  das System zu sammeln


                   Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 37
class web {
  package {“httpd“:
    ensure => present,
    notify => Service[“httpd“]
  }

    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 38
Quelle: http://www.puppetlabs.com/puppet/related-projects/dashboard/
                                 Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 39
Puppet-Modules
• apache, nginx, varnish
• php, ruby, tomcat
• mysql, postgresql, memcache,
  ejabberd
• apt, zypper, gem
• heartbeat, dns



                Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 40
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 41
$       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 42
The most dangerous
vegetable on earth!
           Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 43
• 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 45
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 46
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 47
Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 48
Das verstehe sogar ich!
Und ich bin seit 20
Jahren im Marketing!




                          Kontinuierliche Entiwcklung - und dann?   I   Mayflower GmbH   I   28. Oktober 2010   I 49
Mehr Spass mit Devops



• Behavior-Driven Infrastructure
    – nagios-cucumber
      „SchXXX auf Ping, funktioniert die
      Anwendung?“
    – MCollective mit Cucumber
      • BDD-Testing von Cloud-Konfiguration
•



                                Unternehmensportrait   I   Mayflower GmbH   I   January 29, 2010   I
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

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

Más contenido relacionado

Destacado

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
 
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
 
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
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesJohann-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
 

Destacado (20)

Keynote ipc mainz
Keynote ipc mainzKeynote ipc mainz
Keynote ipc mainz
 
Drupal devdayskeynote
Drupal devdayskeynoteDrupal devdayskeynote
Drupal devdayskeynote
 
Surviving Architecture
Surviving ArchitectureSurviving Architecture
Surviving Architecture
 
Realtime web
Realtime webRealtime web
Realtime web
 
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
 
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
 
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
 
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
 
Web 2.0 revisited
Web 2.0 revisitedWeb 2.0 revisited
Web 2.0 revisited
 
Erfolgreiche rewrites
Erfolgreiche rewritesErfolgreiche rewrites
Erfolgreiche rewrites
 
Leadership in der IT
Leadership in der ITLeadership in der IT
Leadership in der IT
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektes
 
Performancemessung, jetzt in echt
Performancemessung, jetzt in echtPerformancemessung, jetzt in echt
Performancemessung, jetzt in echt
 
Das Ende der Karriere
Das Ende der KarriereDas Ende der Karriere
Das Ende der Karriere
 
Agile versus Management WJAX 2014
Agile versus Management WJAX 2014Agile versus Management WJAX 2014
Agile versus Management WJAX 2014
 
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
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Presentation zen mayflower
Presentation zen mayflowerPresentation zen mayflower
Presentation zen mayflower
 

Similar a Dev ops für php

DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenFotiosKaramitsos
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous Delivery
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous DeliveryBASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous Delivery
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous DeliveryMarc Müller
 
Whitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementWhitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementNico Orschel
 
Whitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementWhitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementNico Orschel
 
Präsentation plug in development
Präsentation plug in developmentPräsentation plug in development
Präsentation plug in developmentxxtesaxx
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Nico Orschel
 
Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)Adam Sandman
 
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
 
Git für Fortgeschrittene
Git für FortgeschritteneGit für Fortgeschrittene
Git für FortgeschritteneMayflower GmbH
 
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick LobacherExtbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick Lobacherdie.agilen GmbH
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Torben Knerr
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alertinggeekQ
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 

Similar a Dev ops für php (20)

DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous Delivery
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous DeliveryBASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous Delivery
BASTA Spring 2018 - DevOps mit TFS: Releasepipelines und Continuous Delivery
 
Forms 12c und der Oracle SB
Forms 12c und der Oracle SBForms 12c und der Oracle SB
Forms 12c und der Oracle SB
 
Ec13 xpages-basic
Ec13 xpages-basicEc13 xpages-basic
Ec13 xpages-basic
 
Whitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementWhitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab Management
 
Whitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementWhitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab Management
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
Präsentation plug in development
Präsentation plug in developmentPräsentation plug in development
Präsentation plug in development
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
 
Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)
 
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?
 
Git für Fortgeschrittene
Git für FortgeschritteneGit für Fortgeschrittene
Git für Fortgeschrittene
 
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick LobacherExtbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
 
20110406 activiti april
20110406 activiti april20110406 activiti april
20110406 activiti april
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alerting
 
20110223 activiti
20110223 activiti20110223 activiti
20110223 activiti
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 

Más de Johann-Peter Hartmann

Más de Johann-Peter Hartmann (16)

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
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
Von Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenVon Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und Systemadministratoren
 
DevOps jenseits der Tools
DevOps jenseits der ToolsDevOps jenseits der Tools
DevOps jenseits der Tools
 
Surviving Complexity
Surviving ComplexitySurviving Complexity
Surviving Complexity
 
Java script security for java developers
Java script security for java developersJava script security for java developers
Java script security for java developers
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
Serverside Cryptoparty
Serverside CryptopartyServerside Cryptoparty
Serverside Cryptoparty
 
Wetware Bugs and Refactoring
Wetware Bugs and RefactoringWetware Bugs and Refactoring
Wetware Bugs and Refactoring
 
JavaScript und Security - JavaScript Days 2013 Berlin
JavaScript und Security - JavaScript Days 2013 BerlinJavaScript und Security - JavaScript Days 2013 Berlin
JavaScript und Security - JavaScript Days 2013 Berlin
 
Management brainfucks
Management brainfucksManagement brainfucks
Management brainfucks
 
JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?
JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?
JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?
 
Profiling for Grown-Ups
Profiling for Grown-UpsProfiling for Grown-Ups
Profiling for Grown-Ups
 

Dev ops für php

  • 1. DevOps für PHP International PHP Conference Spring Edition 2011 © 2010 Mayflower GmbH
  • 2. Agenda • Warum dieses DevOps überhaupt? • Wetware-Refactoring • Operations-Refactoring • Bewertung & Spassfaktur für uns PHPler Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 3. Wer seid Ihr? Developer? Sysadmin? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 4. Das bin ich. Johann-Peter Hartmann @johannhartmann hartmann@mayflower.de IRC: Freenode, EFNet johann__ Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 5. Und das auch. Johann-Peter Hartmann PHP Developer CTO of 55 developers Likes PHP, Agility, System Administration and Security Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 6. (Zeit schinden durch Publikumsfragen) Agile? Scrum? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 7. (noch mehr Zeit schinden) Releases / Jahr? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 8. (in Wahrheit wirds eh wieder knapp am Tage im Mittel für Idee -> Produktion? Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 9. Waterfallization of Scrum- wie gemein ist das http://dev2ops.org/blog/2010/2/22/what-is- devops.html Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 10. „It‘s not our machines, it‘s your Code!“ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 10
  • 11. „It‘s not our code, it‘s your machines“ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 11
  • 12. Betrieb: Stabilität und Zuverlässigkeit Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 12
  • 13. Development: Neue Funktionalität und Wandel Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 13
  • 14. http://dev2ops.org/blog/2010/2/22/what-is- devops.html Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 14
  • 15. http://dev2ops.org/blog/2010/2/22/what-is- devops.html Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 15
  • 16. Wetware Refactoring Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 16
  • 17. Work together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 17
  • 18. Own together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 18
  • 19. Eat together http://www.flickr.com/photos/vilavelosa/ 3815032524/ - und dann? I Mayflower GmbH I 28. Oktober 2010 Kontinuierliche Entiwcklung I 19
  • 20. Plan together Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 20
  • 21. Tool Refactoring Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 21
  • 22. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 22
  • 23. Unit Tests Acceptance Tests Metrics Coding Style ... you get the idea. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 23
  • 24. ... and even more ... Packaging Releasing Deployment Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 24
  • 25. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 25
  • 26. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 26
  • 27. Vagrant Wer benutzt eine VM zur Entwicklung? Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 27
  • 28. Vagrant VirtualBox-basierte automatische Erzeugung von VMs Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 28
  • 29. Vagrant On-Demand Erzeugung Developer-Self- Service Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 29
  • 30. Vagrant Chef/Puppet- Integration Einfach! Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 30
  • 31. $ 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 31
  • 32. Vagrant Configuration is Code! - Vagrant Box - Konfiguration Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 32
  • 33. Mccloud Wrapper around Vagrant and Fog Transparent local & cloud usage https://github.com/jedi4ever/ mccloud Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 33
  • 34. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 34
  • 35. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 35
  • 36. • Dokumentation = Konfiguration • DSL für Systemkonfiguration • Server „puppetmaster“ - serverdaemon • Client „puppetd“ – runs as root – polls every few minutes – configures everything as needed – starts services etc Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 36
  • 37. • SSL als Verschlüsselung – bringt eine eigene CA mit • Nutzt die vorhandenen Tools: – apt, RPM, gem, (noch kein PEAR) • Facter: Tool um Informationen über das System zu sammeln Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 37
  • 38. class web { package {“httpd“: ensure => present, notify => Service[“httpd“] } 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 38
  • 39. Quelle: http://www.puppetlabs.com/puppet/related-projects/dashboard/ Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 39
  • 40. Puppet-Modules • apache, nginx, varnish • php, ruby, tomcat • mysql, postgresql, memcache, ejabberd • apt, zypper, gem • heartbeat, dns Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 40
  • 41. 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 41
  • 42. $ 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 42
  • 43. The most dangerous vegetable on earth! Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 43
  • 44. • 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
  • 45. 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 45
  • 46. 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 46
  • 47. 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 47
  • 48. Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 48
  • 49. Das verstehe sogar ich! Und ich bin seit 20 Jahren im Marketing! Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 49
  • 50. Mehr Spass mit Devops • Behavior-Driven Infrastructure – nagios-cucumber „SchXXX auf Ping, funktioniert die Anwendung?“ – MCollective mit Cucumber • BDD-Testing von Cloud-Konfiguration • Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 51. 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
  • 52. DevOpsification of Mayflower (Wetware) Enge Zusammenarbeit mit zentralem Admin Volle Root-Rechte auf Developer- Infrastruktur Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 53. 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
  • 54. 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
  • 55. DevOpsification of Mayflower (Software) lokaler GIT- / Gitorious- Server Eucalyptus-Cloud in der DMZ - im Self-Service! Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
  • 56. DevOpsification of Mayflower (Future) Vagrant für das Development Scrum => KanBan Puppet Nagios Unternehmensportrait I Mayflower GmbH I January 29, 2010 I

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. Wer von euch arbeitet agil? \nWer von macht SCRUM? \n\n
  7. 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
  8. Wie lange braucht Ihr, um von einer Idee in Produktion zu kommen? \n\n
  9. Wenn man in die PHP-Welt schaut, findet das Development bei den Entwicklern meistens kontinuierliche statt, dh. die Software läuft immer oder zumindest meistens - lokal beim Entwickler.\nScrum taktet das ganze auf den Sprint, an dessen Ende immer das sogenannte „Potentially shippable Product“ stehen sollte. \nDer nachgelagerte Prozess sorgt dafür, dass nicht jede Version per se online geht - sondern nur die, die stabil, getestet und verlässlich werden.\n
  10. Die Jungs vom Betrieb wissen Bescheid: Schuld sind die Entwickler. \n,Es sind nicht unsere Maschinen oder Setups, es ist Dein Code, der hier nicht funktioniert.“\n
  11. Spiegelbildlich gilt das gleiche: „Es ist nicht unser Code, es sind Deine Maschinen!“\n
  12. Der Betrieb stellt Stabilität und Verlässlichkeit in den Vordergrund. Er sorgt dafür, dass alles rund läuft, keine Fehler zum Kunden passieren und die Zugriffe performant und zuverlässig kommen. Fehler werden nicht gerne gesehen, schließlich bedeuten sie Arbeit am Wochenende.\n
  13. Die Developer fokussieren währenddessen auf neue Features - schliesslich ist es das, für das Sie Geld bekommen. Für sie - wie auch für den Businesskunden - steht vor allem der Wandel im Vordergrund, mit dem sich Geld verdienen lässt.\n
  14. Wir haben es also mit zwei grundlegend unterschiedlichen Interessen zu tun. Der Administrator möchte jede Änderung der Software vermeiden, weil sein Chef von Ihm verlangt, die Systeme stabil zu halten. Der Developer möchte Änderung produzieren, weil sein Chef von Ihm neue Features erwartet. Dazu kommen sauber getrennte Verantwortlichkeiten: Der Administrator hat sich in der Programmierung nicht einzumischen, der Developer nicht in die Administration. \n
  15. Genau dieses Thema wird von der DevOps-Bewegung aufgegriffen. Hier wurde ein Toolset erarbeitet, dass eine schnelle Umsetzung von Themen und eine optimale Unterstützung des Business durch Ops und Development ermöglicht. Aber wie erreicht man das? \n
  16. \n
  17. - gemeinsame Standups\n- gegenseitige Teilnahme an den Sprint Plannings & Retros\n- gleiche Räume, wenn möglich\n
  18. Der Code gehört auch den Admins, die Konfiguration und die Verlässlichkeit auch den Developern.\n
  19. Wie bekommt man Respekt hin?\n- Soziale Interaktion, Feiern, Teambuilding\nWenn ich jemand persönliche kenne nehme ich auf seine Interessen Rücksicht\n
  20. Die langfristige Planung wird gemeinsam gemacht. Es werden gemeinsame Ziele definiert, und die Lösungsstrategien gemeinsam erstellt.\n
  21. DevOps ist so definiert von der eigenen Toolwelt, dass viele Leute es als Kern sehen. Und es gibt in der Tat ein paar Sachen dabei, die richtig Spass machen.\n
  22. Vorsicht - die Tools sind meist aus der Ruby-Welt. \nAber: DSL, kein Ruby-Knowhow nötigMayflower: Ruby für Administration, PHP für WebApps.\n
  23. \n
  24. \n
  25. Sebastian wird hierüber noch mehr erzählen. \n
  26. \n
  27. Wir bei Mayflower machen das so. \nBenutzt das ganze Team die gleiche VM? \nWie viele unterschiedliche Maschinen sind in Produktion?\nWie werden Updates gehandhabt? \nWie reproduziert man den alten Stand der Software? Und wie den der Konfiguration? \n
  28. Damit lassen sich VMs automatisch erzeugen. Das ist geil weil ... \n
  29. - 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
  30. \n
  31. \n
  32. Alle Konfiguration findet in Code statt. \n- ein Verzeichnis mit den Vagrant-Konfigurationen\n- versioniert mit der Software \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n