We maintain that three simple rules can help you scale nearly everything. Scaling along the X, Y, and Z axes each has its own set of benefits. Typically X axis scaling has the lowest cost from a design and software development perspective; Y and Z axis scaling is a little more challenging to design but gives you more flexibility to further fully separate your services, customers, and even engineering teams. There are undoubtedly more ways to scale systems and platforms, but armed with these three rules, few if any scale-related problems will stand in your way:
Scale by cloning—Cloning or duplicating data and services allows you to scale transactions easily.
Scale by splitting different things—Use nouns or verbs to identify data and services to separate. If done properly, both transactions and data sets can be scaled efficiently.
Scale by splitting similar things—Typically these are customer data sets. Set customers up into unique and separated shards or swim lanes (see Chapter 9 for the definition of swim lane) to enable transaction and data scaling.