System Design Space
Knowledge graphSettings

Updated: February 21, 2026 at 11:59 PM

Modular Monoliths and Other Facepalms (short summary)

mid

Why modular monolith is a return to the engineering discipline: boundaries, dependencies and a conscious transition to microservices.

Modular Monoliths and Other Facepalms

Analysis of the report on why the “modular monolith” is not a new style, but a return to the engineering discipline: information hiding, module boundaries and verifiable dependencies.

Report

Modular Monoliths and Other Facepalms

Kevlin Henney speaks at NDC London about modularity, boundaries and the cost of distribution.

Main idea

The problem is often in the decomposition rather than in the deployment format

Microservices do not automatically cure bad boundaries, but only increase the cost of errors.

Limitation

Estimated timecodes

Without an official transcript, the semantic blocks of the video are roughly analyzed and marked separately.

Source

Microservices

Definition of microservices and basic trade-offs independent deployability.

Open article

Main points of the report

"Modular monolith" is a return to the engineering base

The focus is that modularity, information hiding and componentization existed long before microservices.

Microservices were often chosen as forced partitioning

A common motive: to force a division of a system when there are no longer healthy boundaries within the monolith.

False dichotomy: "monolith vs microservices"

The architecture is judged by the quality of boundaries and dependencies, not by the number of processes.

Historical principles of decomposition are still relevant

Parnas, ADT and component thinking as practical supports for architecture today.

Distribution reinforces bad architecture

Transferring a bad structure to the network creates the same chaos, but is more expensive to operate.

Practical conclusion: modular monolith first

Start from a modular monolith and incremental allocation of services based on sustainable drivers.

Timeline visualization

The evolution of "modularity" as a discipline (in terms of primary sources)

1972

D. Parnas - decomposition criteria, information hiding

Formalization of the idea that a module should hide implementation details and fix stable boundaries.

1974

Liskov & Zilles - abstract data types (ADT) and extensible abstractions

Strengthening the design approach through data abstractions and a contractual style of interaction.

1997

Foote & Yoder - Big Ball of Mud pattern (evolution anti-pattern)

It is shown how, without discipline and boundaries, the system naturally collapses into a lump of dependencies.

2014

Lewis & Fowler - definition of microservices as a set of independently deployable services

Emphasizes that the value of microservices comes from independent deployment, not from a fancy shortcut.

2014

Simon Brown - "distributed big balls of mud" as a risk of distributed degradation

Distribution increases the cost of architectural mistakes if boundaries are not drawn up in advance.

2026

"Modular monolith" as a pendulum/rebranding of the modularity discussion

Reframe: This is a return to a basic engineering discipline rather than the emergence of a new architectural style.

Conclusions for developers

  • Modularity is a property of dependencies and contracts, not of the infrastructure and the number of services.
  • Turn architecture into testable rules: loops, prohibit traversal of layers, direction of imports.
  • Calling a system modular monolith is not enough: the boundaries must be firmly expressed in code and CI.
  • Select services only based on stable business boundaries and a clear need for independent deployment.

Conclusions for tech leads

  • Make modular monolith the default strategy and microservices a sound investment.
  • Budget for the cost of distribution: observability, security, delivery-platform, data-consistency.
  • Manage the architecture with structure metrics: forbidden dependencies, cycles, drift between modules.
  • Formalize module ownership and architectural violation policy (baseline + debt reduction plan).

Practical plan for 2-4 weeks

  1. 1Fix 3-7 modular boundaries and assemble a dependency graph by code.
  2. 2Add 5-10 architectural rules to CI (layers, cycles, forbidden imports).
  3. 3Include a baseline approach: a ban on the growth of violations + a plan for their gradual burning.
  4. 4Only review service candidates where there are independent SLAs/release cycles.

When to stay in a monolith and when to spin out services

Modular monolith as default

If independent deployment is not a sustainable requirement, it is better to invest in modular boundaries, architecture tests and ownership within a single process.

Microservices as a conscious step

Select services when there are clear drivers of independent deployability, separate SLAs, scaling in parts and readiness for the cost of distribution.

Risks and limitations

  • Timecodes for scenes in the report are of a reconstructive nature and are not a transcript.
  • The transition to microservices without mature boundaries often leads to distributed monolith and an increase in operational load.
  • The label "modular monolith" without testable dependency rules quickly becomes marketing hype.

Related chapters

Enable tracking in Settings

System Design Space

© 2026 Alexander Polomodov