Scaling Your Online Business for the Holidays
No matter how well your architecture is designed, things outside of your control may impact the performance or availability of your website. Designing your infrastructure with redundancy of each component in mind helps to avoid single points of failure and is crucial if uptime of your service is the driver for the business. Make sure that each individual component and service in your architecture has a failover or fallback plan. It's better to be prepared than to fall victim to an edge case that no one accounted for in the holiday rush planning process.
While these concepts should be at the core of every architecture, they're not always easy to implement. These tasks are time consuming and, more often than not, a large engineering effort is required to optimize your whole application (especially if it wasn't designed with scalability in mind from the beginning) to meet more demanding performance requirements. Wholesale changes can sometimes be more damaging than helpful, especially given tight time constraints. Small features that weren't considered from a scalability angle can bring down your whole application in a heartbeat. And if you're preparing for a planned (and especially if you're dealing with unplanned) traffic spike, you don't have all the time in the world to bulletproof the system. Therefore, you must choose your battles. The right battle is to optimize for business needs.
Applications tie into revenue generation (e.g., selling products, serving ads, displaying visual content, etc.) or provide a service that's a part of your core business strategy. Optimize for those goals. Approach the problem from the point of view that it's acceptable for every other service/component to fail, as long as most critical business processes work. As a CEO of a large e-commerce company once said to me, "I don't care if my data center is on fire, as long as I'm still making money."