In his latest post Daniel Cousineau talks about a good architecture decision (involving the Zend Framework) that allowed his company to stop on a dime and shift CDNs.
Only a few hours before our event and our CDN was failing probably 80% of the SSL handshakes for our requests to publish files. There is no need to name names as it was a difficult and obscure bug to diagnose in an extremely short amount of time. We needed to get it working, our CDN provider wasn’t going to be able to resolve the problem in the extremely short timeframe we required, so the decision was clear: we needed to switch providers for the new content.
Normally such a switch would take quite a while (2 weeks by his estimate) but because of their use of a Zend Framework-based setup and the API libraries that they'd written for it, the switch over was as easy as creating a new FileStore abstraction for the new CDN and changing some configuration settings. Thanks to the implementation of the Adapter pattern, his company was able to make a big change in a matter of minutes, saving them and their content.
So let this be a lesson to us all. Abstraction and design patterns sometimes feel like an "enterprisey overcomplication" but they aren't there for everyday needs. [...] So suck it up, use them, and thank yourself when you find yourself in such a situation.