Image source: my 6 yo daughter
Alex FernándezDeveloper with 15+ years of experience
How to Flow
Flow with Requirements
Flow with Operational Constraints
Don't Stop Flowing
And we like when things flow smoothly!
And you should adapt to them
80s: minicomputers & terminals
90s: client-server
00s: three tiers
10s: NoSQL
Does not exist
Spot the seven differences
From 38 to 112 krps in one day
… to a new cloud provider?
… to a new hosting company?
… to your own datacenter?
It matters because costs escalate quickly
are painful efforts
but shouldn't be
Build a compatibility layer
Avoid downtime at all costs
Treat access and data separately
Have a reverse migration strategy…
… but try not to use it
Warning: may not apply to your situation
Migration to Amazon virtual private cloud
Tried on 2015-03-03
Reversed on 2015-03-05
Due to an unrelated failure (!)
Tried again on 2015-03-11
Migrated EU on Friday the 13th
because who's afraid of superstitions?
Migrated from AWS to Facebook datacenters
Year-long effort, from 2013-03 to ~2014-03
Had to go through AWS VPC first
Neti — a dynamic iptables manipulation daemon in Python
Three weeks into VPC, two weeks to FB
Bare minimum approach (!)
Also migrating datacenters
Will start sending 10% of traffic
from new datacenter
Inter-datacenter latencies
Build a compatibility layer
Avoid downtime at all costs
Have a reverse migration strategy…
The only way to fly supersonic fighters
Use safe defaults
Fail safely
Or stay put and never break anything
Or anything in between