SlideShare a Scribd company logo
BUILDOUT
  ALLES IM GRIFF




      WEBMEISTEREI
      HARALD FRIESSNEGGER
      PLONE KONFERENZ MÜNCHEN, 2012
WORUM GEHT'S?
  Template




                INTRO
WORUM GEHT'S?
  Tipps und Tools




                    INTRO
WORUM NICHT?
  Totale Automatisierung




                           INTRO
KONFIGURATIONSMGMT (SCM)

  ARBEITEN IM TEAM


  PERFORMANCE

  MONITORING

  WARTUNG
                           AGENDA
DAS SCM PROBLEM
   x Module * y Versionen

 $ bin/buildout [­N]

 Error: There is a version conflict.
 We already have: zope.component 3.5.1
 but zope.browserresource 3.12.0 requires 
 'zope.component>=3.8.0'.



                        ENTWICKLUNG > KONFIG. MANAGEMENT
DIE LÖSUNG
    Versionen pinnen

 [buildout]
 extends =
     http://dist.plone.org/release/4.1.4/versions.cfg
     http://good­py.appspot.com/release/plone.app.theming/1.0b9

 [versions]
 my.theme = 1.2
 my.type = 0.7
 collective.viewlet.links = 1.0
 collective.prettyphoto = 0.4.4


                       ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
NICHT VERGESSEN
  buildout.dumppickedversions
   [buildout]

   extensions =
       buildout.dumppickedversions


   $ bin/buildout
   ...
   *************** PICKED VERSIONS ****************
   [versions]
   some.package = 0.9
   setuptools = 0.6rc11
   ...

                    ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
IMMER UP TO DATE
    z3c.checkversions

 frisi@mbp:~$ bin/checkversions ­v versions.cfg | grep was
 jarn.mkrelease=3.5 # was: 3.0.10
 collective.recipe.backup=2.4 # was: 1.7
 collective.recipe.supervisor=0.17 # was: 0.14
 ...




                       ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
WENNS UM DIE WURST GEHT
  ...braucht man Eier


   recipe = infrae.subversion
   as_eggs = true
   urls =
       https://my.repos/my.theme/tags/1.2/ my.theme




             ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
JEDES MAL EIN RELEASE?
   Puh!
 $ vi setup.py; vi History.txt
 $ svn ci ­m 'prepare release'
 $ svn cp . https://myrepos.com/package/tags/0.1.2

 $ svn co https://myrepos.com/package/tags/0.1.2 
 $ python setup.py sdist
 $ python setup.py upload #pypi
 $ python setup.py upload ­r http://plone.org/products
 $ scp dist/my.package­0.1.2.zip user@server:customer/




                ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
DRY
  jarn.mkrelease
  zest.releaser

 $ mkrelease ­d customer my.theme




           ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
Private Egg Server

●
    Plone Software Center
●
    Apache/Nginx
●
    lovely.buildouthttp für Authentifizierung
●
    Mehr unter [1]




              ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
ARBEITEN IM TEAM




                   ENTWICKLUNG > TEAMARBEIT
WIEDERHOLBAR & EINHEITLICH
  collective.recipe.plonesite
   [plonesite]
   recipe = collective.recipe.plonesite
   site­id = {plone­sites:main}
   admin­user = ${zope­user:name}
   instance = instance1
   zeoserver = zeoserver
   enabled = false

   profiles­initial =
       my.policy:default




                                      ENTWICKLUNG > TEAMARBEIT
GEMEINSAME BEISPIELDATEN
  wm.sampledata




                  ENTWICKLUNG > TEAMARBEIT
(D)VCS ANBINDUNG
    mr.developer
 [buildout]

 sources = sources
 auto­checkout =
     my.policy

 [sources]
 my.policy          = git ...
 my.theme           = hg ...
 lineage.index      = svn svn.plone.org/.../lineage.index/trunk/



                                         ENTWICKLUNG > TEAMARBEIT
VOR COMMIT & RELEASE
     bin/test
     aadfasf -s my.package

 frisi@mbp:~/instances/demo$ bin/test -s my.types -v
 Running tests at level 1
 ...
  Ran 25 tests with 1 failures and 0 errors in 2 minutes 42.417 seconds.
 ...
  Ran 3 tests with 0 failures and 0 errors in 0.003 seconds.
 Tests with failures:
   /home/frisi/instances/demo/src/my.types/my/types/search/searchform.txt
 Total: 28 tests, 1 failures, 0 errors in 3 minutes 3.401 seconds.




                                               ENTWICKLUNG > TEAMARBEIT
