17. Das bin ich.
Johann-Peter Hartmann
@johannhartmann
hartmann@mayflower.de
IRC: Freenode, EFNet
johann__
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
19. Wer seid Ihr?
Developer?
Sysadmin?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011
20. (Zeit schinden durch Publikumsfragen)
Agile?
Scrum?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011
21. (noch mehr Zeit schinden)
Releases / Jahr?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011
22. (... ich muss mich beeilen)
Cloud?
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011
23. ==
Hardware = Software
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 23
Montag, 30. Mai 2011
24. API
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 24
Montag, 30. Mai 2011
25. Immer noch Hardware
(nur woanders)
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 25
Montag, 30. Mai 2011
26. 2009
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 26
Montag, 30. Mai 2011
27. Hardware = Software = Configuration
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 27
Montag, 30. Mai 2011
29. Dokumentationsgetrieben
DomainSpecificLanguage
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 29
Montag, 30. Mai 2011
30. PuppetMaster
PuppetD
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 30
Montag, 30. Mai 2011
31. Mach ma hin
So Isset.
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 31
Montag, 30. Mai 2011
32. Facter
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 32
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
35. Monitoring
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 35
Montag, 30. Mai 2011
38. Vagrant
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
Montag, 30. Mai 2011
39. Vagrant
VirtualBox-basierte
automatische Erzeugung
von VMs mit Puppet/
Chef
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 39
Montag, 30. Mai 2011
40. Vagrant
Voll versioniert!
On-Demand Erzeugung
Developer-Self-Service
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 40
Montag, 30. Mai 2011
41. $ 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
Montag, 30. Mai 2011
42. Vagrant-Cluster mit 20
Maschinen lokal?
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 42
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
44. Und wenn ich 500
Maschinen will?
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 44
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
47. The most dangerous
vegetable on earth!
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 47
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
56. ... and even more ...
Packaging
Releasing
Deployment
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 56
Montag, 30. Mai 2011
59. Wetware
Refactoring
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 59
Montag, 30. Mai 2011
60. Work together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 60
Montag, 30. Mai 2011
61. Own together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 61
Montag, 30. Mai 2011
62. Eat together
http://www.flickr.com/photos/vilavelosa/3815032524/
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 62
Montag, 30. Mai 2011
63. Plan together
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 63
Montag, 30. Mai 2011
64. Mayflower
DevOpsification
Kontinuierliche Entiwcklung - und dann? I Mayflower GmbH I 28. Oktober 2010 I 64
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
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
Montag, 30. Mai 2011
70. DevOpsification of Mayflower (Future)
Vagrant für das Development
Scrum => KanBan
Puppet Nagios
Unternehmensportrait I Mayflower GmbH I January 29, 2010 I
Montag, 30. Mai 2011