skip to content

Distribution Styles

Styles that spread a system across processes, services and managed platforms: SOA, microservices, event-driven, serverless and microfrontends. They all trade in-process simplicity for independent deployment and scaling.

part ofSoftware design & architectureoverview, primer and where to startread it →
on this pageshow

explore

questions

86 · 5 sections

What does it mean for a service in a Service-Oriented Architecture (SOA) to be 'coarse-grained', and why did SOA favor this over many small services?

level: juniorimportance: must knowfreq 40%
basics
~10 s

A coarse-grained SOA service bundles a whole business capability (like 'Order Management') behind one interface, instead of splitting into many tiny services, so fewer calls and less network chatter are needed.

open as a page

What role does an Enterprise Service Bus (ESB) play in a Service-Oriented Architecture, and what problems arise when an organization routes all inter-service communication through it?

level: middleimportance: must knowfreq 55%
basics
~20 s

An ESB is a central piece of middleware that routes, translates, and sometimes transforms messages between services, so services don't need to know how to talk to each other directly - but if too much logic piles into it, it becomes a slow, fragile bottleneck everyone depends on.

open as a page

In classic SOA, what do a WSDL document and the SOAP protocol together provide for a service contract, and how does this style of contract differ from a typical REST/JSON API contract?

level: middleimportance: must knowfreq 45%
basics
~20 s

WSDL is an XML file describing exactly what operations a service offers, what data it expects and returns, and how to reach it; SOAP is the XML message envelope used to actually call it. Together they make the contract very strict and machine-checkable, unlike looser REST/JSON APIs.

open as a page

In what concrete ways does classic SOA differ from microservices architecture, and in what ways did SOA prefigure ideas that microservices later adopted?

level: seniorimportance: must knowfreq 60%
basics
~20 s

SOA and microservices both break a system into services, but SOA services usually share a central ESB and shared data model and are governed centrally, while microservices talk more directly and are owned independently. Still, SOA's core idea - build a system as loosely coupled services with contracts - is the same idea microservices inherited and refined.

open as a page

What is a canonical data model in an SOA integration landscape, what problem does it solve, and what costs does introducing one impose on the organization?

level: seniorimportance: should knowfreq 35%
basics
~20 s

A canonical data model is one shared, agreed-upon 'master' format for a business concept (like Customer or Order) that every service translates to and from, so many different systems don't need a custom translation for every other system.

open as a page

In the microservices architectural style, what does it mean for a service to be 'independently deployable', and why is that the defining trait of the style?

level: juniorimportance: must knowfreq 70%
basics
~10 s

A microservice can be built, tested, and released on its own, without redeploying other services at the same time. This is the core feature that lets teams move fast without waiting on each other.

open as a page

Why do most microservices practitioners insist that service boundaries be drawn around business/bounded contexts rather than around technical layers such as 'all validation logic' or 'the notification tier'?

level: middleimportance: must knowfreq 65%
basics
~20 s

Grouping a service by business area (like 'Payments' or 'Inventory') keeps everything that changes together in one place. Splitting by technical layer instead means one small business change touches many services at once, which is slow and fragile.

open as a page

In the microservices style, what does 'failure isolation' mean in practice, and what has to be true architecturally for one service's failure to NOT take down the whole system?

level: seniorimportance: must knowfreq 75%
basics
~20 s

Failure isolation means if one small service crashes or slows down, the rest of the system keeps working instead of everything going down together. It requires the other services to handle that failure gracefully instead of just waiting forever or crashing too.

open as a page

In a microservices system, what does 'polyglot persistence' mean, and what concrete problem does it let a team solve that a single shared database could not?

level: middleimportance: should knowfreq 50%
basics
~20 s

Different services can use different types of databases -- like a graph database for recommendations and a plain SQL database for orders -- because each service picks the storage that best fits its own data, instead of everyone being forced onto one shared database.

open as a page

A company has split its system into 40 separately deployed services, each with its own repository and CI pipeline. Releases, however, still require a scheduled 'release train' where most services deploy together in a fixed order, and a shared database is queried directly by a dozen of the services. What architectural anti-pattern does this describe, and what does it cost the organization compared to either a true microservices style or a well-modularized monolith?

level: seniorimportance: should knowfreq 60%
basics
~20 s

This is called a 'distributed monolith' -- many separate services that still have to be released together and share data directly. It gives you all the extra network calls and complexity of microservices, but none of the benefit of teams shipping independently.

open as a page

In an event-driven system, a service publishes an 'OrderPlaced' event instead of calling the shipping service directly. What are producers and consumers, and how does this decouple the two services?

level: juniorimportance: must knowfreq 75%
basics
~10 s

A producer creates and sends out an event (like 'something happened') without knowing who's listening. A consumer picks up events it cares about and reacts. Neither needs to know the other exists directly.

open as a page

In event-driven architecture, what is the difference between a broker topology, where a checkout event triggers inventory, shipping, and notification services directly, versus a mediator topology, where a central component orchestrates the same steps? What do you give up by choosing the broker approach?

level: middleimportance: must knowfreq 65%
basics
~20 s

Broker topology: services react to an event directly, no one's in charge, like everyone hearing an announcement and acting on their own. Mediator topology: one central coordinator listens first and tells each service what to do, in order.

open as a page

What does 'temporal decoupling' mean in an event-driven system, and how does it change the availability characteristics of a producer compared to a synchronous request/response call?

level: seniorimportance: must knowfreq 60%
basics
~20 s

