osdc 2014: ole michaelis & sönke rümpler: make it solid - software architecture for system...
DESCRIPTION
Starting with Chef or Puppet as a System Administrator will lead you to a problem where you are not sure what’s the best solution of a problem in terms of software architecture. We will give you a brief overview of general well known and battle tested software patterns, which also applies to infrastructure management code. In addition, we‘ll also show Antipatterns, and best practices.TRANSCRIPT
![Page 1: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/1.jpg)
Ole Michaelis & Sönke Ruempler | Jimdo
Make it SOLIDSoftware Architecture for System Administrators
![Page 2: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/2.jpg)
OSDC 2014
Ole Michaelis“Open Source Rockstar”
@CodeStarsgithub.com/nesQuick
codestars.eu
![Page 3: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/3.jpg)
OSDC 2014
Sönke Ruempler
“Chief Trolling Officer”
@s0enkegithub.com/s0enke
ruempler.eu
![Page 4: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/4.jpg)
OSDC 2014
Jimdo
![Page 5: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/5.jpg)
OSDC 2014
because infrastructure development is neither a Jenga game!
S.O.L.I.D
![Page 6: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/6.jpg)
OSDC 2014
a little poll!
http://images.fineartamerica.com/images-medium-large/live-long-mr-spock-tobias-woelki.jpg
![Page 7: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/7.jpg)
OSDC 2014
![Page 8: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/8.jpg)
OSDC 2014
S O L I D
![Page 9: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/9.jpg)
OSDC 2014
Adev/ops
story
Oleas
Junior Admin
SönkeasDr. Software
![Page 10: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/10.jpg)
OSDC 2014
the basics
![Page 11: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/11.jpg)
OSDC 2014
configuration management
IdempotentDeclarativeConvergent
Abstract
![Page 12: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/12.jpg)
OSDC 2014
software architecture
VS.36 years
>2000 years
![Page 13: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/13.jpg)
OSDC 2014
![Page 14: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/14.jpg)
OSDC 2014
node web-1 {
$role = 'web-app-a'
$has_apache = true;
include php5
}
node web-2 {
$role = 'web-app-b'
$has_fcgi=true
include php5
}
# has both enabled, but needs a special config
node web-3 {
$role = 'web-app-c'
$has_fcgi=true
$has_apache=true
include php5
}
Web App 1
Web App 2
Web App 3
![Page 15: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/15.jpg)
OSDC 2014
class php5 {
if ($::has_fcgi)
package { 'php5-cli' : ensure => installed }
}
if ($::has_apache) {
package { 'php5-apache' : ensure => installed }
}
if ($::role == 'web-app-c')
package { 'php5-web-app-c-special-module' }
file { '/etc/php5/php.ini' :
source => 'puppet:///modules/php5/php.ini-web-app-c'
}
}
}
Global variable!
Out of Context!
No abstraction
![Page 16: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/16.jpg)
OSDC 2014
class php5(
$has_fcgi = false,
$has_apache = false,
$role = undef
) {
if ($has_fcgi)
package { 'php5-cli' : ensure => installed }
}
if ($has_apache) {
package { 'php5-apache' : ensure => installed }
}
if ($role == 'web-app-c') {
package { 'php5-web-app-c-special-module' }
file { '/etc/php5/php.ini' :
source => 'puppet:///modules/php5/php.ini-web-app-c',
require => Package[php-fcgi]
}
}
}
![Page 17: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/17.jpg)
OSDC 2014
node 'web-1' {
$role = 'web-app-a'
$has_apache = true
class { 'php5' :
has_apache => true,
role => 'web-app-a'
}
}
node 'web-2' {
$role = 'web-app-b'
$has_fcgi = true
class { 'php5' :
has_fcgi => true,
role => 'web-app-b'
}
}
Injection!
Injection!
![Page 18: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/18.jpg)
OSDC 2014
Would you solder a lamp directly to the electrical wiring in a
wall?
Dependency Inversion
![Page 19: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/19.jpg)
OSDC 2014
![Page 20: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/20.jpg)
OSDC 2014
class php5(
$has_fcgi = false,
$has_apache = false,
$role = undef
) {
if ($has_fcgi)
package { 'php5-cli' : ensure => installed }
}
if ($has_apache) {
package { 'php5-apache' : ensure => installed }
}
if ($role == 'web-app-c') {
package { 'php5-web-app-c-special-module' }
file { '/etc/php5/php.ini' :
source => 'puppet:///modules/php5/php.ini-web-app-c'
require => Package[php-fcgi]
}
}
}
![Page 21: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/21.jpg)
OSDC 2014
Stuff tends to get big
Beware of god classes!
![Page 22: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/22.jpg)
OSDC 2014
if ($lighttpd) { package { 'php5-cgi': } configdir { '/etc/php5/cgi': require => Package['php5-cgi'] } configdir { '/etc/php5/cgi/conf.d': require => Package['php5-cgi'] } if ($testserver) { configfile { '/etc/php5/cgi/php.ini': sourcename => 'php5/cgi/php.ini-testserver', require => Package['php5-cgi'] } } else { if ($cms ) { configfile { '/etc/php5/cgi/php.ini': sourcename => 'php5/cgi/php.ini-cms', require => Package['php5-cgi'] } } else { if ($mgmt ) { configfile { '/etc/php5/cgi/php.ini': sourcename => 'php5/cgi/php.ini-mgmt', require => Package['php5-cgi'] } } else { if ($lc ) { configfile { '/etc/php5/cgi/php.ini': sourcename => 'php5/cgi/php.ini-lc.jimdo.com', require => Package['php5-cgi'] } } else { configfile { '/etc/php5/cgi/php.ini': sourcename => 'php5/cgi/php.ini', require => Package['php5-cgi'] } } } } } configfile { '/etc/php5/cgi/conf.d/pdo.ini': sourcename => 'php5/cgi/conf.d/pdo.ini', require => Package['php5-cgi'] } }
![Page 23: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/23.jpg)
OSDC 2014
![Page 24: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/24.jpg)
OSDC 2014
?
![Page 25: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/25.jpg)
OSDC 2014
![Page 26: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/26.jpg)
OSDC 2014
rspec-puppet
test-kitchen
![Page 27: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/27.jpg)
OSDC 2014
![Page 28: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/28.jpg)
OSDC 2014
describe :node => 'web-1' do it { should contain_package('php5-fcgi') }end
describe :node => 'web-2' do it { should contain_package('php5-apache2') }end
describe :node => 'web-3' do it { should contain_package('php5-fcgi') } it { should contain_package('php5-apache2') }end
Test php5 class:Install Package
?
![Page 29: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/29.jpg)
OSDC 2014
describe :class => 'php5::fcgi' do it { should contain_package('php5-cli') }end
describe :class => 'php5::apache' do it { should contain_package('php5-apache2') }end
class php5::fgci { package { 'php5-cgi' : ensure => installed }} class php5::apache { package { 'php5-apache' : ensure => installed }}
![Page 30: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/30.jpg)
OSDC 2014
Just because you can, doesn’t mean you
should!
Single Responsibility
![Page 31: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/31.jpg)
OSDC 2014
describe :node => 'web-1' do it { should include_class('php5::fcgi') } it { should contain_package('php5-fcgi') }end describe :node => 'web-2' do it { should include_class('php5::apache') } it { should contain_package('php5-apache2') }end
node web-1 { include php5::apache} node web-2 { include php5::fcgi}
Tests
Code
![Page 32: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/32.jpg)
OSDC 2014
![Page 33: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/33.jpg)
OSDC 2014
“programs […] are changed by adding new code, rather than by changing
existing code”
Open ClosePrinciple
![Page 34: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/34.jpg)
OSDC 2014
![Page 35: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/35.jpg)
OSDC 2014
new requirements...now web app 1 needs a second
node
node web-1 { $role = 'web-app-a' include php5::apache}
node web-1a { $role = 'web-app-a' include php5::apache}
![Page 36: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/36.jpg)
OSDC 2014
![Page 37: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/37.jpg)
OSDC 2014
![Page 38: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/38.jpg)
OSDC 2014
class role::web-app-a { include php5::apache}
node web-1 { include role::web-app-a} node web-1a { include role::web-app-a}
Our new role!
And nodes just include it!
![Page 39: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/39.jpg)
OSDC 2014
>
![Page 40: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/40.jpg)
OSDC 2014
![Page 41: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/41.jpg)
OSDC 2014
?class php5::fcgi($role = undef) {
if ($role == 'web-app-c') {
package { 'php5-web-app-c-special-module' }
file { '/etc/php5/php.ini' :
source =>
'puppet:///modules/php5/php.ini-web-app-c',
require => Package[php-fcgi]
}
}
}
![Page 42: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/42.jpg)
OSDC 2014
Don’t call us,we call you!
Hollywood Principle
![Page 43: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/43.jpg)
OSDC 2014
class role::web-app-c::special-php-stuff { package { 'php5-web-app-c-special-module' } file { '/etc/php5/php.ini' : source => 'puppet:///modules/php5/php.ini-web-app-c' }}
1. Split out the special case into its own class.
![Page 44: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/44.jpg)
OSDC 2014
class php5::fcgi($include_after_package_install = undef) { package { 'php5-fcgi' : ensure => installed } if ($include_after_package_install) include $include_after_package_install Package['php5-fcgi'] -> Class[$include_after_package_install] }}
2. Make the special case pluggable and reusable.
2a. And name it abstract.
![Page 45: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/45.jpg)
OSDC 2014
class role::web-app-c { include php5::apache class { 'php5::fcgi' : include_after_package_install => 'profile::web-app-c::special-php-stuff' }}
3. Pass the special case as dependency in our web-app-c.
![Page 46: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/46.jpg)
OSDC 2014
![Page 47: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/47.jpg)
OSDC 2014
class profile::web-app-c::special-php-stuff { package { 'php5-web-app-c-special-module' } file { '/etc/php5/php.ini' : source => 'puppet:///modules/php5/php.ini-web-app-c' }} ?
![Page 48: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/48.jpg)
OSDC 2014
define php5::specialconfig( $ensure = present, $sapi, $module, $key, $value, $section = undef, $path = '/etc/php5/%s/conf.d/%s.ini') { ini_setting { $title: ensure => $ensure, path => sprintf($path, $sapi, $module), section => $section, setting => $key, value => $value, require => Package["php5-${sapi}"] }}
![Page 49: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/49.jpg)
OSDC 2014
![Page 50: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/50.jpg)
OSDC 2014
?
![Page 51: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/51.jpg)
OSDC 2014
“puppet separate code and data”
I’m feeling lucky
![Page 52: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/52.jpg)
OSDC 2014
# /etc/puppet/hieradata/web1.yaml---classes:- profile::web-app-a # /etc/puppet/hieradata/web1a.yaml---classes:- profile::web-app-a # /etc/puppet/hieradata/web2.yaml---classes:- profile::web-app-c # /etc/puppet/hieradata/web3.yaml---classes:- profile::web-app-c
puppet-hiera
example in YAML
![Page 53: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/53.jpg)
OSDC 2014
node default { hiera_include('classes')}
node web-1 { include role::web-app-a} node web-1a { include role::web-app-a}
node web-2 { include role::web-app-b}
node web-3 { include role::web-app-c}
![Page 54: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/54.jpg)
OSDC 2014
hiera
AWS/Cloudformation LDAP
DNSyour selfwritten stuff
![Page 55: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/55.jpg)
OSDC 2014
![Page 56: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/56.jpg)
OSDC 2014
![Page 57: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/57.jpg)
OSDC 2014
![Page 58: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/58.jpg)
OSDC 2014
What about I and L
in SOLID?
![Page 59: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/59.jpg)
OSDC 2014
You want me to plug this in, where?
Interface Segregation
![Page 60: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/60.jpg)
OSDC 2014
If it looks like a duck, quacks like a duck, but
need batteries - you probably have the wrong abstraction!
Liskov Substitution
![Page 61: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/61.jpg)
OSDC 2014
S O L I D
![Page 62: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/62.jpg)
OSDC 2014
![Page 63: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/63.jpg)
OSDC 2014
Structure your code!Node
ProfileProfilesRole ProfileModules
Resources
![Page 64: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/64.jpg)
OSDC 2014
Puppet forge
puppet module registry
![Page 65: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/65.jpg)
OSDC 2014
Librarian Puppetr10k
Berkshelf (chef)
![Page 67: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/67.jpg)
OSDC 2014
sandboxeddevelopment
https://github.com/mlafeldt/skeleton-cookbookhttps://github.com/Jimdo/puppet-skeleton
![Page 68: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/68.jpg)
OSDC 2014
server spechttp://serverspec.org/
beaker(puppet)
https://github.com/puppetlabs/beaker
![Page 69: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/69.jpg)
OSDC 2014
Thank you!
![Page 70: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/70.jpg)
OSDC 2014
Questions?
![Page 71: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/71.jpg)
OSDC 2014
*I ’m just a blank slide*
![Page 72: OSDC 2014: Ole Michaelis & Sönke Rümpler: Make it SOLID - Software Architecture for System Administrators](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f5c6bb4c905c8088b4717/html5/thumbnails/72.jpg)
OSDC 2014
Sources• http://www.slideshare.net/PuppetLabs/garethrushgrove-puppetconf• http://www.slideshare.net/PuppetLabs/alessandro-franceschi-new• https://github.com/jedi4ever/stop-the-fork• http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-
pictures/• https://speakerdeck.com/jfryman/refactoring-puppet• http://www.clker.com/cliparts/e/2/a/d/1206574733930851359Ryan_Taylor_Green_Tick.svg.med.
png• http://www.craigdunn.org/2012/05/239/• http://cdn.slashgear.com/wp-content/uploads/2012/10/google-datacenter-tech-13.jpg• http://deviq.com/Media/Default/Article/Dont-Call-Us-Well-Call-You-Jun-2013.png• http://www.timeshighereducation.co.uk/Pictures/web/g/q/g/copy_paste_keyboard_button_450.jpg• http://sanremo.com.au/wp-content/uploads/2013/05/lasagna.jpg• http://4.bp.blogspot.
com/_9kQQgQD35rY/SaV5p8YBGhI/AAAAAAAAAkg/HOvlhIo7yGI/s400/06_Red_Green_Refactor.JPG
• http://www.thelolshop.com/wp-content/uploads/2012/11/20121126-101937.jpg•