This ignite talk was delivered at DevOpsDays Amsterdam 2015. The talk goes in short over immutable infrastructure - why it is beneficial in the modern software development and how to start using it.
New cloud world requires new ideas
DevOps, Continuous Delivery, Automation
Especially valuable for microservices
All historic experience
Servers number - small
Situation - manageable
As the number grows, the task gets harder
Compliance
Updates
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
Infrastructure as a code
Issues:
Still infrastructure is re-used
DSL (sometimes hard to learn)
Compliant only in areas covered by code
Deploying to stateful server is hard
Edge-cases
Serial deployment:
handle exceptions manually
Still not fun
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
Never change – recreate!
Server state is not saved
Not like in functional programming language
Sysadmins are developers now
Code everything!
API is the key
You can program infrastructure life cycle
Create
Configure
Deploy
Operate
Dispose
Deployments suddenly get a lot easier
Create duplicate infrastructure
Test everything
Make the switch
Can be done with reusable infrastructure too
Slower
Deploy new version alongside
Gradually increase amount of traffic
Monitor constantly
If anything’s wrong – quickly revert
When reach 100% - dispose older version
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
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!
New paradigm for the cloud era and microservices architecture.
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.