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

What is DevOps?

What is DevOps?

DevOps is a word used a lot these days and reading job ads it seems like it's something one person in a team does. It also looks as if I buy the right tools I'm doing DevOps, but is that it?

This is the slides for a presentation I gave at JuniorDevSG on the 14th of September.

A video of the presentation: https://engineers.sg/video/what-is-devops-juniordevsg--2876

Björn Andersson

September 14, 2018
Tweet

More Decks by Björn Andersson

Other Decks in Technology

Transcript

  1. What is DevOps? • Culture • Collaboration between disciplines •

    Developers, operations, business, QA, and so on…
  2. What is DevOps? • Culture • Collaboration between disciplines •

    Developers, operations, business, QA, and so on… • Getting your code into production
  3. What is DevOps? • Culture • Collaboration between disciplines •

    Developers, operations, business, QA, and so on… • Getting your code into production • As quickly as possible
  4. What is DevOps? • Culture • Collaboration between disciplines •

    Developers, operations, business, QA, and so on… • Getting your code into production • As quickly as possible • With as high a quality as possible
  5. But how do you do that? • Tests • Automated

    provisioning • Get servers up, register Function as a Service handlers (FaaS), create databases
  6. But how do you do that? • Tests • Automated

    provisioning • Get servers up, register Function as a Service handlers (FaaS), create databases • Database migrations
  7. But how do you do that? • Tests • Automated

    provisioning • Get servers up, register Function as a Service handlers (FaaS), create databases • Database migrations • etc.
  8. But how do you do that? • Tests • Automated

    provisioning • Get servers up, register Function as a Service handlers (FaaS), create databases • Database migrations • etc. • Package deploy artefacts (containers, JAR files, FaaS zip archives, etc.)
  9. But how do you do that? • Tests • Automated

    provisioning • Get servers up, register Function as a Service handlers (FaaS), create databases • Database migrations • etc. • Package deploy artefacts (containers, JAR files, FaaS zip archives, etc.) • Automated deployments
  10. Tools • Ansible / Chef / Puppet (server configuration) •

    TerraForm (infrastructure provisioning)
  11. Tools • Ansible / Chef / Puppet (server configuration) •

    TerraForm (infrastructure provisioning) • Container orchestration (Kubernetes / Nomad / AWS ECS)
  12. Tools • Ansible / Chef / Puppet (server configuration) •

    TerraForm (infrastructure provisioning) • Container orchestration (Kubernetes / Nomad / AWS ECS) • Cloud provider APIs (Azure, AWS, Google, etc.)
  13. Tools • Ansible / Chef / Puppet (server configuration) •

    TerraForm (infrastructure provisioning) • Container orchestration (Kubernetes / Nomad / AWS ECS) • Cloud provider APIs (Azure, AWS, Google, etc.) • Custom scripts (the world is your oyster)
  14. How do I know if I need a tool? •

    Did it take a lot of manual effort to do something? • I documented all the steps with screenshots and commands to run! • Why not as runnable code? • Do you want to make sure everyone does it the same way? • Checklist! • Why not as runnable code? • Can you start over if the worst happens? • Two weeks of downtime as we manually configure everything • Not as runnable code (just, you know, make sure it still works every so often)
  15. Example deploy process • bin/run-all-tests • ENV=staging bin/build-and-deploy vessels__predictor --new-version

    • Builds a deploy package • Queries a central database for the next deploy number to use
  16. Example deploy process • bin/run-all-tests • ENV=staging bin/build-and-deploy vessels__predictor --new-version

    • Builds a deploy package • Queries a central database for the next deploy number to use • Uploads package to a repository for archiving
  17. Example deploy process • bin/run-all-tests • ENV=staging bin/build-and-deploy vessels__predictor --new-version

    • Builds a deploy package • Queries a central database for the next deploy number to use • Uploads package to a repository for archiving • Deploys that version using that package
  18. Example deploy process • bin/run-all-tests • ENV=staging bin/build-and-deploy vessels__predictor --new-version

    • Builds a deploy package • Queries a central database for the next deploy number to use • Uploads package to a repository for archiving • Deploys that version using that package • Notify monitoring environment of the current version of vessels__predictor
  19. Recap • DevOps is a culture about • collaboration with

    other stakeholders • getting your code running as fast as possible, 
 with as high a quality as possible
  20. Recap • DevOps is a culture about • collaboration with

    other stakeholders • getting your code running as fast as possible, 
 with as high a quality as possible • DevOps is not
  21. Recap • DevOps is a culture about • collaboration with

    other stakeholders • getting your code running as fast as possible, 
 with as high a quality as possible • DevOps is not • tools (not even Microsoft Azure DevOps )
  22. Recap • DevOps is a culture about • collaboration with

    other stakeholders • getting your code running as fast as possible, 
 with as high a quality as possible • DevOps is not • tools (not even Microsoft Azure DevOps ) • a person on the team (that person is doing automation)
  23. –Mark Fewster “It is far better to improve the effectiveness

    of testing first than to improve the efficiency of poor testing. Automating chaos just gives faster chaos.”