The sender and receiver don't have to be online or ready at the exact same moment. The event waits until the receiver is ready to handle it, unlike a phone call where both sides must be on the line together.

open as a page

A team is building a form submission flow where the page must immediately show a computed result (e.g., a loan eligibility score) before rendering. Why would implementing this specific interaction as an event-driven, publish-and-react flow be a poor fit compared to a direct synchronous call?

level: middleimportance: should knowfreq 50%
basics
~20 s

The user is waiting right there for an answer. Event-driven flows don't promise a fast, in-order response, so making them wait for a broadcast-and-hope-someone-answers pattern is the wrong tool — a simple direct call that returns the answer is simpler and faster here.

open as a page

A customer cancels an order on an e-commerce site, and the UI immediately shows 'Cancelled.' The inventory count that was reserved for that order, however, is only released a few seconds later by a separate service reacting to a CancellationRequested event. What consistency model is this, and what problems can it create if another part of the system reads inventory during that window?

level: seniorimportance: should knowfreq 55%
basics
~20 s

The system says 'done' before every related piece of data actually catches up — it becomes correct everywhere a little later, not instantly. If something checks inventory in that gap, it can see stale, wrong numbers.

open as a page

A two-person startup wants their app to have user login, a database, and push notifications, but nobody on the team wants to run or patch servers. Using Backend-as-a-Service (BaaS) products like Firebase Authentication, Firestore, and Firebase Cloud Messaging, how does building the app this way differ from writing and hosting a traditional custom backend for those same three features?

level: juniorimportance: must knowfreq 70%
basics
~10 s

BaaS means renting ready-made backend pieces (login, database, notifications) from a vendor's cloud instead of writing and running your own server code and infrastructure for each of them.

open as a page

In a serverless platform like AWS Lambda, what is a 'cold start' and why does it add latency to the first request?

level: juniorimportance: must knowfreq 75%
basics
~20 s

A cold start is the extra delay when a serverless function runs for the first time (or after being idle) because the cloud provider has to set up a fresh container and boot the code before it can process the request, instead of reusing one that's already running.

open as a page

In serverless computing, what does 'pay-per-invocation' pricing mean, and what are the two components (requests and GB-seconds) that make up the bill for a function like AWS Lambda?

level: juniorimportance: must knowfreq 70%
basics
~20 s

You pay for two things: how many times your function ran (per request), and how much compute it used each time (memory allocated multiplied by how long it ran, in GB-seconds). No traffic means no bill.

open as a page

A serverless platform can invoke a function two different ways depending on the event source: some sources 'push' an event straight to the function, while others are 'polled' by the platform on the function's behalf. Using an HTTP API Gateway trigger and a message-queue trigger as examples, what is the basic difference between these two invocation models?

level: juniorimportance: must knowfreq 55%
basics
~20 s

Push: the source (like an API Gateway) calls the function immediately for each request, so it runs right away. Poll: the platform itself checks a source (like a queue) on a timer, gathers waiting messages, then invokes the function with a batch.

open as a page

In a Functions-as-a-Service (FaaS) platform like AWS Lambda, what is the difference between a 'cold start' and a 'warm start' when a function is invoked, and why does it happen?

level: juniorimportance: must knowfreq 80%
basics
~20 s

A cold start is when the cloud has to build a fresh environment to run your function, which takes extra time. A warm start reuses an environment left over from an earlier call, so it responds almost instantly.

open as a page

In a microfrontend architecture, what is the basic difference between mounting a microfrontend as a JavaScript bundle directly into the DOM versus embedding it via an iframe?

level: juniorimportance: must knowfreq 65%
basics
~20 s

JS mount loads the microfrontend's code into the same page so it shares the DOM and can talk to other parts easily. An iframe loads it as a separate mini-webpage inside a box, fully isolated but harder to communicate with.

open as a page

In a microfrontend architecture using Webpack Module Federation, what is the difference between a 'host' application and a 'remote' application, and how do they connect at runtime?

level: juniorimportance: must knowfreq 55%
basics
~20 s

A host is the app that loads pieces from other apps; a remote is the app that shares its pieces. Webpack lets the host fetch and run the remote's code straight from the browser, without both being built together.

open as a page

In a microfrontend shell application, what is the difference between path-based routing (e.g. example.com/checkout) and hash-based routing (e.g. example.com/#/checkout) for deciding which microfrontend to load?

level: juniorimportance: must knowfreq 70%
basics
~20 s

Path-based routing uses the real URL path and needs server/CDN config to serve the app for every path; hash-based routing puts the route after a # so the browser never asks the server for it, but it looks less clean and hurts SEO.

open as a page

In a microfrontends architecture, what is the core difference between integrating a microfrontend at build time versus at runtime?

level: juniorimportance: must knowfreq 70%
basics
~20 s

Build-time means you bake all the pieces together into one app before you ship it, like baking ingredients into one cake. Runtime means the browser loads separate pieces live, like assembling a meal from dishes served at the table.

open as a page

In a microfrontend architecture where several independently-built apps are combined on one page, what is the difference between sharing a UI library like React as a 'singleton' versus letting each microfrontend bundle its own 'scoped' copy, and why does the choice matter?

level: juniorimportance: must knowfreq 65%
basics
~20 s

Singleton means every microfrontend uses one shared copy of a library loaded once on the page. Scoped means each microfrontend ships and uses its own private copy. Singleton saves download size but couples apps; scoped isolates apps but repeats code.

open as a page