Tightly Coupled vs Loosely Coupled Systems: Why Pub/Sub Matters

Ben Makansi
April 14, 2026

This article covers what tightly coupled and loosely coupled systems mean in practice, why Pub/Sub is the canonical example of a tool that decouples producers from consumers, and how the Associate Cloud Engineer exam tests this concept.

It does not cover the deeper architectural debates around event-driven systems versus orchestration, choreography versus orchestration, or the trade-offs of asynchronous communication in general. Those are valuable conversations but not what the ACE exam asks about.

What coupling actually means

Coupling is a measure of how dependent two components are on each other. In a tightly coupled system, the two components have to be available at the same time, in the same way, in the same place, for the system to work. If one fails, the other fails too. If one is slow, the other gets blocked. If one changes, the other has to change too.

In a loosely coupled system, the two components can fail independently, run at different rates, scale independently, and change independently. Failures in one do not propagate to the other. Slowness in one does not block the other.

Loose coupling is almost always preferable in distributed systems because real distributed systems have failures, latency variations, and version skew built into the environment. A tightly coupled system that depends on everything being healthy at once does not survive contact with reality.

The classic example

Imagine a sender that is producing data and a receiver that is processing that data. In a tightly coupled setup, the sender calls the receiver directly. Every message flows from sender to receiver in a synchronous request-response.

If the receiver is down, the sender's calls fail. If the receiver is slow, the sender backs up. If the receiver scales differently from the sender, one of them ends up overwhelmed. If the receiver gets replaced or moved, the sender has to know about the change.

The whole communication chain breaks down when one side has problems. There is no buffer. There is no flexibility.

How a message bus decouples

A message bus, like Pub/Sub, sits between the sender and the receiver. The sender no longer talks to the receiver directly. The sender publishes a message to a Pub/Sub topic. Pub/Sub holds the message. The receiver subscribes to the topic and pulls or receives the message when it is ready.

That single architectural change unlocks several properties. The receiver can be down for a while and Pub/Sub will hold the messages until the receiver comes back. The sender does not have to wait for the receiver to finish processing. Multiple receivers can subscribe to the same topic, and the sender does not need to know how many. New receivers can be added later without changing the sender.

This is what loose coupling looks like in practice. The sender does not know who the receivers are. The receivers do not know who the senders are. The bus mediates everything.

Why this pattern matters

Loose coupling shows up everywhere in modern distributed systems. The reason is reliability. A microservice architecture where every call is synchronous is fragile. The same architecture where most communication happens through a message bus is far more resilient. One service going down does not cascade. One service being slow does not block others.

It also matters for scale. A high-traffic publisher can keep publishing while a slower consumer drains messages at its own rate. The bus is the buffer that absorbs the rate mismatch. Without it, the publisher would have to slow down to match the consumer or the consumer would get overwhelmed.

For analytics pipelines specifically, this is the standard architecture. Data sources publish to Pub/Sub. Dataflow consumes from Pub/Sub for real-time processing. BigQuery loads from Dataflow output. Each component scales and fails independently.

How the ACE exam tests this

The exam tests this concept in scenario form. A question describes two services that need to communicate, and the scenario emphasizes properties that point to one approach or the other.

If the scenario describes services that need to be decoupled, that need to handle failure of one side gracefully, that need to scale independently, or that need to fan out the same data to multiple consumers, the answer involves Pub/Sub. The phrase "loosely coupled" or "asynchronous communication" is a strong signal.

If the scenario describes a synchronous request-response pattern where one service has to wait for the other to complete, that is tight coupling. The answer might be a direct API call rather than a message bus.

If you see in the question producer and consumer patterns, fan-out to multiple subscribers, decoupling for resilience, or asynchronous messaging, think Pub/Sub. The mental model the ACE exam wants you to have is "Pub/Sub is the loose-coupling tool."

The bottom line

Tightly coupled systems require both sides to be healthy, available, and synchronized. Loosely coupled systems do not. Pub/Sub is the GCP service that turns a tightly coupled communication pattern into a loosely coupled one by sitting between producers and consumers as a buffer.

For the Associate Cloud Engineer exam, recognize the architectural concept and recognize that Pub/Sub is the answer for decoupling. That is most of what gets tested here.

My Associate Cloud Engineer course covers tight and loose coupling in the Pub/Sub section, which connects to the broader data engineering pipelines (Pub/Sub, Dataflow, BigQuery) that show up across the ACE exam.

arrow