SlideShare a Scribd company logo
Orc
Zero downtime deployments made easy




                  Tomas Doran (t0m)
                  @bobtfish
                  <bobtfish@bobtfish.net>
                  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
Architecture
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
Contract URIs
• App:
 • http://localhost:xxxx/info/health
 • http://localhost:xxxx/info/version
• Participation:
 • http://localhost
    :yyyy/app_name/environment_name/insta
    nce_name
deployapp methods

• get status (health + version)
• enable participation
• disable participation
• upgrade version
State machine
Multiple instances

• Discover all instances
• Work out next transition for each instance
• Each transition has a weight
• Sort by weight - take highest weighted
• Repeat until no transitions left
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


                                  Disable
host1   5      4      Y      Y              1
                                   part


                                  Disable
host2   5      4      Y      Y              1
                                   part
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


host1   5      4      Y      N   Upgrade    2



                                  Disable
host2   5      4      Y      Y              1
                                   part
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


                                  Enable
host1   5      5      Y      N              3
                                   part


                                  Disable
host2   5      4      Y      Y              1
                                   part
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


host1   5      5      Y      Y    None      0



                                  Disable
host2   5      4      Y      Y              1
                                   part
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


host1   5      5      Y      Y    None      0



                                  Disable
host2   5      4      Y      N              1
                                   part
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


host1   5      5      Y      Y    None     0



host2   5      4      Y      N   Upgrade   2
Simple example
    Desired Actual Desired Actual
App                               Action Weight
    version version part    part


host1   5      5      Y      Y    None     0



host2   5      5      Y      Y    None     0
A/B groups

• Can run A/B groups of the same app with
  different versions
• Can upgrade non-participating group, test,
  then swap participation.
• Same model just works
Status

• Orc, deployapp + contract test harness
  open source
• Docs still very lacking.
• You need to plug in your own repository
  module (and your own launcher for non jar
  apps)
Todo
• Better deployment (public gem+debs)
• Deployapp configuration rewrite
• http artifact fetcher
• More app launchers - rack/wsgi/psgi apps!
• Docs - specifically load balancer configs +
  installation.
Code

• The ideas here are way more important
  than the code
• Development sponsored by TIM Group
 • Yes, of course we are hiring :)
• https://github.com/youdevise/orc
Thanks!

https://github.com/youdevise/orc




          Questions?

More Related Content

PDF
20190730 android taipei
PPT
Branching Over The Top!
PDF
Terraform Testing with InSpec Demo
PDF
Kotlin top features overview
PDF
JAZOON'13 - Stefan Saasen - Real World Git Workflows
KEY
A Branch for Every Feature - Atlassian Summit 2012
PDF
Git workflows
PPTX
Relaciones absolu8tas, relativas y mixtas
20190730 android taipei
Branching Over The Top!
Terraform Testing with InSpec Demo
Kotlin top features overview
JAZOON'13 - Stefan Saasen - Real World Git Workflows
A Branch for Every Feature - Atlassian Summit 2012
Git workflows
Relaciones absolu8tas, relativas y mixtas

Viewers also liked (17)

PDF
85 Gnarly Local SEO Tips for Auto Dealers
PPT
Moving the Needle with Social Media
PPTX
Social Media for Travel and Tourism
PDF
Token statt Cookies dank JWT - #ETKA16
PDF
Unit Testing - The Whys, Whens and Hows
DOCX
Productos químicos de alta calidad Ronald Vera
PDF
Risk based monitoring presentation by triumph research intelligence january 2014
PDF
和菓子の持つ伝統要素の尊重をしつつ、抜本的なイメージの改変を目指す。
PDF
Blue moon - abstract acrylic painting
DOCX
Emailer Generic letter
PDF
Data Defeats Truman – SXSW Panelpicker Pitch
PPT
如何讓顧客離不開你
PDF
Shodh yatra report compressed copy
PPT
Mattawa, Ontario, Canada, 1970
PPT
UNISA InfoLit Story 24 May 2016
PDF
Jardin de julio.
85 Gnarly Local SEO Tips for Auto Dealers
Moving the Needle with Social Media
Social Media for Travel and Tourism
Token statt Cookies dank JWT - #ETKA16
Unit Testing - The Whys, Whens and Hows
Productos químicos de alta calidad Ronald Vera
Risk based monitoring presentation by triumph research intelligence january 2014
和菓子の持つ伝統要素の尊重をしつつ、抜本的なイメージの改変を目指す。
Blue moon - abstract acrylic painting
Emailer Generic letter
Data Defeats Truman – SXSW Panelpicker Pitch
如何讓顧客離不開你
Shodh yatra report compressed copy
Mattawa, Ontario, Canada, 1970
UNISA InfoLit Story 24 May 2016
Jardin de julio.
Ad

Similar to London devops - orc (20)

