You keep hearing about the term "Distributed Systems". But what is it exactly?
This
https://abs.twimg.com/emoji/v2/... draggable="false" alt="🧵" title="Thread" aria-label="Emoji: Thread"> covers some key characteristics of a distributed system:
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
This
A distributed systems is basically a system with multiple components that communicate and co-ordinate with each other to perform a task.
The whole system appears to be a single entity to the end user.
Below are some of the key characteristics of a distributed system:
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
The whole system appears to be a single entity to the end user.
Below are some of the key characteristics of a distributed system:
Scalability:
The ability to quickly and easily increase or decrease the size of a system or process to manage increased or decreased demand.
Any distributed system that can continuously evolve in order to support the growing amount of work is considered to be scalable.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
The ability to quickly and easily increase or decrease the size of a system or process to manage increased or decreased demand.
Any distributed system that can continuously evolve in order to support the growing amount of work is considered to be scalable.
Reasons to scale up a system:
https://abs.twimg.com/emoji/v2/... draggable="false" alt="▫️" title="Weißes kleines Quadrat" aria-label="Emoji: Weißes kleines Quadrat">increased traffic to a service
https://abs.twimg.com/emoji/v2/... draggable="false" alt="▫️" title="Weißes kleines Quadrat" aria-label="Emoji: Weißes kleines Quadrat">increase data volume
https://abs.twimg.com/emoji/v2/... draggable="false" alt="▫️" title="Weißes kleines Quadrat" aria-label="Emoji: Weißes kleines Quadrat">increased number of transactions
etc
Types of scaling:
https://abs.twimg.com/emoji/v2/... draggable="false" alt="▫️" title="Weißes kleines Quadrat" aria-label="Emoji: Weißes kleines Quadrat">horizontal
https://abs.twimg.com/emoji/v2/... draggable="false" alt="▫️" title="Weißes kleines Quadrat" aria-label="Emoji: Weißes kleines Quadrat">vertical
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
etc
Types of scaling:
Reliability:
A distributed system is considered reliable if it keeps delivering its services even when one or several of its software or hardware components fail.
Reliability is one of the main characteristics of any distributed system & is achieved through redundancy.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
A distributed system is considered reliable if it keeps delivering its services even when one or several of its software or hardware components fail.
Reliability is one of the main characteristics of any distributed system & is achieved through redundancy.
Redundancy basically means keeping backup resources like servers, data etc. When the main components go down, backups will serve the incoming traffic.
Redundancy comes with an additional cost. It& #39;s a tradeoff.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
Redundancy comes with an additional cost. It& #39;s a tradeoff.
Availability:
Availability is the time a system remains operational to perform its required function in a specific period.
It is basically the percentage of the time for which the system remains operational.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
Availability is the time a system remains operational to perform its required function in a specific period.
It is basically the percentage of the time for which the system remains operational.
You might have heard about 99.99% uptime. It means that the system / service can be down only for around 4 minutes in a month.
If a system is reliable, it is available. However, if it is available, it is not necessarily reliable.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
If a system is reliable, it is available. However, if it is available, it is not necessarily reliable.
Efficiency:
There are two standard ways to measure the efficiency of a system:
Latency: The total time taken to process a request and return a response.
Throughput: Number of requests processed in a given unit time.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
There are two standard ways to measure the efficiency of a system:
Latency: The total time taken to process a request and return a response.
Throughput: Number of requests processed in a given unit time.
Of course there are many other factors involved to say that a system is efficient based on the use case involved and how a system is built.
But above two are the major ones.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
But above two are the major ones.
Concurrency:
Concurrency is when multiple mutually exclusive operations are executed at the same time on same/different components of the system without any inconsistencies.
Concurrency reduces the latency and increases the throughput of a system.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
Concurrency is when multiple mutually exclusive operations are executed at the same time on same/different components of the system without any inconsistencies.
Concurrency reduces the latency and increases the throughput of a system.
Serviceability:
This is one of the important factors to consider while designing a distributed system.
It basically means the ease with which new features can be added and failures can be diagnosed in the system.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
This is one of the important factors to consider while designing a distributed system.
It basically means the ease with which new features can be added and failures can be diagnosed in the system.
If the time it takes to fix an issue increases, it& #39;s availability decreases.
There& #39;s no point building a complex system which is hard to maintain. The architecture should be flexible to add or remove new components frequently.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)">
There& #39;s no point building a complex system which is hard to maintain. The architecture should be flexible to add or remove new components frequently.
If you& #39;re preparing for system design interview, this course
https://abs.twimg.com/emoji/v2/... draggable="false" alt="👇🏻" title="Rückhand Zeigefinger nach unten (heller Hautton)" aria-label="Emoji: Rückhand Zeigefinger nach unten (heller Hautton)"> is highly recommended.
It covers all the topics and real world examples of designing distributed systems. https://www.educative.io/courses/grokking-the-system-design-interview?aff=xmn2">https://www.educative.io/courses/g...
It covers all the topics and real world examples of designing distributed systems. https://www.educative.io/courses/grokking-the-system-design-interview?aff=xmn2">https://www.educative.io/courses/g...