Update README.md (#10228)
Added answers to the questions in "System Design" Co-authored-by: Amogha Kancharla <133768988+amoghak-ds@users.noreply.github.com>
This commit is contained in:
parent
63bef3a3ef
commit
895ac0f155
34
README.md
34
README.md
@ -3315,7 +3315,9 @@ Bonus: extract the last word of each line
|
|||||||
## System Design
|
## System Design
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain what is a "Single point of failure"?</summary><br><b>
|
<summary>Explain what a "single point of failure" is. </summary><br><b>
|
||||||
|
A "single point of failure", in a system or organization, if it were to fail would cause the entire system to fail or significantly disrupt it's operation. In other words, it is a vulnerability where there
|
||||||
|
is no backup in place to compensate for the failure.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -3342,10 +3344,34 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain "3-Tier Architecture" (including pros and cons)</summary><br><b>
|
<summary>Explain "3-Tier Architecture" (including pros and cons)</summary><br><b>
|
||||||
|
A "3-Tier Architecture" is a pattern used in software development for designing and structuring applications. It divides the application into 3 interconnected layers: Presentation, Business logic and Data storage.
|
||||||
|
PROS:
|
||||||
|
* Scalability
|
||||||
|
* Security
|
||||||
|
* Reusability
|
||||||
|
CONS:
|
||||||
|
* Complexity
|
||||||
|
* Performance overhead
|
||||||
|
* Cost and development time
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain Mono-repo vs. Multi-repo.What are the cons and pros of each approach?</summary><br><b>
|
<summary>Explain Mono-repo vs. Multi-repo.What are the cons and pros of each approach?</summary><br><b>
|
||||||
|
In a Mono-repo, all the code for an organization is stored in a single,centralized repository.
|
||||||
|
PROS (Mono-repo):
|
||||||
|
* Unified tooling
|
||||||
|
* Code Sharing
|
||||||
|
CONS (Mono-repo):
|
||||||
|
* Increased complexity
|
||||||
|
* Slower cloning
|
||||||
|
|
||||||
|
In a Multi-repo setup, each component is stored in it's own separate repository. Each repository has it's own version control history.
|
||||||
|
PROS (Multi-repo):
|
||||||
|
* Simpler to manage
|
||||||
|
* Different teams and developers can work on different parts of the project independently, making parallel development easier.
|
||||||
|
CONS (Multi-repo):
|
||||||
|
* Code duplication
|
||||||
|
* Integration challenges
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -3354,6 +3380,7 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
|
|||||||
* Not suitable for frequent code changes and the ability to deploy new features
|
* Not suitable for frequent code changes and the ability to deploy new features
|
||||||
* Not designed for today's infrastructure (like public clouds)
|
* Not designed for today's infrastructure (like public clouds)
|
||||||
* Scaling a team to work monolithic architecture is more challenging
|
* Scaling a team to work monolithic architecture is more challenging
|
||||||
|
* If a single component in this architecture fails, then the entire application fails.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -3365,16 +3392,17 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What's a service mesh?</summary><br><b>
|
<summary>What's a service mesh?</summary><br><b>
|
||||||
|
It is a layer that facilitates communication management and control between microservices in a containerized application. It handles tasks such as load balancing, encryption, and monitoring.
|
||||||
[This article](https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh) provides a great explanation.
|
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain "Loose Coupling"</summary><br><b>
|
<summary>Explain "Loose Coupling"</summary><br><b>
|
||||||
|
In "Loose Coupling", components of a system communicate with each other with a little understanding of each other's internal workings. This improves scalability and ease of modification in complex systems.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is a message queue? When is it used?</summary><br><b>
|
<summary>What is a message queue? When is it used?</summary><br><b>
|
||||||
|
It is a communication mechanism used in distributed systems to enable asynchronous communication between different components. It is generally used when the systems use a microservices approach.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
#### Scalability
|
#### Scalability
|
||||||
|
Loading…
Reference in New Issue
Block a user