PPTX
ICEflo Implementation Management Solution V1d1
PPTX
World of Services: Software Architecture That is Eating the World
PPTX
Twelve Factor - Designing for Change
PPTX
Continuous Delivery
PPTX
Automatize everything
KEY
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
PDF
Jeff Lindsay: Building Public Infrastructure with Autosustainable Services
PPTX
Sv jug - mar 2013 - sl
PDF
AppZero & GoGrid: Moving Windows Server Apps to Cloud in 3 Easy Steps
PDF
Twelve-Factor App: Software Application Architecture
PDF
Continuous Deployment of Architectural Change
PPTX
Introduction to DevOps
PDF
The Brave New World of Continuous Release - Baruch Sadogursky
PDF
DevOps or: How I Learned to Stop Worrying and Love the Cloud
PPTX
Continuous Delivery
PDF
WF and WCF with AppFabric – Application Infrastructure for OnPremise Services
PDF
Decomposing applications for deployability and scalability (SpringOne China 2...
PDF
The 12 Factor App
PDF
Moving Windows Server Apps to the cloud in 3 Easy Steps
PPTX
System Center 2012
ICEflo Implementation Management Solution V1d1
World of Services: Software Architecture That is Eating the World
Twelve Factor - Designing for Change
Continuous Delivery
Automatize everything
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
Jeff Lindsay: Building Public Infrastructure with Autosustainable Services
Sv jug - mar 2013 - sl
AppZero & GoGrid: Moving Windows Server Apps to Cloud in 3 Easy Steps
Twelve-Factor App: Software Application Architecture
Continuous Deployment of Architectural Change
Introduction to DevOps
The Brave New World of Continuous Release - Baruch Sadogursky
DevOps or: How I Learned to Stop Worrying and Love the Cloud
Continuous Delivery
WF and WCF with AppFabric – Application Infrastructure for OnPremise Services
Decomposing applications for deployability and scalability (SpringOne China 2...
The 12 Factor App
Moving Windows Server Apps to the cloud in 3 Easy Steps
System Center 2012
Ad

More from Tomas Doran (20)

PPTX
Long haul infrastructure: Failures and successes
PDF
Empowering developers to deploy their own data stores
PDF
Dockersh and a brief intro to the docker internals
PDF
Sensu and Sensibility - Puppetconf 2014
PDF
Steamlining your puppet development workflow
PDF
Building a smarter application stack - service discovery and wiring for Docker
PDF
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
PPT
Deploying puppet code at light speed
PDF
Thinking through puppet code layout
PDF
Docker puppetcamp london 2013
PDF
"The worst code I ever wrote"
PDF
Test driven infrastructure development (2 - puppetconf 2013 edition)
PDF
Test driven infrastructure development
KEY
London devops logging
KEY
Message:Passing - lpw 2012
KEY
Webapp security testing
KEY
Webapp security testing
KEY
Dates aghhhh!!?!?!?!
KEY
Messaging, interoperability and log aggregation - a new framework
KEY
Zero mq logs
Long haul infrastructure: Failures and successes
Empowering developers to deploy their own data stores
Dockersh and a brief intro to the docker internals
Sensu and Sensibility - Puppetconf 2014
Steamlining your puppet development workflow
Building a smarter application stack - service discovery and wiring for Docker
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Deploying puppet code at light speed
Thinking through puppet code layout
Docker puppetcamp london 2013
"The worst code I ever wrote"
Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development
London devops logging
Message:Passing - lpw 2012
Webapp security testing
Webapp security testing
Dates aghhhh!!?!?!?!
Messaging, interoperability and log aggregation - a new framework
Zero mq logs

London devops - orc

  • 1. Orc Zero downtime deployments made easy Tomas Doran (t0m) @bobtfish <bobtfish@bobtfish.net> https://github.com/bobtfish/
  • 2. Problem space: • Multiple heterogeneous applications • Multiple servers per app • Multiple environments • Custom deployment solutions / semi- manual deployment
  • 3. Observed problems: • Support nightmare • Failed / inconsistent deployments • New applications extremely costly to deploy
  • 4. 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
  • 5. Reliable • Contract conformity checked by a common test suite • CI builds to check deployability
  • 6. 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!
  • 7. 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
  • 9. 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
  • 10. Contract URIs • App: • http://localhost:xxxx/info/health • http://localhost:xxxx/info/version • Participation: • http://localhost :yyyy/app_name/environment_name/insta nce_name
  • 11. deployapp methods • get status (health + version) • enable participation • disable participation • upgrade version
  • 13. Multiple instances • Discover all instances • Work out next transition for each instance • Each transition has a weight • Sort by weight - take highest weighted • Repeat until no transitions left
  • 14. Simple example Desired Actual Desired Actual App Action Weight version version part part Disable host1 5 4 Y Y 1 part Disable host2 5 4 Y Y 1 part
  • 15. Simple example Desired Actual Desired Actual App Action Weight version version part part host1 5 4 Y N Upgrade 2 Disable host2 5 4 Y Y 1 part
  • 16. Simple example Desired Actual Desired Actual App Action Weight version version part part Enable host1 5 5 Y N 3 part Disable host2 5 4 Y Y 1 part
  • 17. Simple example Desired Actual Desired Actual App Action Weight version version part part host1 5 5 Y Y None 0 Disable host2 5 4 Y Y 1 part
  • 18. Simple example Desired Actual Desired Actual App Action Weight version version part part host1 5 5 Y Y None 0 Disable host2 5 4 Y N 1 part
  • 19. Simple example Desired Actual Desired Actual App Action Weight version version part part host1 5 5 Y Y None 0 host2 5 4 Y N Upgrade 2
  • 20. Simple example Desired Actual Desired Actual App Action Weight version version part part host1 5 5 Y Y None 0 host2 5 5 Y Y None 0
  • 21. A/B groups • Can run A/B groups of the same app with different versions • Can upgrade non-participating group, test, then swap participation. • Same model just works
  • 22. Status • Orc, deployapp + contract test harness open source • Docs still very lacking. • You need to plug in your own repository module (and your own launcher for non jar apps)
  • 23. Todo • Better deployment (public gem+debs) • Deployapp configuration rewrite • http artifact fetcher • More app launchers - rack/wsgi/psgi apps! • Docs - specifically load balancer configs + installation.
  • 24. Code • The ideas here are way more important than the code • Development sponsored by TIM Group • Yes, of course we are hiring :) • https://github.com/youdevise/orc