on same host • Lowers network traffic • Bigger impact in case of failure • Fewer machines needed / Cheap • Risk of resource conflicts • Harder to debug / identify bottlenecks
Cache on own hosts • High internal network traffic • More instances needed (expensive) • Guaranteed resources • Easy to identify bottlenecks • Better performance in case of failure
physical hardware • Multi-site application hosting in different data centres • Synchonization traffic between data centers (Internet / fibre channel) • Disaster safe • Complex and very expensive • “SysOp Porn”
coding • Every application-state must be shared somehow with all other nodes • If one node fails, it must not block others • Avoid long running processes
replication on your DB • One big problem of distributed apps, even for Facebook (e.g.) • There is no perfect solution for dealing with it, but awareness • See CAP-Theorem
a performance bottleneck • Avoid booting a Symfony stack for asset delivery • Cache assets (e.g. with Varnish) or use a CDN for asset delivery • Rename assets to invalidate caches