OrcZero downtime deployments made easy Tomas Doran (t0m) @bobtfish <email@example.com> https://github.com/bobtfish/
Problem space:• Multiple heterogeneous applications• Multiple servers per app• Multiple environments• Custom deployment solutions / semi- manual deployment
Observed problems:• Support nightmare• Failed / inconsistent deployments• New applications extremely costly to deploy
Solution:• Application infrastructure contract• Defined interface for infrastructure to interact with your application: • How to launch • How to query health• Any application which complies gets continuous deployment - free
Reliable• Contract conformity checked by a common test suite• CI builds to check deployability
Predictable• Deployment is model driven• Store desired state in ‘cmdb’• Audit live servers, adjust reality to conform to desired state• State machine - easy to test!
Safe• Each possible step in a deployment is a state transition• Sample live state after each transition - if model doesn’t match reality, stop!• Mcollective agent - flexible per-user + fact based permissions for free
Participation?• Need to be able to cleanly remove instances from load balancer• Make load balancer health check do 2 things: • Check app = healthy • Check participation = true• Tatin - tiny REST service to drop state into