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

devops jungle of tools

Ran Tavory
November 30, 2012

devops jungle of tools

How to choose deployment automation and infrastructure automation tools.

Ran Tavory

November 30, 2012
Tweet

More Decks by Ran Tavory

Other Decks in Programming

Transcript

  1. Start with a personal story My goal was to: Deploy

    apps Maintain infra Monday, January 28, 13
  2. Start with a personal story That’s me 3 years ago.

    C o n f u s e d What should I do? What should I choose? I have to maintain infrastructure But I also have to deploy my apps Are these the same? Chef Puppet Control Tier CFEngine ... ??? Monday, January 28, 13
  3. I need a tool that: A h a ! !

    ! Monday, January 28, 13
  4. I need a tool that: Maintains Infrastructure A h a

    ! ! ! AND Deploy my apps! Monday, January 28, 13
  5. Why are they different? And what do they have in

    common? Monday, January 28, 13
  6. What does chef do? Provision servers Install Java, Tomcat Install

    DBs Set up users, keys logstash nagios, etc... Monday, January 28, 13
  7. What does Fabric do? Deploys apps Tomcat based or jetty

    Notifications tests Monday, January 28, 13
  8. So why am I using two tools? Because they are

    different Monday, January 28, 13
  9. Let’s take a look at the tools now Infrastructure ≠

    App Deployment !!! Monday, January 28, 13
  10. Hybrid? So - Chef, Puppet, CFEngine maintain infra But -

    can they also deploy applications? They could... But - it’s awkward ☹ Example: Use shef for ad-hoc tasks. Monday, January 28, 13
  11. Hybrid? So - glu, fab, cap, CTier can deploy But

    - can they also maintain infra? They could... But - it’s awkward ☹ Example: Use fabric to deploy mysql. Monday, January 28, 13
  12. Confidence Different level of Confidence conf(linux || mysql) > conf(in-house

    apps) Widely used systems (linux, mysql) Monday, January 28, 13
  13. Confidence Different level of Confidence conf(linux || mysql) > conf(in-house

    apps) Widely used systems (linux, mysql) vs in-house apps, limited testing Monday, January 28, 13
  14. Frequency Frequency of change freq(deploy database) ≪ freq(deploy new version)

    How often do you deploy a new DB? every couple of months / years Monday, January 28, 13
  15. Frequency Frequency of change freq(deploy database) ≪ freq(deploy new version)

    How often do you deploy a new DB? every couple of months / years How often do you deploy new apps? Dozens a day Monday, January 28, 13
  16. Control Control over the actual process Deployments: Control exactly when

    they happen Notify ppl, monitoring systems, with progress Monday, January 28, 13
  17. Control Control over the actual process Deployments: Control exactly when

    they happen Notify ppl, monitoring systems, with progress Gradual, controlled and cautious deployments Monday, January 28, 13
  18. Control Control over the actual process Deployments: Control exactly when

    they happen Notify ppl, monitoring systems, with progress Gradual, controlled and cautious deployments Test as you go Monday, January 28, 13
  19. Control Control over the actual process Deployments: Control exactly when

    they happen Notify ppl, monitoring systems, with progress Gradual, controlled and cautious deployments Test as you go Maybe rollback Monday, January 28, 13
  20. Heterogenous Homogenous Heterogeneous v/s Homogenous Infrastructure lives in Heterogeneous environments

    Example: install mysql on ubuntu, centos, osx, win Monday, January 28, 13
  21. Heterogenous Homogenous Heterogeneous v/s Homogenous Infrastructure lives in Heterogeneous environments

    Example: install mysql on ubuntu, centos, osx, win Apps live in Homogenous environments. Example: Rails apps only need a Rack server Example: Java apps need only a JVM Monday, January 28, 13
  22. Who’s code is it? When it’s your code you can:

    Instrument it (healthcheck, deployment hooks) Monday, January 28, 13
  23. Who’s code is it? When it’s your code you can:

    Instrument it (healthcheck, deployment hooks) If it’s not your code, you have less control hope to get lucky or hack around it... Monday, January 28, 13
  24. Where does Chef stand out? Recipes for almost anything Databases,

    App Servers, Languages... Monday, January 28, 13
  25. Where does Chef stand out? Recipes for almost anything Databases,

    App Servers, Languages... Your code 㱺 no recipes Monday, January 28, 13
  26. Where does Chef stand out? Heterogeneous environments Any linux, windows,

    osx (resource providers) Monday, January 28, 13
  27. Where does Chef stand out? Heterogeneous environments Any linux, windows,

    osx (resource providers) Deployment environments are Homogenous Monday, January 28, 13
  28. Where does Chef stand out? Runs unattended to assure state

    Your want to monitor it Monday, January 28, 13
  29. Where does Glu stand out? Fine control over the deployment

    process Packaged code 㱺 Not needed Monday, January 28, 13
  30. Where does Chef stand out? Status update and monitoring during

    deployment Infrastracture update - usually taken offline Monday, January 28, 13
  31. Compare Infrastructure Deployment Chef ✓ ⍻ (shef) Puppet ✓ ?

    Glu ⁇ ✓ Fabric ⍻ ✓ Monday, January 28, 13
  32. To sum up Chef 㱺 Infrastructure Glu / Fabric /

    Capistrano 㱺 Applications Yes - it’s more tools But - Use the right tool for the job... Monday, January 28, 13
  33. To sum up Chef 㱺 Infrastructure Glu / Fabric /

    Capistrano 㱺 Applications Yes - it’s more tools But - Use the right tool for the job... Monday, January 28, 13
  34. What does the future hold? Immutable Servers? aka Phoenix Servers

    vs Snowflake Servers Pallet? Monday, January 28, 13