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

[2017.03] Meetup #11] [TALK] Kief Morris - Implementing Infrastructure-as-Code

[2017.03] Meetup #11] [TALK] Kief Morris - Implementing Infrastructure-as-Code

Organizations keen to deliver innovative digital services are increasingly turning to cloud, virtualization, and automation tools. While these can lower technical barriers to rapidly delivering and evolving software, new practices and techniques are needed to make sure systems are secure, stable, and maintainable.

Infrastructure as Code (IaC) brings tools and practices from agile software engineering to ensure that infrastructure can be continuously evolved with a rigorous focus on quality. This is possible because infrastructure has become abstracted from physical hardware, meaning it can be treated like a software system. Version control systems, Test-Driven Development (TDD), Continuous Integration (CI), and Continuous Delivery (CD) can now be applied to the realm of infrastructure.

The talk walks through a number of patterns for implementing IaC tools such as AWS, Chef, Puppet, Ansible, and Terraform, to build a change management pipeline to automatically test and apply configuration to infrastructure. The patterns are not tool-specific, so should be useful for any team using these types of tools.

Attendees should come away with an understanding of how concepts such as Continuous Integration (CI), Continuous Delivery (CD), Test Driven Development (TDD) can be applied to infrastructure.

Kief is an experienced practitioner and a reference in the field, having authored the book "Infrastructure as Code".

DevOps Lisbon

March 13, 2017
Tweet

More Decks by DevOps Lisbon

Other Decks in Technology

Transcript

  1. [email protected] Cloud Practice Lead (UK) DevOps, Continuous Delivery, Agile Ops

    Twitter: @kief Book: http://oreil.ly/1JKIBVe Site: http://infrastructure-as-code.com March 2017
  2. DEFINE SYSTEMS AS CODE System design is: ▪ Reusable ▪

    Consistent ▪ Visible ▪ Versioned
  3. AUTOMATION LAG The longer it’s been since an automated process

    has run in the same context … … the more work is needed to run it again
  4. BUILD COMPLIANCE INTO THE PIPELINE Humans focus on the implementation

    of the pipeline and audit trails Use the pipeline to continuously validate operational requirements and compliance, and to implement controls
  5. Nginx Cookbook ORGANIZE INFRASTRUCTURE INTO SEPARATELY TESTABLE PIECES Tomcat Cookbook

    JDK Cookbook MyApp Vhost Cookbook MyApp.war Application Server Web Server
  6. ASSEMBLY PIPELINES TEST TOMCAT COOKBOOK TEST MYAPP CODE TEST JDK

    COOKBOOK TEST APP SERVER TEST MYAPP DEPLOYMENT Test components individually Cumulatively integrate and test components together
  7. LIBRARY PIPELINES Tested server images BUILD TEST BUILD TEST PROD

    BUILD TEST PROD Server image pipeline Application environment pipelines
  8. DECOUPLED CHANGE PIPELINES Application A TEST BUILD Application B TEST

    BUILD Application C TEST BUILD QA PROD QA PROD QA PROD
  9. HANDLING DEPENDENCIES TEST BUILD QA PROD TEST BUILD QA PROD

    Self-service test instances Consumer Driven Contract (CDC) Tests Mocks, stubs, and fakes
  10. DESIGN TO ENABLE FREQUENT CHANGES Split infrastructure according to the

    scope of typical changes Minimize the risk of changes by limiting the blast radius Keep infrastructure units loosely coupled
  11. SOME ACTIVITIES TO MEASURE § Rebuild (Recover) § New environment

    § Update existing environments § Introducing a new tech stack