Agile DevOps: Environment Automation


Published on

Agile DevOps: Environment Automation
with Ben Tomasini, Software Developer, Agile Coach

Published in: Technology
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Agile DevOps: Environment Automation

  1. 1. Agile DevOps: Environment Automation Ben Tomasini Software Developer, Agile Coach
  2. 2. First Principles Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Software Environment
  3. 3. Necessary Focus Developers must also support the operational use of their software — a combination that’s become known as “devops.” This further motivates writing good code and testing it thoroughly. Developers’ personal stake in keeping the system running smoothly complements the engineering procedures and lets the system maintain quality at scale. Methodologies and tools aren’t enough by themselves because they can always be misused. Thus, a culture of personal responsibility is critical. Kent Beck - Facebook -
  4. 4. Environmental Impediments • • • • • • Ubiquitous in Agile initiatives Common impediment at stand-ups at this moment Unavailable environments Costly to spin up another test environment Inconsistent and stale configurations - system failures Communication barriers between development and operations
  5. 5. Agile Continuous Delivery Short Cycle Times Focus on Quality Low Technical Debt Individuals and Interactions Dev Ops Delivery and maintenance of the software product Delivery and maintenance of the systems on which the software product runs How can we apply Agile practices to both?
  6. 6. Complementary Delivery Pipelines
  7. 7. A Deeper Vertical Slice? UI Business Logic Data Access Server Environment << User Stories
  8. 8. It’s all software now ... • • Virtualization has revolutionized system operations • Let’s apply known practices to both application development and system development • Let’s develop our systems - using build automation,TDD, and CI We have historically run our software on systems, now lets use software to build those systems
  9. 9. Three reasons why this won’t work :) • Reason 1: System provisioning is much more variable than building software • • Reason 2: Systems are more heavyweight than software artifacts Reason 3: Doing this involves possibly unfamiliar tools and skills • Operations write software? That’s for developers. • Developers manage systems? That’s for operations.
  10. 10. Too variable ? • Traditional system provisioning involves • • • • Many steps Specialized knowledge Manual input One solution: make provisioning deterministic
  11. 11. Deterministic Process Inputs Process (closed system) The inputs guarantee the outputs No “hidden” inputs Only automate a deterministic system Use tests to assert outputs Outputs
  12. 12. Opscode Chef • • • • • Environment automation solution Cook up servers with recipes Free and Open Source Vibrant Community Influenced by Puppet, which was influenced by CFEngine
  13. 13. Too heavyweight ? • Solution: lightweight virtualization tools • • Abstract away the hardware Command line integrates with build system
  14. 14.
  15. 15. Too unfamiliar? • Explore new areas: • • • • Developers - Learn sysamin stuff - bash, init.d scripts, managing public keys, vi instead of Eclipse System engineers - Dig into software development - Ruby, Java, TDD Embrace new tools Dev/Ops collaboration - pairing, post release retrospectives
  16. 16. Questions?
  17. 17. Thank You Ben Tomasini
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.