Scalability and Availability are two non-functional requirements that I could never reject or push-back to the business. It is critical that a business application is available to all intended users/audience at the agreed service levels. Although this is not a SLA discussion it is important to mention SLAs. SLA usually define your Scalability and Availability aspects. Getting back to our original discussion about how to scale, here are few pointer that we usually look to:
- Business Functions that Support the day-to-day business transactions.
- Infrastructure Functions that indirectly support business functions. These are typically re-usable components.
- Caching Aspects
- Distributed transactions
Without going to deep into the issue, here is the link on how Ebay manages these issues: