What distributed primitive do I need?

Answer questions about the system — what it must guarantee, what can fail, what each node can know — never about a product. You arrive at a primitive together with the guarantee it actually offers, the guarantees it refuses, the trade-offs you are buying, how it fails in production, and the simpler thing to weigh first.

Start from the guarantee you need, never from the technology you have heard of. Almost every expensive distributed-systems mistake is a primitive chosen before anyone wrote down what had to remain true — so the first question here is about your invariant, not your infrastructure.

What are you actually trying to achieve?

How to answer honestly · Say it as a sentence about state, not about components. "Two services must agree on who owns this lease" is answerable. "We need Kafka" is not a requirement, it is a conclusion someone else reached about a different problem.