DevOps in Practice: When does "Practice" Become "Doing"?


Published on

DevOps has emerged as the hot trend in development buzzword-ology. With a few quick paragraphs, it proposes to decimate all of the traditional problems you've encountered during your development experience.

In IBM UrbanCode, we build products to help customers follow good DevOps practices. You may think DevOps is about the release process, but really it's about applying a mix of automation and operational practices earlier in your development life cycle so that rolling out to production becomes easier. DevOps promotes a focus on small-batch changes over large complex updates which are harder to predict and harder to roll back when problems occur. With greater velocity, rolling out smaller changes becomes more common place. Additionally, IBM UrbanCode makes extensive application of cloud technology that intercepts well with practices in DevOps around production-like environments.

In this talk, Michael Elder describes how we practice DevOps internally with a mixture of IBM-built and open source tools. He'll discuss the areas that we do well and the challenges that we have with changing our culture around areas like test automation. On top of that, he'll describe how you can leverage these approaches in your own development process!

Published in: Software
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

DevOps in Practice: When does "Practice" Become "Doing"?

  1. 1. © 2013 IBM Corporation Accelerating Product and Service Innovation DevOps  in  Prac.ce:  When  does  "Prac.ce"   Become  "Doing"?   Michael  Elder,  IBM  Senior  Technical  Staff  Member                hFp://                          @mdelder  
  2. 2. © 2013 IBM Corporation
  3. 3. © 2013 IBM Corporation "Success is not delivering a feature; success is learning how to solve the customer’s problem.” - Mark Cook
  4. 4. © 2013 IBM Corporation Examples  of  DevOps  and  Con.nuous  Delivery   4
  5. 5. © 2013 IBM Corporation Accelerate software delivery Balance speed, cost, quality and risk Reduce time to customer feedback People Process Technology Develop/Test Deploy Operate Steer IBM  DevOps   Enterprise  capability  for  con.nuous  soMware  delivery  that  enables  clients  to   seize  market  and  reduce  .me  to  customer  feedback  
  6. 6. © 2013 IBM Corporation SoMware  delivery  challenges   Failures  due  to   inconsistent  dev   and  produc.on   environments   Bo+lenecks  trying  to   deliver  more   frequent  releases    to   meet  market   demands   Complex,  manual,   processes  for   release  lack   repeatability  and   speed     Poor  visibility  into   dependencies  across   releases,  resources,   and  teams   Daily Build Monthly Delivery Who did this last time? Dave… Dave’s not here man… Dev Prod
  7. 7. © 2013 IBM Corporation High  performing  teams  adopt  DevOps   Reference: 2013 State of DevOps Report by PuppetLabs
  8. 8. © 2013 IBM Corporation About  your  philosophy   Culture  of  con.nual   experimenta.on  and  learning   •  Produc.on  like  environments   •  Fully  automated  deployments   •  Accelerated  delivery  cycles   Build  –  Measure  -­‐  Learn     “Success  is  not  delivering  a   feature;  success  is  learning   how  to  solve  the  customer’s   problem.”
  9. 9. © 2013 IBM Corporation Increase  the  opera&onal  awareness  of  your  so/ware  earlier  in  the   development  process.   What does DevOps mean to me? How do you do that? § Architecture   § Automated  Tes6ng   § Automated  Deployments   § Produc6on-­‐Like  Environments   § Automated  Release  Promo6on  Process   § Version  control  of  all  soBware,  automa6on,  and  configura6on   Why do this? Because  faster  feedback  loops  enable  rapid  evolu&on  of  ideas  and   therefore  faster  itera6ons  of  your  soBware  
  10. 10. © 2013 IBM Corporation   “Cool  factor”  ..  seen  as  pushing  to  the  “next  big  thing”  in  our  industry   BeLer  communica6on  between  those  who  create  and  those  who  operate   (same  people  in  some  cases)   Reduced  fear  of  breaking  the  build/deployment/environment   Fail  small  before  you  “fail  all”   Heavy  focus  on  experimenta6on  and  learning   Improve  the  speed  of  your  feedback  loop  to  enable  rapid  evolu6on  of  ideas   What are the characteristics of teams who practice DevOps?
  11. 11. © 2013 IBM Corporation § Architecture   § Automated   § Automated  Deployments   § Produc.on-­‐Like  Environments   § Automated  Release  Promo.on  Process   § Version  control  of  all  soMware,  automa.on,  and   configura.on   About  our  next  topics  
  12. 12. © 2013 IBM Corporation About  your  architecture   § Architecture  should  support  DevOps  principles  such  as  staged  roll  out,   opera.onal  insights,  and  scriptability   § Each  resource  provides  some  very  advice  for  building  systems   which  are  focused  on  reliability  and  feedback  loops   Experiment!:  Website   conversion  rate   op.miza.on  with  A/B   and  mul.variate   Release  It!:  Design  and  Deploy   Produc.on-­‐Ready  SoMware
  13. 13. © 2013 IBM Corporation Design  for  availability,  con.nuous  deployment   ¡  Change  your  as  we  move  into  hosted  offerings,   scalability  and  availability  are  to  our  business   ¡  Ne`lix  Libraries  provide  you  can  adopt  in  your   products  today  –  regardless  of  whether  you’re  building  a  hosted   service   ¡  The  Libraries  promote  good  development  prac.ces  and  architectural   paFerns   See  the  talk  Andrew  Spyker  and  I  gave  on  this:  hFp://    
  14. 14. © 2013 IBM Corporation Moving  from  monolithic  applica.ons  to  micro-­‐services   14 Monolithic app Micro services Scaling Scaling
  15. 15. © 2013 IBM Corporation ¡  Compartmentalized  business   capability   ¡  Cross-­‐func.onal  teams   ¡  Communica.on  via  API  ONLY!!   ¡  Use  messaging  to  remove  peer-­‐to-­‐ peer  dependencies   ¡  REST  communica.on   ¡  Decentralized  data   ¡  Design  for  failure   ¡  Pluggable  architecture   ¡  Enables  con.nuous  delivery  of  a  micro-­‐service  architecture   15
  16. 16. © 2013 IBM Corporation Leveraging  Hystrix’s  built-­‐in  event  stream  
  17. 17. © 2013 IBM Corporation About  automated   ¡     This  is  THE  HARDEST  part  of  the  whole  experience   ¡     NO  ONE  is  great  at  this,  so  don’t  get  discouraged   ¡     Facebook’s  process  for  code  review  include  stats  on  how  many  tests  are   consistently  broken  to  decide  whether  the  test  failures  are  noteworthy   ¡     Con.nuously  improve  your  coverage,  flexibility,  and  discipline   ¡     Consider  all  aspects  of   ¡     Programma.c  API  (JUnit)   ¡     REST  API  (HTTPUnit,  REST  Fuse)   ¡     Web  UI  (Selenium)   ¡     Behavior  driven  (Cucumber)   ¡     Performance  (Apache  JMeter)   ¡     Security  (Ra.onal  AppScan)  
  18. 18. © 2013 IBM Corporation Embedding  unit  tests  in  your  classes  directly   ¡   Promoted  approach  by   Ne`lix  to  reduce  fric.on   and  introduces  limited   addi.onal  bytes  to   third  party  libraries   ¡   Makes  it  easy  to  write   commands,  the  UnitTest   becomes  the  test  harness   and  verifica.on   ¡   Always  testSuccess()  and   testFailure()  use  cases  to   ensure  expected  behavior   import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class OSDeployEnvironmentCommand extends OSAbstractOrchestrationCommand<Response> { public static class UnitTest { @Test public void testSuccess() throws InterruptedException, ExecutionException, JSONException { … Future<Response> request = new OSDeployEnvironmentCommand(…) .queue(); Response response = request.get(); assertNotNull(response); assertEquals(HttpStatus.SC_OK, response.getStatus()); } }
  19. 19. © 2013 IBM Corporation  Your  Deployed  Applica.on  –  REST  API   ¡   We’re  with   REST  Fuse  which  is  an   Eclipse  project   ¡   Captures  REST  calls  as   annota.ons,  freeing  up   your  test  method  to  just   verify  behavior   ¡   Requires  a  liFle  “hoop   jumping”  for  a   series  of  calls  (e.g.  POST  ..   PUT  ..  GET)   import static com.eclipsesource.restfuse.Assert.assertCreated; import ...restfuse.annotation.Authentication; import ...restfuse.annotation.HttpTest; import ...restfuse.MediaType; @HttpTest (method = com.eclipsesource.restfuse.Method.POST, contentMethod="getBlueprintRequestBody", authentications = { @Authentication( type = BASIC, user = "{keystoneUser}", password = "{keystonePassword}") }, path = "/rest/blueprint", type = MediaType.APPLICATION_JSON ) public void testCreateBlueprintOK() throws Exception { assertCreated(response); }
  20. 20. © 2013 IBM Corporation  Your  Deployed  Applica.on  –  Web  UI   ¡   Selenium  is  the  only   “apparent”  choice  that   we’ve  come  across  that’s     ¡   Couples  automated  test   to  some  details  of  your   web  UI  and  must  be  kept   in  sync   ¡   We’ve  developed  a  few   best  prac.ces  around   loca.on  elements  for   maximum  flexibility,   could  publish  this  if   there’s  interest   public class EditorsPage extends UCDPPage { … @FindBy(id = "new-blueprint-button") private WebElement newButton; … public void createFile(String name, String id, String[] values) {; util().waitForElementPresentAndVisible( By.className("new-file-dialog")); WebElement widget = util().findElement( By.className("new-file-dialog")); Dialog dialog = Widget.init(this, widget, Dialog.class); dialog.setValues(values, true, true); dialog.clickPrimaryButton(); … } … }
  21. 21. © 2013 IBM Corporation 21 About  automated  deployments   Visibility  and  automated  control  of  your  applica6on  deployment  process   •  Manage  applica.on   components  and  versions   •  Manage  configura.ons  across   all  environments   •  Offer  secure  ‘self-­‐service’   •  Increase  transparency   •  Ensure  governance  and  compliancy    
  22. 22. © 2013 IBM Corporation Applica.on  model   Reliably  capture  applica6on  content  and  configura6on  seRngs  with   versioning  and  traceability  
  23. 23. © 2013 IBM Corporation Applica.on  environments   23 Define  where  components  are  deployed  and  capture  configura6on   seRngs  per  deployment  environment  for  an  applica6on  
  24. 24. © 2013 IBM Corporation Define  automated  processes  for  each  applica.on  component   24 Each  component  defines  a  series  of  steps,  backed  by  plugin  tasks  or   custom  scripts,  to  deploy  it  
  25. 25. © 2013 IBM Corporation About  produc.on-­‐like  environments   ¡  Use  any  and  all  means  at  your  disposal   ¡  Clouds  can  be  helpful  to  provide  “infinite”  resources  and  drive  the   crea.on  of  new  environments  through  automa.on   ¡  See  UrbanCode  Deploy  with  PaFerns  (Landscaper):   hFps://     ¡  Or  UrbanCode  Deploy  integra.on  with  Pure/SCO:   hFps://     ¡  Vagrant  (hFp://  and  Docker  ( hFp://  are  good  alterna.ves  to  clouds  or  to  be   used  in  combina.on  with  clouds  
  26. 26. © 2013 IBM Corporation DevOps  and  Cloud  adop.on   Automating for faster delivery with DevOps and Cloud Networking Storage Servers Virtualization O/S Middleware Mid Config Data Applications Infrastructure   as  a  Service   UrbanCode   Deploy   Networking Storage Servers Virtualization O/S Middleware Mid Config Data Applications Pla@orm   as  a  Service   IBM   Bluemix   PureApplicaCon   System     SmartCloud   Orchestrator     SoFLayer   IBM   DevOps   Services   New UrbanCode   Deploy   with   Pa<erns   26 IBM  Pa+erns  
  27. 27. © 2013 IBM Corporation About  using  clouds   ¡  We’ve  used  the  “FIT”  environment  based   on  the  IBM  PaFern  Engine   ¡  Long  history  of  usage   ¡  Lots  of  work  to  stabilize   ¡  S.ll  impacted  by  performance  of   transferring  images,  etc   ¡  We’re  building  soMware  to  work  with   OpenStack,  but  there  isn’t  (currently)  a   good  stable  OpenStack  cloud  internally   ¡  Cloud  availability  limited  and  behind   “jump  boxes”   ¡  Longer  term,  this  will  be  our   approach  along  with  Heat   Orchestra.on  Templates  (HOT)  for   our  applica.ons   SmartCloud  Orchestrator   IBM  PureApplicaCon  System   IBM UrbanCode Deploy with Patterns
  28. 28. © 2013 IBM CorporationIBM CONFIDENTIAL OpenStack  is  a  global  collabora.on  of  developers  &  cloud  technologists   working  to  produce  an  ubiquitous  Infrastructure  as  a  Service  (IaaS)  open  source   cloud  pla`orm  for  public  &  private  clouds.     OpenStack  is  our  strategic  direc.on  for  cloud   Platinum Sponsors Gold Sponsors Compute (core)
 Provision and manage large networks of virtual machines" Dashboard (core)
 Enables administrators and users to access & provision cloud- based resources through a self-service portal." Heat (core)
 orchestrates multiple composite cloud applications using templates" Ceilometer (shared service)
 Collect monitoring, metering, and other measurements Storage (core)
 Provision and manage block-based and object storage" Network (core)
 Provision and manage network connectivity" Identity (shared service)
 Unified authentication across all OpenStack projects and integrates with existing authentication systems." Identity (shared service)
 Unified authentication across all OpenStack projects and integrates with existing authentication systems."
  29. 29. © 2013 IBM Corporation Our  internal  cloud:  “FIT”   ¡  The  Federated  Integrated   (FIT)  cloud  service  provides   Infrastructure  as  a  Service  from  IBM     ¡  Very  stable,  reasonably  fast  (has   improved  drama.cally  over  .me)   ¡  Resources  are  “leased”  so  some   zones  aren’t  meant  for  long   running  usage   ¡  Great  for  automated  deployment   and  of  builds   ¡  CLM  has  been  doing  this  against  FIT   for  a  long  .me  
  30. 30. © 2013 IBM Corporation About  using  Vagrant   ¡  Some  challenges  with   networking  across  pla`orm,   par.cularly  if  you’re  trying  to   use  it  to  “run  a  cloud”  such  as   OpenStack  *within*  the  VM   ¡  But  for  most  applica.ons,   provide  a  simple  way  to  share   a  common  infrastructure   configura.on  within  a  team  or   community
  31. 31. © 2013 IBM Corporation About  using  Docker   ¡  Create  one  or  more  “Dockerfiles”   capturing  the  set  of  steps  to  setup   your  applica.on,  middleware,  and   configura.on   ¡  Build  the  “container”  for  each   build   ¡  Ship  the  “container”  along  your   delivery  pipeline   ¡  IBM  is  in  this  community  –   recently  giving  a  keynote  at   Dockercon
  32. 32. © 2013 IBM Corporation Faster,  repeatable,  reliable  full-­‐stack  deployment  processes   SCM Build Automation QA PROD Execute application deployment and manage settings across environments Publish build Pull changes SmartCloud  Orchestrator   EnvironmentsDEVDEVDEVDEV IBM  PureApplicaCon  System   IBM UrbanCode Deploy Cloud Provisioning Deploy Automation IBM UrbanCode Deploy with Patterns 32 Learn  more  at  hFps://    
  33. 33. © 2013 IBM Corporation Introducing  IBM  UrbanCode  Deploy  with  Pa+erns   ü PaFern  designer   – Design  open,  full  stack  applica.on   environments  in  a  diagram  or  textual  editor   ü Design  once,  deploy  anywhere   – Deploy  full  stack  environments  to  mul.ple   clouds   ü Environment  lifecycle  management   – Manage  infrastructure  change  and  easily   apply  changes  to  environments   ü Delivery  process  automa.on   – Automated  delivery  process  with  integrated   full  stack  environments   Design  and  deploy  full  stack  applica6on  environments  for  mul6ple  clouds   IBM UrbanCode Deploy with Patterns Application Middleware Config Middleware OS Config Hardware Environment Blueprint Learn  more  at  hFps://    
  34. 34. © 2013 IBM Corporation Introducing  UrbanCode  Deploy  v6.1  with  PaFerns   Version  the  blueprint  using  your   source  control  repo  (  support  for   git)   Apply  the  new  versions  of  the   template  to  an  environment  or   provision  an  new  stack   Validate  changes  with  a  "canary"   paFern  to  ensure  correctness  and   detect  problems  earlier   Verify  stack  before  produc.on   Portable  across  clouds   New
  35. 35. © 2013 IBM Corporation 35 Run Your Apps The developer can chose any language runtime or bring their own. Just upload your code and go. DevOps Development, monitoring, deployment and logging tools allow the developer to run the entire application APIs and Services A catalog of open source, IBM and third party APIs services allow a developer to stitch together an application in minutes. Cloud Integration Build hybrid environments. Connect to on- premises systems of record plus other public and private clouds. Expose your own APIs to your developers. Extend SaaS Apps Drop in SaaS App SDKs and extend to new use cases (e.g,. Mobile, Analytics, Web)! IBM  Bluemix   35
  36. 36. © 2013 IBM Corporation About  your  promo.on  process   UrbanCode Deploy with Patterns
  37. 37. © 2013 IBM Corporation37 Release  &  Deploy  Automa.on   Deployment  of  Applica6ons  across  Environments     Applications are managed for deployment Components from the app Specific versions of the Components’ artifacts are deployed Compliancy keeps track of whether the actual versions matches the expected Each Component knows its relevant deployment processes Compare versions across environments and define Snapshots of known working sets of Components View deployment requests against the environment hFps://    
  38. 38. © 2013 IBM Corporation Configura.on  Management  -­‐  Snapshots   Creating a Snapshot Component Versions 1 1 2 2 3 3 321Web Mid. Code DB Snapshot 3 2 1 Mid. Config 1 2 3 3 Snapshot Deployment ENVSnapshot 3 2 1 WEB HOST MID HOST DB HOST 2 1 1 3 2 X 3 3 1 Contents of environments that pass tests •  contain deployable version and configuration Deployments are based on deltas They help with: ü  Automation, Audit, and Visibility uDeploy
  39. 39. © 2013 IBM Corporation Version  applica.ons  with  Snapshots   39 Capture  tested  component  versions  and  configura6on  seRngs  as  a   snapshot  that  is  promoted  to  other  environments  for  beLer  visibility   and  control  
  40. 40. © 2013 IBM Corporation About  version  control   ¡  All  of  your  source  code  is  likely   already  version  controlled   ¡  All  of  your  automa.on  scripts,   configura.on  files,  tests,  etc   should  also  version  controlled   ¡  UrbanCode  Deploy  automa.cally   understands  versions  of   components  from  your  build   process,  but  also  versions  all   changes  to  configura.on  and  automa.on   processes
  41. 41. © 2013 IBM Corporation IBM  DevOps  Services  for  Bluemix   Tools  in  the  cloud  for  the  cloud   Web IDE Agile Planning Delivery Pipeline
  42. 42. © 2013 IBM Corporation Code  review  should  be  part  of  your  versioning  process   ¡  Gerrit  is  a  popular  code  review   integra.on  for  git   ¡  Used  for  all  UrbanCode  products   ¡  Enables  you  to  create  “pre-­‐review”   verifica.ons  which  automate  running   tests  before  a  human  reviews  the  change   ¡  Provides  immediate,  automated  feedback   about  the  quality  of  the  change  based  on   your  test  suites  
  43. 43. © 2013 IBM Corporation Every aspect of our product delivery should be driven from the principles of validated learning; no more anecdotes, only meaningful results from our fast cycle prototypes. - Michael D. Elder
  44. 44. © 2013 IBM Corporation § Architecture   § Automated   § Automated  Deployments   § Produc.on-­‐Like  Environments   § Automated  Release  Promo.on  Process   § Version  control  of  all  soMware,  automa.on,  and   configura.on   About  this  deck                  hFp://                @mdelder   Download  from  hFps://  
  45. 45. © 2013 IBM Corporation45 © Copyright IBM Corporation 2013. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.