SA-301b · Module 1

Boundary Validation

3 min read

Drawing boundaries is the first step. Validating them is the step that prevents the distributed monolith. A service boundary is valid if the services on each side can operate, deploy, and fail independently. If service A cannot be deployed without simultaneously deploying service B, the boundary between them is an illusion. If service A fails and service B becomes non-functional, the boundary is a lie.

  1. Independent Deployment Test Can each service be deployed without deploying any other service? If deploying service A requires a coordinated deployment of service B, the services share a coupling that the boundary should have eliminated. Identify the coupling: shared database schema, synchronized API versions, or shared configuration. Eliminate it or acknowledge that these services are not truly independent.
  2. Independent Failure Test If service A goes down, does service B continue functioning — possibly in a degraded mode? A service that is non-functional when a dependency fails has a synchronous coupling that undermines the independence the boundary was supposed to provide. The solution: async communication patterns, local caches, circuit breakers, and graceful degradation.
  3. Team Ownership Test Can a single team own and operate this service without requiring another team's approval for changes? If two teams must coordinate on every change, the service boundary does not align with the organizational boundary — and Conway's Law will reshape the architecture to match the organization anyway.