Architecture: SOA strategy
This course applies service-oriented architecture to a Ruby application with ten bounded contexts enforced by convention. It measures the code references between contexts and the foreign keys in the schema, and shows that Catalog and Identity form a shared kernel. It covers the seven costs of a network boundary, five criteria for choosing what to extract, and three stages of extraction. It closes with Conway's law, team count as the threshold, and an ADR that records the decision to extract nothing.
What you'll learn
- ✓Measuring coupling between bounded contexts in code and in the database schema
- ✓Why foreign keys that cross a context boundary decide what can be extracted
- ✓The seven costs of turning a method call into a network call
- ✓Five criteria for choosing a context to extract
- ✓Extracting in three stages: entry point, network, then data
- ✓Using Conway's law and team count to make the decision
You already have the boundaries
Service-oriented architecture is usually presented as a destination. It's more useful as a question about the boundaries you already have, so the first step is to measure the ones in this application.
Read the full lesson free →Curriculum
7 lessonsYou already have the boundaries
Counts ten bounded contexts and the code references between them, and frames SOA as one local question.
Where the boundaries are not
Maps the twenty-two foreign keys that cross contexts and shows Catalog and Identity acting as a shared kernel.
What a network boundary costs
Lists seven costs of a network boundary, the benefits it buys, and why the costs arrive first.
Choosing what to extract
Applies five extraction criteria to every context and explains why each one, including Execution and Partners, is a no.
The seam before the split
Describes three extraction stages in order, starting with one in-process entry point that returns Data objects.
Conway and the real reason
Uses Conway's law to show that the number of teams sets the threshold for extracting a service.
Putting it together: the answer is no
Brings the measurements together, recommends extracting nothing, and lists three follow-up actions, including an ADR with revisit conditions.