Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Road to DevOps

mjvdende
February 02, 2015

Road to DevOps

mjvdende

February 02, 2015
Tweet

More Decks by mjvdende

Other Decks in Technology

Transcript

  1. Roughly  speaking  those  who  work  in   connec4on  with  the

     [Automated  Compu4ng   Engine]  will  be  divided  into  its  masters  and  its   servants.  Its  masters  will  plan  out  instruc4on   tables  for  it,  thinking  up  deeper  and  deeper   ways  of  using  it.  Its  servants  will  feed  it  with   cards  as  it  calls  for  them.  They  will  put  right   any  parts  that  go  wrong.  They  will  assemble   data  that  it  requires.  In  fact  the  servants  will   take  the  place  of  limbs.  As  4me  goes  on  the   calculator  itself  will  take  over  the  func4ons   both  of  masters  and  of  servants     Turing,  Alan.  The  Essen4al  Turing,  edited  by  B.  Jack  Copeland.  Oxford   University  Press,  2004    
  2. Continuous Delivery Creëer cross functional product teams Teams beheren services

    gehele lifecycle Inclusief automatisering van bouw, test en deployment proces
  3. Value Stream Analysis of a traditional development process 7 SILOED

     &  MANUAL   PROVISIONING   Server 1 MANUAL  BUILDS   ~Weekly Integration Manual distribution of software “MANUAL“   TEST(in  the  end)   Static tests SILOED   “TEAMS"   Unit tests Functional tests MANUAL   DEPLOYMENTS   ~ Quarterly handover of software Manual deployments of software Server 2 Server n waste:   -­‐inventory   -­‐wait   -­‐overprocessing   waste:   -­‐builds  on  (different)  laptops   -­‐manual  handovers   -­‐defects  (through  wait)   waste:   -­‐manual  tests   (speed,  defects,  4ming)   waste:   -­‐manual  deployments   (speed,  defects,  4ming)   waste:   -­‐manual  setup  &  maintenance   of  systems   (speed,  defects,  4ming)   waste:   -­‐inconsistent  systems   (configura4on  dri],  defects,  4ming)   A process of weeks or even months … waste:   -­‐handover  of   documents   waste:   -­‐manual  handovers   of  code  &  documents   waste:   -­‐manual  handovers   of  code  &  documents   waste:   -­‐manual  handovers   of  apps,  documents   and  configura4ons  
  4. Value Stream Analysis of an optimized development process AUTOMATED  

    PROVISIONING   Server 1 AUTOMATED  BUILD   Continuous Integration Dynamic Software Library Provisioning AUTOMATED  TEST   Static tests AGILE  TEAMS   Unit tests Functional tests AUTOMATED   DEPLOY   Release Man. (Light) Deployment Automation Server 2 Server n characteris0cs:   -­‐deliver  fast   -­‐deliver  o]en   -­‐do  the  right  things   characteris0cs   -­‐improve  quality   -­‐compile  &  construct   con4nuously   characteris0cs   -­‐improve  quality   -­‐test  con4nuously   -­‐reduce  defects  &  costs   characteris0cs   -­‐release  con4nuously  (trust!)   -­‐release  consistently   -­‐reduce  costs  &  defects   characteris0cs   -­‐increase  setup  speed   -­‐reduce  cost   -­‐reduce  defects   characteris0cs   -­‐consistent  systems   A process of minutes … characteris0cs   -­‐output:  product   characteris0cs   -­‐con4nuous  flow   of  code   characteris0cs   -­‐con4nuous  flow   of  code   characteris0cs   -­‐con4nuous  flow   of  apps  &   configura4ons   characteris0cs   -­‐up  to  date  end-­‐product  @  customer  
  5. Anti Patterns Deploying software handmatig Allen naar productie (like) wanneer

    development helemaal klaar was Manual config van productie omgevingen
  6. Deploy CD > Deploy nightly build to production like environment

    Smoke tests Manual tests, production data Every two weeks release to production
  7. Remove Waste Puppet              

                                Subversion,  Jenkins,  Nexus,   Maven                 Fitnesse,  Selenium,     Xebium,  NGrinder                     T   P   A   O   FULLY  AUTOMATED  SOFTWARE  DELIVERY  PROCESS   AUTOMATED   BUILD   AUTOMATED   TEST   AUTOMATED   PROVISIONING   •  Improve  quality   •  Increase  predictability   Deployit   AUTOMATED   DEPLOYMENT   •  Release  insight   •  Reduce  release  4me   •  Reduce  errors   •  Less  down4me   •  Cost  reduc4on   •  Improve  reliability   •  Repeatable   •  Reduce  Cost   •  Increase  speed   •  Reduce  costs   •  Increase  speed   •  Reduce  risk   •  Reduce  Cost   AGILE  PROCESS   AGILE  PROCESS   •  Deliver  fast   •  Deliver  o]en   •  Do  the  right  things  
  8. Automated Test Puppet              

                                Subversion,  Jenkins,  Nexus,   Maven                 Fitnesse,  Selenium,     Xebium,  NGrinder                     T   P   A   O   FULLY  AUTOMATED  SOFTWARE  DELIVERY  PROCESS   AUTOMATED   BUILD   AUTOMATED   TEST   AUTOMATED   PROVISIONING   •  Improve  quality   •  Increase  predictability   Deployit   AUTOMATED   DEPLOYMENT   •  Release  insight   •  Reduce  release  4me   •  Reduce  errors   •  Less  down4me   •  Cost  reduc4on   •  Improve  reliability   •  Repeatable   •  Reduce  Cost   •  Increase  speed   •  Reduce  costs   •  Increase  speed   •  Reduce  risk   •  Reduce  Cost   AGILE  PROCESS   AGILE  PROCESS   •  Deliver  fast   •  Deliver  o]en   •  Do  the  right  things  
  9. TEST Automation ”automate your tests!” – a very costly ANTIpattern!

    hap://wa4rmelon.com/2012/01/31/introducing-­‐the-­‐so]ware-­‐tes4ng-­‐ice-­‐cream-­‐cone/   Unit tests System tests (Software, API’s, Services, Integration components) UI Tests Manual tests
  10. TEST Automation ”automate your TESTS!” SLOWER   MORE  COSTLY  

    Unit tests Quick,  tested  even  before   deployment,  immediate   feedback,  “the  detail”.   System tests (Software, API’s, Services, Integration components) Fast,  tested  a]er   deployment,   Immediate  feedback.   UI Tests Slow,  tested  a]er   deployment,  more  tedious,   late  feedback.   Manual tests Very  slow,  inconsequent   feedback.  Costly.  Late   feedback.     Many  more  tests!!   -­‐  Choose  what  is  applicable  to  your   business!!!   therefore:  test  early!!!  
  11. Test Automation ”automate your tests!” – in multi disciplinairy Feature

    teams! Siloed testing is slow, very expensive and (frankly) no longer an option Testers and developers should work together to write, run, automate and maintain tests -  “Whole team testing” -  Test code is production code Tests should be written, before code is written Once written, tests can be used over and over again and help keeping the system stable. -  Look at it as if being a ‘mall’.
  12. Automated Test Puppet              

                                Subversion,  Jenkins,  Nexus,   Maven                 Fitnesse,  Selenium,     Xebium,  NGrinder                     T   P   A   O   FULLY  AUTOMATED  SOFTWARE  DELIVERY  PROCESS   AUTOMATED   BUILD   AUTOMATED   TEST   AUTOMATED   PROVISIONING   •  Improve  quality   •  Increase  predictability   Deployit   AUTOMATED   DEPLOYMENT   •  Release  insight   •  Reduce  release  4me   •  Reduce  errors   •  Less  down4me   •  Cost  reduc4on   •  Improve  reliability   •  Repeatable   •  Reduce  Cost   •  Increase  speed   •  Reduce  costs   •  Increase  speed   •  Reduce  risk   •  Reduce  Cost   AGILE  PROCESS   AGILE  PROCESS   •  Deliver  fast   •  Deliver  o]en   •  Do  the  right  things  
  13. Automated Provisioning ”automatE your system setup” – how long does

    provisioning take you? Infrastructure   OS   Middleware   Applica0on   … weeks? … weeks? (per type of mw) … days? ?? months lead time .... Adding to every project:
  14. VMWare   RHEL  6.4   WIN12  R2   Oracle  SOA

     Suite   Oracle  Database   Oracle  OSB  11g   JBoss  EAP  6   Tomcat  6   IIS  8.5   Oracle  Services   JEE  apps   .NET  apps   Infrastructure   Middleware     Applica4ons     &  Services   OS   Provision   Deploy   in 30 minutes... in 10 minutes... Puppet agent Automated Provisioning ”automatE your system setup” – a customer case
  15. DevOps done right New breed OS -  CoreOS -  Redhat

    Atomic Api for developer to provision environments Docker Containers
  16. Create CD pipeline https://github.com/mjvdende/vagrant-mesos Installeer git, virtualbox en vagrant (+plugins)

    $ git clone https://github.com/mjvdende/vagrant- mesos.git $ cd standalone && vagrant up
  17. TL;DR Zonder test automatering geen continuous delivery Iedereen in het

    team draagt bij aan automatisering Manueel testen beperken tot een minimum Build > Measure > Learn