KONFIGURATIONSMGMT (SCM)

  ARBEITEN IM TEAM


PERFORMANCE

  MONITORING

  WARTUNG
                        AGENDA
Software Architektur
Internet




           ha




                PRODUKTIVEINSATZ > PERFORMANCE
VARNISH VERSTEHEN
     doc/caching.txt
$ parts/varnish­build/bin/varnishlog ­c ­o  RxURL '^/themen$'
     | grep ­E "RxRequest|RxURL|TxStatus|TxResponse|X­Varnish­Action"

   12 RxRequest    c GET
   12 RxURL        c /themen
   12 TxStatus     c 200
   12 TxResponse   c OK
   12 RxRequest    c GET
   12 RxURL        c /themen
   12 TxStatus     c 304
   12 TxResponse   c Not Modified


                          PRODUKTIVEINSATZ > PERFORMANCE > VARNISH
WARTUNGSSEITE




          PRODUKTIVEINSATZ > PERFORMANCE > NGINX
WARTUNGSSEITE




          PRODUKTIVEINSATZ > PERFORMANCE > NGINX
WARTUNGSSEITE


  #replace varnish or nginx error pages
  proxy_intercept_errors on; 

  error_page   502 503 =503  /status/502.html;

  location /status {
    root ${buildout:directory}/production/nginx/;
  }




                         PRODUKTIVEINSATZ > PERFORMANCE > NGINX
