# When Microservice Decomposition Is the Wrong Default

DevFeed: [When Microservice Decomposition Is the Wrong Default](<https://devfeed.tech/articles/when-microservice-decomposition-is-the-wrong-default-34109.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/microservice-decomposition-heuristic/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-08-21T07:00:00Z

Content type: opinion

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [Microservice](<https://devfeed.tech/topics/microservice.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [FastAPI](<https://devfeed.tech/topics/fastapi.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [circuit](<https://devfeed.tech/tags/circuit.md>), [docker](<https://devfeed.tech/tags/docker.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [migration](<https://devfeed.tech/tags/migration.md>), [modular-monolith](<https://devfeed.tech/tags/modular-monolith.md>), [monolith](<https://devfeed.tech/tags/monolith.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [tracing](<https://devfeed.tech/tags/tracing.md>)

## AI overview

The article argues that splitting a small system into microservices should not be the default. It recommends keeping responsibilities in a modular monolith unless differences in scaling needs, organizational boundaries, or failure isolation justify a network boundary, whose costs include contracts, compatibility management, retries, timeouts, circuit breaking, and distributed tracing.

## Source excerpt

import-linter forbidden contract as a module boundary: a FastAPI modular monolith instead of early microservices, and when a network split pays off.