Member-only story
Trade-offs in distributed system (part 1)
Motivation of this post
This post is intended for software engineers seeking deeper understanding of distributed system design. After reading this post and part 2, you should feel comfortable about this question:
What do we talk about when we talk about distributed systems?
We solve problems of the distributed system design everyday, like scheduling dinner with a group of friends. However, the literature is often intimidating with ambiguous concepts and vocabulary. Many concepts, like the CAP theorem, have specific meanings in history but are now widely misused.
In this post, I will try to reconcile and clarify the related concepts from database community, distributed system community and practical engineering vocabulary. The concepts are explained by the contextual problem they are created for. Having concise vocabulary for abstract concepts is critical for understanding the problem we are trying to solve. More often than not, once the problems are understood, the solutions are very intuitive.
The second part of this series consists of practical trade-offs described in the precise vocabulary.