S
Sheba ISP ERPDOCS
Architecture Decisions (ADRs)

ADR-001: Modular Monolith vs Microservices

Decision to structure the backend as a single cohesive modular monolith rather than distributed microservices.

ADR-001: Modular Monolith vs Microservices

  • Status: ACCEPTED
  • Deciders: Lead Architect
  • Date: September 2026

Context

An ISP ERP orchestrates deeply interrelated workflows: subscriber registration requires simultaneous customer creation, billing account provisioning, invoice generation, and edge router sync. Breaking these operations across distributed microservices introduces distributed transactions (2PC / Sagas), network latency, and operational overhead.


Decision

We chose a Modular Monolith using Django:

  • Applications are organized into 13 cohesive domain apps in backend/apps/.
  • Cross-module operations execute within ACID database transactions.
  • Deployment remains a single container service, drastically simplifying CI/CD and hosting.

Consequences

  • Positive: Zero network latency for inter-module calls; trivial local development setup; atomic database transactions.
  • Negative: Requires strict discipline to prevent spaghetti imports and ensure clean module boundaries.

On this page