Skip to content

Commit 895ac0f

Browse files
Update README.md (bregman-arie#10228)
Added answers to the questions in "System Design" Co-authored-by: Amogha Kancharla <[email protected]>
1 parent 63bef3a commit 895ac0f

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

README.md

+32-4
Original file line numberDiff line numberDiff line change
@@ -3315,7 +3315,9 @@ Bonus: extract the last word of each line
33153315
## System Design
33163316

33173317
<details>
3318-
<summary>Explain what is a "Single point of failure"?</summary><br><b>
3318+
<summary>Explain what a "single point of failure" is. </summary><br><b>
3319+
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
3320+
is no backup in place to compensate for the failure.
33193321
</b></details>
33203322

33213323
<details>
@@ -3342,10 +3344,34 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
33423344

33433345
<details>
33443346
<summary>Explain "3-Tier Architecture" (including pros and cons)</summary><br><b>
3347+
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.
3348+
PROS:
3349+
* Scalability
3350+
* Security
3351+
* Reusability
3352+
CONS:
3353+
* Complexity
3354+
* Performance overhead
3355+
* Cost and development time
33453356
</b></details>
33463357

33473358
<details>
3348-
<summary>Explain Mono-repo vs. Multi-repo. What are the cons and pros of each approach?</summary><br><b>
3359+
<summary>Explain Mono-repo vs. Multi-repo.What are the cons and pros of each approach?</summary><br><b>
3360+
In a Mono-repo, all the code for an organization is stored in a single,centralized repository.
3361+
PROS (Mono-repo):
3362+
* Unified tooling
3363+
* Code Sharing
3364+
CONS (Mono-repo):
3365+
* Increased complexity
3366+
* Slower cloning
3367+
3368+
In a Multi-repo setup, each component is stored in it's own separate repository. Each repository has it's own version control history.
3369+
PROS (Multi-repo):
3370+
* Simpler to manage
3371+
* Different teams and developers can work on different parts of the project independently, making parallel development easier.
3372+
CONS (Multi-repo):
3373+
* Code duplication
3374+
* Integration challenges
33493375
</b></details>
33503376

33513377
<details>
@@ -3354,6 +3380,7 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
33543380
* Not suitable for frequent code changes and the ability to deploy new features
33553381
* Not designed for today's infrastructure (like public clouds)
33563382
* Scaling a team to work monolithic architecture is more challenging
3383+
* If a single component in this architecture fails, then the entire application fails.
33573384
</b></details>
33583385

33593386
<details>
@@ -3365,16 +3392,17 @@ In multi-CDN, content is distributed across multiple different CDNs, each might
33653392

33663393
<details>
33673394
<summary>What's a service mesh?</summary><br><b>
3368-
3369-
[This article](https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh) provides a great explanation.
3395+
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.
33703396
</b></details>
33713397

33723398
<details>
33733399
<summary>Explain "Loose Coupling"</summary><br><b>
3400+
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.
33743401
</b></details>
33753402

33763403
<details>
33773404
<summary>What is a message queue? When is it used?</summary><br><b>
3405+
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.
33783406
</b></details>
33793407

33803408
#### Scalability

0 commit comments

Comments
 (0)