Immutable infrastructure
Pavel Chunyayev
DevOpsDays Amsterdam
25-05-2015
Modern approach to manage
infrastructure
Good old world of physical servers
Those were the days
Apply the golden image
And pray
Configuration mgmt to save us all
Or at least to try
Deployments that everyone hates
Or is it just me?
But we want more deployments!
MOAR!
Get yourself a process
Repeat, repeat, repeat
Never change your server again!
Nothing personal
Sysadmins become developers
And not using Perl this time
Real infrastructure as a code
Shit just got real
Better blue/green deployments
Immutable canary deployments
Immutable nature of containters
Where to store data?
Somewhere else
But what about logs and metrics?
#monitoringsucks
Continuous Delivery at its best
Fully automated and repeatable
Prefabricated, prebuilt, prebaked,
phoenix, disposable, immutable
Just choose any already
Immutable infrastructure
The most ambiguous name
Embrace the change
And relax

DevOpsDays Ignite - Immutable infrastructure - Amsterdam 24-5-2015

Editor's Notes

  • #3 New cloud world requires new ideas DevOps, Continuous Delivery, Automation Especially valuable for microservices
  • #4 All historic experience Servers number - small Situation - manageable As the number grows, the task gets harder Compliance Updates
  • #5 And the concept of golden image appeared Provision from approved state Issues: Waiting for sysadmin to create and configure infra How to deal with already provisioned instances Managing live instances is the same as previously
  • #6 Infrastructure as a code Issues: Still infrastructure is re-used DSL (sometimes hard to learn) Compliant only in areas covered by code
  • #7 Deploying to stateful server is hard Edge-cases Serial deployment: handle exceptions manually Still not fun
  • #8 Need to deploy more frequently => repetition Easier when rebuilt from the scratch Repetition leads to mastery Fire drills are part of everyday life now! You infra is self-healing
  • #9 Continuous Delivery Lean Software Development Know exact MTTR Reduce Inconsistencies variability waste
  • #10 Never change – recreate! Server state is not saved Not like in functional programming language
  • #11 Sysadmins are developers now Code everything! 
  • #12 API is the key You can program infrastructure life cycle Create Configure Deploy Operate Dispose Deployments suddenly get a lot easier
  • #13 Create duplicate infrastructure Test everything Make the switch Can be done with reusable infrastructure too Slower
  • #14 Deploy new version alongside Gradually increase amount of traffic Monitor constantly If anything’s wrong – quickly revert When reach 100% - dispose older version
  • #15 Immutable Copy-on-write allows to easily revert to known-state Pass containers around and start without any data Dockerfile is essentially a bash file Is applied only once
  • #16 Somewhere else  persistency layer/database Stateless application
  • #17 Send to remote host Push instead of pull
  • #18 Continuous Delivery at its best Continuous Deployments Fully automated and repeatable Package application only once – and then never change it Quick feedback if anything fails Testing in production!
  • #20 New paradigm for the cloud era and microservices architecture.
  • #21 Make your life easier if you are operations – think as a developer If you are a developer - take responsibility for environment where your application is running. It’s a lot easier than before If you are a manager – embrace the future: Disposable infrastructure on-demand exactly when it’s needed.