Chapter 13. The Observable System
There are two key technical aspects to building a production-worthy system:
-
We must build a system that scales sufficiently, and that can handle the business requirements. In most of this book, we have focused on this aspect. We’ve looked at patterns that support safely introducing distribution into a system, which in turn supports easier distribution of work. We’ve largely waved away discussions of capacity planning, because our main goals have been to avoid introducing single points of failure, not to handle Google scale. A sufficiently decomposed system may still falter at much greater scale, but you can address those issues when you come to them.
When you meet these requirements, be clear about what you mean by scalability. There are many different ways to characterize scalability in a system, but unless you are sure of where your system is, you won’t be able to get it where you want it to go. You can use these measurements to feed into a model of your system’s scalability. One very useful model is defined in the Universal Scalability Law, which Baron Schwartz describes in his book Practical Scalability Analysis with the Universal Scalability Law. Coda Hale created a useful modeling library, usl4j, that—given observations (measurements) about any two dimensions of Little’s law—gives you a model for predicting any dimension from any other dimension. Such a model supports scaling to meet particular requirements. Here, a cloud platform like ...
Get Cloud Native Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.