Voodoo AIVoodoo AI
Book a Consultation
Back to Architecture & Systems
Architecture 10 min read April 2026

Microservices: Boundaries and Team Structure

How to draw service boundaries that align with team autonomy and avoid creating distributed monoliths.

Conway's Law in Practice

Conway's Law states that organisations design systems that mirror their communication structures. If your teams are organised by layer (frontend, backend, database), you will build layered systems. If your teams are organised by business capability, you will build services aligned with business domains.

You cannot build microservices without restructuring teams. If you keep the same team structure and try to adopt microservices, you will build a distributed monolith.

Retail Client Example: We worked with a retail client that reorganised teams by business domain (catalogue, pricing, inventory, orders) before attempting microservices. The services emerged naturally from the team boundaries. Each team owned a business capability end-to-end: UI, API, business logic, data, and infrastructure. The result was genuine service autonomy.

The Domain Boundary Test

A good microservice boundary means:

  • The service can be developed, deployed, and scaled independently.
  • The service owns its data exclusively. No shared databases.
  • The service handles a coherent business capability from end to end.
  • Changes inside the service rarely require changes in other services.
Independent Deployment Litmus Test: If you cannot deploy a service without deploying other services, you do not have microservices. You have a distributed monolith. Pick a service, make a change, deploy it. If any other service needs to deploy at the same time, the boundary is wrong.

Data ownership is equally critical. Shared databases are the most common cause of tight coupling. When two services share a database, they share a deployment boundary. A schema change in one service breaks the other. The solution is database per service.

The Distributed Monolith Trap

The worst outcome is a distributed monolith: services that cannot be deployed independently because they are tightly coupled. Every change requires coordinated deployment across multiple services. The operational overhead of microservices without the benefit of independent deployability.

Distributed Monolith Symptoms: Coordinated deployments (multiple services must deploy together), shared databases (schema changes affect multiple services), synchronous call chains (A calls B, which calls C, which calls D), and cascading failures (one service failure causes multiple others to fail).
The Monolith Reversion: We have worked with clients who spent 18 months building microservices, only to merge them back into a monolith because the operational overhead exceeded the benefits. The monolith was not the problem; the premature microservices adoption was.

Our Recommendation

Start with a modular monolith. Extract services only when a module clearly meets the domain boundary test. Team structure should drive service boundaries, not the other way around.

Start with 2-3 services, not 20. Prove the model, establish the practices, and then expand. The organisations that succeed with microservices are those that grow into them gradually, not those that adopt them wholesale from day one.

Extraction Process: Identify a module with clear boundaries, create a team to own the service, extract the service from the monolith, establish API contracts and versioning, and run both in parallel until stable. This typically takes 2-3 months per service. Rushing the extraction creates a distributed monolith.

Voodoo AI Engineering Team

We have guided 20+ organisations through microservice adoption.

Planning microservices?

We have guided 20+ organisations through microservice adoption.

Book a Consultation