We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
You Keep Using That Word • Sam Newman • GOTO 2024
Learn why terms like 'asynchronous' and 'synchronous' cause confusion in system design. Sam Newman explores precise terminology and patterns for better communication.
-
Words like “asynchronous” and “synchronous” have multiple competing definitions, especially in the context of inter-process communication, leading to confusion and misunderstandings
-
Rather than using ambiguous terms, focus on describing specific behaviors and requirements:
- Temporal coupling/decoupling
- Blocking vs non-blocking
- Latency requirements
- Response handling needs
-
Brokers and intermediaries enable:
- Temporal decoupling
- Guaranteed message delivery
- Parallel processing
- Better scalability
- Improved system robustness
-
Stateless processing is preferable to stateful processing for distributed systems:
- Easier to scale
- More resilient
- Better suited for parallel operations
-
Context is crucial for effective communication about system design:
- Define terms explicitly within your team
- Focus on describing desired behaviors and outcomes
- Use more precise terminology instead of overloaded terms
- Consider the specific needs of your application
-
Non-blocking operations can improve performance but:
- May still require waiting for responses
- Don’t automatically solve all problems
- Need to consider failure scenarios
- Should match actual application requirements
-
Event-driven systems tend to be:
- More loosely coupled
- Better at handling scale
- More complex to reason about
- Harder to debug and maintain
-
When designing system interactions, consider:
- Required response times
- Failure scenarios
- State management
- Message delivery guarantees
- User experience needs