Chapter 3. Distributing and Scaling the Storage Layer

To some extent, the problem of distributing application logic—or more generally, computational services—was solved decades ago. Even in the client-server era prevalent in the 1990s, application logic would typically be running on the client tier in multiple locations—indeed, there would typically be one copy of application logic running on each user’s client PC. Each had, in effect, their own compute and memory, which do not depend on, or interfere with, another user’s compute or memory.

As we transitioned from client-server to the early internet, web application servers took on the role of hosting computational services, and it was generally possible to deploy as many of these as was necessary to support demand.

However, the database layer has historically been a completely different matter. Every application will have certain data elements that must be consistent across all users or at least some subset of users. Therefore, users must share database services. Maintaining a consistent and persistent database state across distributed nodes has been challenging.

Database technology has come a long way since the monolithic databases that powered web 1.0. Today, reliable distributed transactional databases exist, and these databases are best suited to meet the demands of modern distributed applications.

Distributed Database Examples

In the following sections, we describe the capabilities common to modern distributed transactional ...

Get Architecting Distributed Transactional Applications 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.