DevOps Outline Definitions Collaboration in DevOps Automation in DevOps 1
www.agilemanifesto.org/principles.html What is DevOps A set of practices that emphasize automation and collaboration between development and operations teams with the purpose of reducing time to deploy new features Patrick Debois, Agile infrastructure and operations: how infra-gile are you?, Agile 2008 conference, Toronto Dev Ops Commit Build and Integration Tests UAT/Staging/ Performance Tests Deploy to Production 2
Collaboration in DevOps Classic separation Developers aka software engineers Build and maintain software Goal: new features encourage a fast pace of delivery Operations aka system administrators (sysadmin) Bring software to production and ensure that it runs properly Goal: stability encourage a slow pace of delivery 3
DevOps Areas Area 3: Embed development into operations Dev Area 1: Extend development to operations Area 2: Extend operations to development Ops Area 4: Embed operations into development Area 1: Extend development to operations Problem: Environments are provisioned manually and are loosely coupled with software releases. Practice: Use tools like Puppet to provision environments from versioned code 4
Area 2: Extend operations to development Problem: Developers don t have insight about runtime behavior of the application in production. Practice: Provide monitoring and log files to development Area 3: Embed development into operations Problem: Development provides new features with less focus on nonfunctional requirements. Practice: Set stability and capacity as development goals 5
Area 4: Embed operations into development Problem: While delivering software to production for the first time, it is discovered that bigger machines are needed to host the software. Practice: Operations gives feedback about the design of the application that is under development, early and often DevOps as an extension of agile development 6
A Kanban Board for DevOps Automation in DevOps Infrastructure as code DevOps engineer as a role to take responsibility of these tools 7
Deployment pipeline Commit Build and Integration Tests UAT/Staging/ Performance Tests Deploy to Production Continuous Integration Continuous Delivery Continuous Deployment Triggered by commit of code All gates from one phase to the next are automatic Individual developers can commit to production as long as automated tests are passed Architectural pattern for DevOps Reducing time to deploy new features can be also accomplished by adopting a specific architectural style to reduce synchronous coordination among development teams: Microservice architectural style 8
Microservice architecture A collection of services where each service is an independent unit of deployment each service communicates with other services through service interfaces each service provides a small amount of functionality the total functionality of the system is derived from composing multiple services A user request may activate tens of services (e.g. 70 in LinkedIn) Minimal inter-team coordination The architecture specifies: Mapping of architectural elements Each service is the responsibility of a single development team Development teams must coordinate to divide responsibilities for features that are to be added Coordination mechanism Teams must communicate with each other through service interfaces Services must discover location of dependent services Resource management For each service provide a SLA: e.g. for a workload of Y requests per second, I will provide a response within X seconds For each client provide an estimate of requests: e.g. for each request I receive, I will make Z requests for your service per second 9
Readings DevOps for Developers, by M. Huttermann DevOps: A Software Architect s Perspective, by L. Bass, I. Weber, L. Zhu Continuous Delivery, by J. Humble, D. Farley Builiding Microservices, by S. Newman 10