SEO – DUPLICATE CONTENT
  noindex, nofollow

   server {

      server_name cms.mydomain.com;

      # do not index or follow content of this domain
      proxy_set_header X­Robots­Tag 'none';

       ...



                       PRODUKTIVEINSATZ > PERFORMANCE > NGINX
FEHLER
  bitte per E-Mail
   [instance­settings]

   mailinglogger =
       <mailing­logger>
         level error
         smtp­server localhost
         from sysadmin@yourdomain.com
         to root
         subject Fehlerbericht [Projekt1] %(line)s
       </mailing­logger>

   # Alternativen: collective.logbook; http://areciboapp.com/ 

                         PRODUKTIVEINSATZ > MONITORING > EMAIL
NAGIOS
  stets auf der Hut




             PRODUKTIVEINSATZ > MONITORING > NAGIOS
WEBSEITE ERREICHBAR?

define service{ 
  use                  service­template 
  host_name            host01 
  service_description  webmeisterei.com HTTP 
  check_command        check_http!­H 
       webmeisterei.com ­I 10.1.2.123 ­u /hosting
  contact_groups       wm­admins 
} 




                     PRODUKTIVEINSATZ > MONITORING > NAGIOS
MUNIN
  vergisst nichts




              PRODUKTIVEINSATZ > MONITORING > MUNIN
DATENBANK GRÖSSE



                          ?

          PRODUKTIVEINSATZ > MONITORING > MUNIN
ZOPE UPTIME




              PRODUKTIVEINSATZ > MONITORING > MUNIN
E-MAIL DURCHSATZ




           PRODUKTIVEINSATZ > MONITORING > MUNIN
Varnish Hit-Rates




              PRODUKTIVEINSATZ > MONITORING > MUNIN
MUNIN EINRICHTUNG
  doc/monitoring.txt

   $ sudo munin­run zope­project1_zopememory_Projekt1Instanz1
   VmPeak.value 923185152.0
   VmSize.value 916013056.0
   VmLck.value 0.0
   VmHWM.value 684683264.0
   VmRSS.value 676757504.0
   VmData.value 769015808.0
   ...




                        PRODUKTIVEINSATZ > MONITORING > MUNIN
KONFIGURATIONSMGMT (SCM)

  ARBEITEN IM TEAM


  PERFORMANCE

  MONITORING

WARTUNG
                         AGENDA
BACKUP STRATEGIE


 KW1   Sonntag   Montag     Dienstag   Mittwoch     …




 KW2   Sonntag   Montag     Dienstag   Mittwoch     …




                          PRODUKTIVEINSATZ > WARTUNG > BACKUP
BACKUP
  collective.recipe.backup

  [backup]
  recipe = collective.recipe.backup
  keep = 2




                         PRODUKTIVEINSATZ > WARTUNG > BACKUP
BACKUP
    cronjob


 #pack zodb each sunday morning
 0   4  *   *   0     /home/projekt1/bin/zeopack  > /dev/null 2>&1

 #backup everyday in the evening
 0 22  *   *   0    /home/projekt1/bin/backup ­q




                              PRODUKTIVEINSATZ > WARTUNG > BACKUP
OMG!



   „ Gestern um 14:00 Uhr
       wurde alles gelöscht!“



                 PRODUKTIVEINSATZ > WARTUNG > BACKUP
TIPP: STÜNDLICHES BACKUP
  beim Projektstart


$ bin/restore 2012­02­21­13­59




               PRODUKTIVEINSATZ > WARTUNG > BACKUP
DEBUG INSTANZ
  starten


  $ bin/instance­debug fg




              PRODUKTIVEINSATZ > WARTUNG > DEBUG
DEBUG INSTANZ
   verbinden

  ssh ­C ­c blowfish ­T ­N ­L 8081:localhost:8499 
     meister@host.webmeisterei.com



 http://localhost:8081/Plone/font­page/pdb



                             PRODUKTIVEINSATZ > WARTUNG > DEBUG
DEBUG INSTANZ
  loslegen

 …
 ­> raise Exception, "Manually triggered exception"
 (Pdb) self.context
 <ATDocument at /new/front­page>
 (Pdb) self.context.title
 u'Willkommen bei Plone'




                          PRODUKTIVEINSATZ > WARTUNG > DEBUG
LOGFILES
●   production/logrotate.conf.template
●   Dateext (backup!)
                                       1K alternatives.log
     502 alternatives.log             502 alternatives.log.1
     11K alternatives.log.1           11K alternatives.log.2
     15K alternatives.log.2           15K alternatives.log.3
      9K alternatives.log.3            9K alternatives.log.4
                                       1K alternatives.log
     502 alternatives.log             502 alternatives.log­20120109
     11K alternatives.log­20120108    11K alternatives.log­20120108
     15K alternatives.log­20120107    15K alternatives.log­20120107
      9K alternatives.log­20120106     9K alternatives.log­20120106
SUPERVISORD




          PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
VERWALTET PROZESSE
   CLI
 meister@kkv01:~$ sudo /etc/init.d/kirche­supervisorctl 
 MemmonZope1       RUNNING    pid 844, uptime 22 days, 23:39:00
 MemmonZope2       RUNNING    pid 843, uptime 22 days, 23:39:00
 balancer          RUNNING    pid 847, uptime 22 days, 23:39:00
 cache             RUNNING    pid 849, uptime 22 days, 23:39:00
 instance1         RUNNING    pid 815, uptime 2  days,  0:53:51
 instance2         RUNNING    pid 199, uptime 1  day,   4:15:50
 main              RUNNING    pid 850, uptime 22 days, 23:39:00
 transform         RUNNING    pid 848, uptime 22 days, 23:39:00
 zeo               RUNNING    pid 845, uptime 22 days, 23:39:00

 supervisor> restart instance1
 instance1: stopped
 instance1: started


                            PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
SPEICHERFRESSER?
   Memmon startet neu
  [supervisor]
  recipe = collective.recipe.supervisor
  plugins = superlance
  Programs =
      ...
      20 instance1 .../bin/instance1 [console] true zope
      ...

  eventlisteners =
      MemmonZope1 TICK_60 .../memmon [­p instance1=780MB ­m root]




                                 PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
LOGFILES
   Autostart
  [supervisor]
  recipe = collective.recipe.supervisor
  plugins = superlance
  childlogdir = ${buildout:directory}/var/log/supervisor
  ...
  programs =
      10 zeo       .../bin/runzeo                                         true zope
      20 instance1 .../bin/instance1 [console]                            true zope
      20 instance2 (autostart=false) .../bin/instance2 [console]          true zope
      30 balancer  .../bin/haproxy  [­f .../production/balancer.conf ­db] true balancer
      40 transform .../sbin/nginx [­c .../production/transform.conf]      true transform
      50 cache     .../bin/cache                                          true
      60 main      .../sbin/nginx [­c .../production/main.conf]           true

  eventlisteners =
      MemmonZope1 TICK_60 .../memmon [­p instance1=780MB ­m root]
      MemmonZope2 TICK_60 .../memmon [­p instance2=780MB ­m root]

                                 PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
WAR'S DAS?
NICHT GANZ!
FRAGEN / DISKUSSION


Twitter: @frisi
#plone: frisi
E-Mail: harald (at) webmeisterei dot com
Link / Bildverzeichnis

Glühbirne            http://www.flickr.com/photos/dskley/6862644813/
Puzzle               http://www.flickr.com/photos/jhritz/409083204/
Pin                  http://www.flickr.com/photos/wheatfields/3798035262/
Ei                   http://www.flickr.com/photos/10451396@N00/337315827/
Schweizermesser      http://www.flickr.com/photos/ajc1/4663140532/
Ameisen              http://www.flickr.com/photos/23271361@N06/5997315172/
Murmeltier           http://www.flickr.com/photos/42662226@N04/4894892820/
Elefant              http://www.flickr.com/photos/joostvanderpost/3403404375/
Tintenfisch          http://www.flickr.com/photos/laughingsquid/4031499134/
Tausenfüßler         http://www.flickr.com/photos/janiellebeh/2331035306/

[1] Claytrons Talk   http://www.slideshare.net/claytron/buildout-for-the-future
Scaling Plone        http://scalingplone.pbworks.com

More Related Content

What's hot

How to host an app for $20 in 20min using buildout and hostout
How to host an app  for $20 in 20min using buildout and hostoutHow to host an app  for $20 in 20min using buildout and hostout
How to host an app for $20 in 20min using buildout and hostout
Dylan Jay
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
Stein Inge Morisbak
 
Magento 2 Capistrano Deploy
Magento 2 Capistrano DeployMagento 2 Capistrano Deploy
Magento 2 Capistrano Deploy
Duke Dao
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
Eric Hogue
 
Introduction to zc.buildout
Introduction to zc.buildoutIntroduction to zc.buildout
Introduction to zc.buildout
Ricardo Newbery
 
Introduction to Node.JS
Introduction to Node.JSIntroduction to Node.JS
Introduction to Node.JS
Eueung Mulyana
 
Google app engine python
Google app engine   pythonGoogle app engine   python
Google app engine python
Eueung Mulyana
 
Django & Buildout (en)
Django & Buildout (en)Django & Buildout (en)
Django & Buildout (en)
zerok
 
Django deployment best practices
Django deployment best practicesDjango deployment best practices
Django deployment best practices
Erik LaBianca
 
Js infrostructure
Js infrostructureJs infrostructure
Js infrostructure
Igor Alpert
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK Seminar
Martin Scharm
 
Buildout and Plone
Buildout and PloneBuildout and Plone
Buildout and Plone
knappt
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Vincenzo Barone
 
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Ozh
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPAN
Jeen Lee
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
정윤 김
 
No Hugging, No Learning
No Hugging, No LearningNo Hugging, No Learning
No Hugging, No Learning
Olaf Alders
 
Arbeiten mit distribute, pip und virtualenv
Arbeiten mit distribute, pip und virtualenvArbeiten mit distribute, pip und virtualenv
Arbeiten mit distribute, pip und virtualenv
Markus Zapke-Gründemann
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
Michele Orselli
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
AOE
 

What's hot (20)

How to host an app for $20 in 20min using buildout and hostout
How to host an app  for $20 in 20min using buildout and hostoutHow to host an app  for $20 in 20min using buildout and hostout
How to host an app for $20 in 20min using buildout and hostout
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
Magento 2 Capistrano Deploy
Magento 2 Capistrano DeployMagento 2 Capistrano Deploy
Magento 2 Capistrano Deploy
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
Introduction to zc.buildout
Introduction to zc.buildoutIntroduction to zc.buildout
Introduction to zc.buildout
 
Introduction to Node.JS
Introduction to Node.JSIntroduction to Node.JS
Introduction to Node.JS
 
Google app engine python
Google app engine   pythonGoogle app engine   python
Google app engine python
 
Django & Buildout (en)
Django & Buildout (en)Django & Buildout (en)
Django & Buildout (en)
 
Django deployment best practices
Django deployment best practicesDjango deployment best practices
Django deployment best practices
 
Js infrostructure
Js infrostructureJs infrostructure
Js infrostructure
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK Seminar
 
Buildout and Plone
Buildout and PloneBuildout and Plone
Buildout and Plone
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
 
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPAN
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
 
No Hugging, No Learning
No Hugging, No LearningNo Hugging, No Learning
No Hugging, No Learning
 
Arbeiten mit distribute, pip und virtualenv
Arbeiten mit distribute, pip und virtualenvArbeiten mit distribute, pip und virtualenv
Arbeiten mit distribute, pip und virtualenv
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
 

Viewers also liked

Open web badges
Open web badgesOpen web badges
Open web badges
lrbabe
 
South Africa - it does not matter
South Africa - it does not matterSouth Africa - it does not matter
South Africa - it does not matter
Braam Snyman
 
image transformations in plone 4.1
image transformations in plone 4.1image transformations in plone 4.1
image transformations in plone 4.1
frisi
 
Endevinalles Nostre Poble
Endevinalles  Nostre PobleEndevinalles  Nostre Poble
Endevinalles Nostre Pobledolors_muns
 
Aircraft Cockpits
Aircraft CockpitsAircraft Cockpits
Aircraft Cockpits
Braam Snyman
 
Living by the spirit sermon 1 (english)
Living by the spirit sermon 1 (english)Living by the spirit sermon 1 (english)
Living by the spirit sermon 1 (english)
Bong Baylon
 
Open web badges_2
Open web badges_2Open web badges_2
Open web badges_2
lrbabe
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Stanford GSB Corporate Governance Research Initiative
 

Viewers also liked (8)

Open web badges
Open web badgesOpen web badges
Open web badges
 
South Africa - it does not matter
South Africa - it does not matterSouth Africa - it does not matter
South Africa - it does not matter
 
image transformations in plone 4.1
image transformations in plone 4.1image transformations in plone 4.1
image transformations in plone 4.1
 
Endevinalles Nostre Poble
Endevinalles  Nostre PobleEndevinalles  Nostre Poble
Endevinalles Nostre Poble
 
Aircraft Cockpits
Aircraft CockpitsAircraft Cockpits
Aircraft Cockpits
 
Living by the spirit sermon 1 (english)
Living by the spirit sermon 1 (english)Living by the spirit sermon 1 (english)
Living by the spirit sermon 1 (english)
 
Open web badges_2
Open web badges_2Open web badges_2
Open web badges_2
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Similar to Buildout - Alles im Griff

Buildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindBuildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mind
Dylan Jay
 
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студіїТарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
LEDC 2016
 
CI workflow in a web studio
CI workflow in a web studioCI workflow in a web studio
CI workflow in a web studio
deWeb
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
VictorSzoltysek
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
Daniel Ku
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos o
Proxiesforrent
 
PyGrunn - Buildout presentation
PyGrunn - Buildout presentationPyGrunn - Buildout presentation
PyGrunn - Buildout presentation
Kim Chee Leong
 
Practical continuous quality gates for development process
Practical continuous quality gates for development processPractical continuous quality gates for development process
Practical continuous quality gates for development process
Andrii Soldatenko
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
Carlos de la Guardia
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
Continuous Integration with Robot Sweatshop
Continuous Integration with Robot SweatshopContinuous Integration with Robot Sweatshop
Continuous Integration with Robot Sweatshop
Justin Scott
 
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
Duke Dao
 
Scala, Functional Programming and Team Productivity
Scala, Functional Programming and Team ProductivityScala, Functional Programming and Team Productivity
Scala, Functional Programming and Team Productivity
7mind
 
Deploying Django with Ansible
Deploying Django with AnsibleDeploying Django with Ansible
Deploying Django with Ansible
andrewmirskynet
 
Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration Tests
Yireo
 
Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
Michelangelo van Dam
 
Using Test Kitchen for testing Chef cookbooks
Using Test Kitchen for testing Chef cookbooksUsing Test Kitchen for testing Chef cookbooks
Using Test Kitchen for testing Chef cookbooks
Timur Batyrshin
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
Rodolfo Carvalho
 
Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014
Paris Android User Group
 

Similar to Buildout - Alles im Griff (20)

Buildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindBuildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mind
 
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студіїТарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
 
CI workflow in a web studio
CI workflow in a web studioCI workflow in a web studio
CI workflow in a web studio
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos o
 
PyGrunn - Buildout presentation
PyGrunn - Buildout presentationPyGrunn - Buildout presentation
PyGrunn - Buildout presentation
 
Practical continuous quality gates for development process
Practical continuous quality gates for development processPractical continuous quality gates for development process
Practical continuous quality gates for development process
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Continuous Integration with Robot Sweatshop
Continuous Integration with Robot SweatshopContinuous Integration with Robot Sweatshop
Continuous Integration with Robot Sweatshop
 
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
 
Scala, Functional Programming and Team Productivity
Scala, Functional Programming and Team ProductivityScala, Functional Programming and Team Productivity
Scala, Functional Programming and Team Productivity
 
Deploying Django with Ansible
Deploying Django with AnsibleDeploying Django with Ansible
Deploying Django with Ansible
 
Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration Tests
 
Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
 
Using Test Kitchen for testing Chef cookbooks
Using Test Kitchen for testing Chef cookbooksUsing Test Kitchen for testing Chef cookbooks
Using Test Kitchen for testing Chef cookbooks
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014
 

Recently uploaded

Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
maazsz111
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 

Recently uploaded (20)

Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 

Buildout - Alles im Griff

  • 1. BUILDOUT ALLES IM GRIFF WEBMEISTEREI HARALD FRIESSNEGGER PLONE KONFERENZ MÜNCHEN, 2012
  • 2. WORUM GEHT'S? Template INTRO
  • 3. WORUM GEHT'S? Tipps und Tools INTRO
  • 4. WORUM NICHT? Totale Automatisierung INTRO
  • 5. KONFIGURATIONSMGMT (SCM) ARBEITEN IM TEAM PERFORMANCE MONITORING WARTUNG AGENDA
  • 6. DAS SCM PROBLEM x Module * y Versionen $ bin/buildout [­N] Error: There is a version conflict. We already have: zope.component 3.5.1 but zope.browserresource 3.12.0 requires  'zope.component>=3.8.0'. ENTWICKLUNG > KONFIG. MANAGEMENT
  • 7. DIE LÖSUNG Versionen pinnen [buildout] extends =     http://dist.plone.org/release/4.1.4/versions.cfg     http://good­py.appspot.com/release/plone.app.theming/1.0b9 [versions] my.theme = 1.2 my.type = 0.7 collective.viewlet.links = 1.0 collective.prettyphoto = 0.4.4 ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
  • 8. NICHT VERGESSEN buildout.dumppickedversions [buildout] extensions =     buildout.dumppickedversions $ bin/buildout ... *************** PICKED VERSIONS **************** [versions] some.package = 0.9 setuptools = 0.6rc11 ... ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
  • 9. IMMER UP TO DATE z3c.checkversions frisi@mbp:~$ bin/checkversions ­v versions.cfg | grep was jarn.mkrelease=3.5 # was: 3.0.10 collective.recipe.backup=2.4 # was: 1.7 collective.recipe.supervisor=0.17 # was: 0.14 ... ENTWICKLUNG > KONFIG. MANAGEMENT > PINNING
  • 10. WENNS UM DIE WURST GEHT ...braucht man Eier recipe = infrae.subversion as_eggs = true urls =     https://my.repos/my.theme/tags/1.2/ my.theme ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
  • 11. JEDES MAL EIN RELEASE? Puh! $ vi setup.py; vi History.txt $ svn ci ­m 'prepare release' $ svn cp . https://myrepos.com/package/tags/0.1.2 $ svn co https://myrepos.com/package/tags/0.1.2  $ python setup.py sdist $ python setup.py upload #pypi $ python setup.py upload ­r http://plone.org/products $ scp dist/my.package­0.1.2.zip user@server:customer/ ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
  • 12. DRY jarn.mkrelease zest.releaser $ mkrelease ­d customer my.theme ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
  • 13. Private Egg Server ● Plone Software Center ● Apache/Nginx ● lovely.buildouthttp für Authentifizierung ● Mehr unter [1] ENTWICKLUNG > KONFIG. MANAGEMENT > EGG RELEASES
  • 14. ARBEITEN IM TEAM ENTWICKLUNG > TEAMARBEIT
  • 15. WIEDERHOLBAR & EINHEITLICH collective.recipe.plonesite [plonesite] recipe = collective.recipe.plonesite site­id = {plone­sites:main} admin­user = ${zope­user:name} instance = instance1 zeoserver = zeoserver enabled = false profiles­initial =     my.policy:default ENTWICKLUNG > TEAMARBEIT
  • 16. GEMEINSAME BEISPIELDATEN wm.sampledata ENTWICKLUNG > TEAMARBEIT
  • 17. (D)VCS ANBINDUNG mr.developer [buildout] sources = sources auto­checkout =     my.policy [sources] my.policy          = git ... my.theme           = hg ... lineage.index      = svn svn.plone.org/.../lineage.index/trunk/ ENTWICKLUNG > TEAMARBEIT
  • 18. VOR COMMIT & RELEASE bin/test aadfasf -s my.package frisi@mbp:~/instances/demo$ bin/test -s my.types -v Running tests at level 1 ... Ran 25 tests with 1 failures and 0 errors in 2 minutes 42.417 seconds. ... Ran 3 tests with 0 failures and 0 errors in 0.003 seconds. Tests with failures: /home/frisi/instances/demo/src/my.types/my/types/search/searchform.txt Total: 28 tests, 1 failures, 0 errors in 3 minutes 3.401 seconds. ENTWICKLUNG > TEAMARBEIT
  • 19. KONFIGURATIONSMGMT (SCM) ARBEITEN IM TEAM PERFORMANCE MONITORING WARTUNG AGENDA
  • 20. Software Architektur Internet ha PRODUKTIVEINSATZ > PERFORMANCE
  • 21. VARNISH VERSTEHEN doc/caching.txt $ parts/varnish­build/bin/varnishlog ­c ­o  RxURL '^/themen$'      | grep ­E "RxRequest|RxURL|TxStatus|TxResponse|X­Varnish­Action"    12 RxRequest    c GET    12 RxURL        c /themen    12 TxStatus     c 200    12 TxResponse   c OK    12 RxRequest    c GET    12 RxURL        c /themen    12 TxStatus     c 304    12 TxResponse   c Not Modified PRODUKTIVEINSATZ > PERFORMANCE > VARNISH
  • 22. WARTUNGSSEITE PRODUKTIVEINSATZ > PERFORMANCE > NGINX
  • 23. WARTUNGSSEITE PRODUKTIVEINSATZ > PERFORMANCE > NGINX
  • 24. WARTUNGSSEITE #replace varnish or nginx error pages proxy_intercept_errors on;  error_page   502 503 =503  /status/502.html; location /status {   root ${buildout:directory}/production/nginx/; } PRODUKTIVEINSATZ > PERFORMANCE > NGINX
  • 25. SEO – DUPLICATE CONTENT noindex, nofollow server { server_name cms.mydomain.com; # do not index or follow content of this domain proxy_set_header X­Robots­Tag 'none';     ... PRODUKTIVEINSATZ > PERFORMANCE > NGINX
  • 26. FEHLER bitte per E-Mail [instance­settings] mailinglogger =     <mailing­logger>       level error       smtp­server localhost       from sysadmin@yourdomain.com       to root       subject Fehlerbericht [Projekt1] %(line)s     </mailing­logger> # Alternativen: collective.logbook; http://areciboapp.com/  PRODUKTIVEINSATZ > MONITORING > EMAIL
  • 27. NAGIOS stets auf der Hut PRODUKTIVEINSATZ > MONITORING > NAGIOS
  • 29. MUNIN vergisst nichts PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 30. DATENBANK GRÖSSE ? PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 31. ZOPE UPTIME PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 32. E-MAIL DURCHSATZ PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 33. Varnish Hit-Rates PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 34. MUNIN EINRICHTUNG doc/monitoring.txt $ sudo munin­run zope­project1_zopememory_Projekt1Instanz1 VmPeak.value 923185152.0 VmSize.value 916013056.0 VmLck.value 0.0 VmHWM.value 684683264.0 VmRSS.value 676757504.0 VmData.value 769015808.0 ... PRODUKTIVEINSATZ > MONITORING > MUNIN
  • 35. KONFIGURATIONSMGMT (SCM) ARBEITEN IM TEAM PERFORMANCE MONITORING WARTUNG AGENDA
  • 36. BACKUP STRATEGIE KW1 Sonntag Montag Dienstag Mittwoch … KW2 Sonntag Montag Dienstag Mittwoch … PRODUKTIVEINSATZ > WARTUNG > BACKUP
  • 37. BACKUP collective.recipe.backup [backup] recipe = collective.recipe.backup keep = 2 PRODUKTIVEINSATZ > WARTUNG > BACKUP
  • 38. BACKUP cronjob #pack zodb each sunday morning 0   4  *   *   0     /home/projekt1/bin/zeopack  > /dev/null 2>&1 #backup everyday in the evening 0 22  *   *   0    /home/projekt1/bin/backup ­q PRODUKTIVEINSATZ > WARTUNG > BACKUP
  • 39. OMG! „ Gestern um 14:00 Uhr wurde alles gelöscht!“ PRODUKTIVEINSATZ > WARTUNG > BACKUP
  • 40. TIPP: STÜNDLICHES BACKUP beim Projektstart $ bin/restore 2012­02­21­13­59 PRODUKTIVEINSATZ > WARTUNG > BACKUP
  • 41. DEBUG INSTANZ starten $ bin/instance­debug fg PRODUKTIVEINSATZ > WARTUNG > DEBUG
  • 42. DEBUG INSTANZ verbinden ssh ­C ­c blowfish ­T ­N ­L 8081:localhost:8499     meister@host.webmeisterei.com http://localhost:8081/Plone/font­page/pdb PRODUKTIVEINSATZ > WARTUNG > DEBUG
  • 43. DEBUG INSTANZ loslegen … ­> raise Exception, "Manually triggered exception" (Pdb) self.context <ATDocument at /new/front­page> (Pdb) self.context.title u'Willkommen bei Plone' PRODUKTIVEINSATZ > WARTUNG > DEBUG
  • 44. LOGFILES ● production/logrotate.conf.template ● Dateext (backup!)                                    1K alternatives.log  502 alternatives.log             502 alternatives.log.1  11K alternatives.log.1           11K alternatives.log.2  15K alternatives.log.2           15K alternatives.log.3   9K alternatives.log.3            9K alternatives.log.4                                    1K alternatives.log  502 alternatives.log             502 alternatives.log­20120109  11K alternatives.log­20120108    11K alternatives.log­20120108  15K alternatives.log­20120107    15K alternatives.log­20120107   9K alternatives.log­20120106     9K alternatives.log­20120106
  • 45. SUPERVISORD PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
  • 46. VERWALTET PROZESSE CLI meister@kkv01:~$ sudo /etc/init.d/kirche­supervisorctl  MemmonZope1       RUNNING    pid 844, uptime 22 days, 23:39:00 MemmonZope2       RUNNING    pid 843, uptime 22 days, 23:39:00 balancer          RUNNING    pid 847, uptime 22 days, 23:39:00 cache             RUNNING    pid 849, uptime 22 days, 23:39:00 instance1         RUNNING    pid 815, uptime 2  days,  0:53:51 instance2         RUNNING    pid 199, uptime 1  day,   4:15:50 main              RUNNING    pid 850, uptime 22 days, 23:39:00 transform         RUNNING    pid 848, uptime 22 days, 23:39:00 zeo               RUNNING    pid 845, uptime 22 days, 23:39:00 supervisor> restart instance1 instance1: stopped instance1: started PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
  • 47. SPEICHERFRESSER? Memmon startet neu [supervisor] recipe = collective.recipe.supervisor plugins = superlance Programs =     ...     20 instance1 .../bin/instance1 [console] true zope     ... eventlisteners =     MemmonZope1 TICK_60 .../memmon [­p instance1=780MB ­m root] PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
  • 48. LOGFILES Autostart [supervisor] recipe = collective.recipe.supervisor plugins = superlance childlogdir = ${buildout:directory}/var/log/supervisor ... programs =     10 zeo       .../bin/runzeo                                         true zope     20 instance1 .../bin/instance1 [console]                            true zope     20 instance2 (autostart=false) .../bin/instance2 [console]          true zope     30 balancer  .../bin/haproxy  [­f .../production/balancer.conf ­db] true balancer     40 transform .../sbin/nginx [­c .../production/transform.conf]      true transform     50 cache     .../bin/cache                                          true     60 main      .../sbin/nginx [­c .../production/main.conf]           true eventlisteners =     MemmonZope1 TICK_60 .../memmon [­p instance1=780MB ­m root]     MemmonZope2 TICK_60 .../memmon [­p instance2=780MB ­m root] PRODUKTIVEINSATZ > WARTUNG > SUPERVISOR
  • 51. FRAGEN / DISKUSSION Twitter: @frisi #plone: frisi E-Mail: harald (at) webmeisterei dot com
  • 52. Link / Bildverzeichnis Glühbirne http://www.flickr.com/photos/dskley/6862644813/ Puzzle http://www.flickr.com/photos/jhritz/409083204/ Pin http://www.flickr.com/photos/wheatfields/3798035262/ Ei http://www.flickr.com/photos/10451396@N00/337315827/ Schweizermesser http://www.flickr.com/photos/ajc1/4663140532/ Ameisen http://www.flickr.com/photos/23271361@N06/5997315172/ Murmeltier http://www.flickr.com/photos/42662226@N04/4894892820/ Elefant http://www.flickr.com/photos/joostvanderpost/3403404375/ Tintenfisch http://www.flickr.com/photos/laughingsquid/4031499134/ Tausenfüßler http://www.flickr.com/photos/janiellebeh/2331035306/ [1] Claytrons Talk http://www.slideshare.net/claytron/buildout-for-the-future Scaling Plone http://scalingplone.pbworks.com