What Are Miniservices?

Modern computing can be described as the compromises between processing (in-process execution), communication (between networked processes), and data (input/output of a process).

There are many other ways of defining and breaking out computing, but I have found these three aspects of a computing system pivotal to design and architecture discussions, so I will be highlighting them throughout this report.

For each of these categories, there are critical decisions to make within an architecture. All three are similarly important, yet I have consistently seen that teams attempting to build a microservices architecture tend to focus primarily on processing and communication. Conway’s Law, which observes that organizations build systems that resemble how they communicate, in practice often prevents a good discussion about the data. You can find effective strategies, books, and tooling on the fallacies of distributed computing (communication) or on building and deploying fine-grained interfaces on atomic services (processing), but the data topic too often remains siloed and disconnected from the conversation.

Often, I see data design relegated to a few “data people” who are usually on an external/shared team. As a result of this artificial distinction, discussions about the data life cycle are a hodgepodge of conversations specific to one technology or tool set, limited to a specific pattern of data access, and isolated from the wider architectural conversation ...

Get What Are Miniservices? 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.