Nachdem die großen Plattformen wie Flickr und Facebook vorgemacht haben, wie aus einer kontinuierlichen Entwicklung auch eine kontinuierliche Produktion werden kann, wird das Thema DevOps auch für kleinere LAMP-Projekte relevant. Welche Methoden und Tools für N Deploys pro Tag und Feature für Production-Zeiten von einer Woche sorgen, zeigt dieser Talk.
17. Das bin ich.
Johann-Peter Hartmann
@johannhartmann
hartmann@mayflower.de
IRC: Freenode, EFNet
johann__
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
18. 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
19. Wer seid Ihr?
Developer?
Sysadmin?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
20. (Zeit schinden durch Publikumsfragen)
Agile?
Scrum?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
21. (noch mehr Zeit schinden)
Releases / Jahr?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
22. (... ich muss mich beeilen)
Cloud?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
23. ==
Hardware =
Software
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 23
33. 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“],
notify => Service[“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
34. 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
38. 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
43. 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 43
44. Und wenn ich 500
Maschinen will?
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 44
45. 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
46. $ 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
47. The most dangerous
vegetable on earth!
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 47
48. • 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
49. 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
50. 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
51. 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
52. 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. 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
55. Unit Tests
Acceptance
Tests
Metrics
Coding Style
... you get the
idea.
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 55
56. ... and even
more ...
Packaging
Releasing
Deployment
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 56
59. Wetware
Refactoring
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 59
60. Work together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 60
61. Own together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 61
62. Eat together
http://www.flickr.com/photos/vilavelosa/
3815032524/ - und dann? I Mayflower GmbH I 28. Oktober 2010
Kontinuierliche Entiwcklung I 62
63. Plan
together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 63
64. Mayflower
DevOpsification
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 64
65. 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
66. DevOpsification of Mayflower (Wetware)
Enge Zusammenarbeit mit zentralem
Admin
Volle Root-Rechte auf Developer-
Infrastruktur
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
67. 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
68. 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
69. 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
70. 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
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
Warnung: Leute mit empfindlichen Magen haben jetzt die Gelegenheit, den Raum zu verlassen.\n
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
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
Zum einen haben Consultants auf einmal damit angefangen, den ganzen Tag von Wolken zu reden.\n
Zum anderen mussten einige Dinge auf einmal schnell gehen.\n
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
Das hat auch den Consultants, die so begeistert von der Cloud erzählt haben, ein Problem gebracht.\n
\n
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.\n
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
Die Jungs sind zum Beispiel nicht so schnell\n
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
Die sind auch schnell. Und die sind nicht nur schnell in Features wie Facebook, sondern auch schnell in wachsen.\n
Scalarium: DevOps-Firma, die genau das für Kunden macht.\n
Wie die das machen, erzähl ich hier heute.\n
\n
\n
\n
Wer von euch arbeitet agil? \nWer von macht SCRUM? \n\n
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
Wie lange braucht Ihr, um von einer Idee in Produktion zu kommen? \n\n
Hinter der Cloud steht die Idee - speziell bei IaaS - Hardware wie Software zu behandeln.\n
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
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
In 2009, nach also 2 Jahren nachdenken, kamen ein paar clevere Admins zu dem Schluss, dass das vielleicht nicht die richtige Strategie ist. \n
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
Neben Puppet gibt es noch Chef. Ist genauso gut, etwas flexibler, ich kann es nur nicht. Die Prinzipien sind aber die gleichen.\n
Puppet ist eine DSL für Systembeschreibungen. Das beginnt mit der IP-Adresse bishin zur Konfiguration der Software. \n\n
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
Puppet sagt an. Der Status wird definiert, und der Puppetd macht, dass der Rechner den dann hat. Egal wie es vorher aussah.\n
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
Und so sieht so eine Beschreibung konkret aus. Wie man sieht: das ist gar nicht so ruby, das tut gar nicht weh.\n\n
\n
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
Das ist das Puppetlabs-Dashboard. Das zeigt mir in diversen Ansichten, wie die kritischen Dienste auf meinen Servern aussehen.\n
Über puppet-Nagios kann ich das ganze sogar in mein vorhandenes Monitoring einbinden.\n
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
Damit lassen sich VMs automatisch erzeugen. Virtualbox = läuft überall & OpenSource.\nDas ist geil weil ... \n
- 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
\n
\n
\n
\n
\n
architecture=x86 ist facter-wissen als filter. das geht auch über klassen, services, speichergröße, cloud-zone etc.\n
\n
\n
\n
\n
\n
\n
Danke an Jimdo für das Beispiel.. \n
\n
Wer setzt Jenkins ein? (sonst erklären)\n
\n
Sebastian wird hierüber noch mehr erzählen. \n
\n
\n
- gemeinsame Standups\n- gegenseitige Teilnahme an den Sprint Plannings & Retros\n- gleiche Räume, wenn möglich\n
Der Code gehört auch den Admins, die Konfiguration und die Verlässlichkeit auch den Developern.\n
Wie bekommt man Respekt hin?\n- Soziale Interaktion, Feiern, Teambuilding\nWenn ich jemand persönliche kenne nehme ich auf seine Interessen Rücksicht\n
Die langfristige Planung wird gemeinsam gemacht. Es werden gemeinsame Ziele definiert, und die Lösungsstrategien gemeinsam erstellt.\n