-
Notifications
You must be signed in to change notification settings - Fork 17
/
system-design-checklist.txt
628 lines (604 loc) · 41.3 KB
/
system-design-checklist.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
System Design Checklist
System design is the process of creating the architecture, modules, components, interfaces, and data for a system.
System design is the core concept behind the design of any distributed systems. These concepts are now repeatedly being asked in several interviews.
This checklist covers all the important concepts with which you can ace your interviews!
Section 0: Different Components of System Design
================================================
1. Software development lifecycles
Software Development Lifecycles (SDLC)
refer to methodologies or frameworks that guide the process of designing, developing, testing, deploying, and maintaining software systems.
Links (1): https://iq.opengenus.org/software-development-lifecycle/
2. Idea behind load balancer
Load balancing
is the process of distributing a set of tasks over a set of resources.
Different
types of load balancing algorithms are used to distribute incoming network traffic across multiple servers, ensuring
optimal resource utilization and improved performance. Explore more topics:
Memento, Command and Iterator Design Pattern.
Leaderless Replication.
Links (4): https://iq.opengenus.org/load-balancer/, https://iq.opengenus.org/load-balancing-algorithms/, https://iq.opengenus.org/memento-command-and-iterator-design-pattern/, https://iq.opengenus.org/leaderless-replication/
3. Different types of databases
In the world of system design, databases play a crucial role in storing and managing data efficiently.
Understanding the different types of databases
is essential for designing scalable and robust systems.
Links (1): https://iq.opengenus.org/types-of-database/
4. Key-value store
A Key-Value Store
is a type of NoSQL database that stores data as a collection of key-value pairs. Each piece of data
is associated with a unique key, which serves as an identifier for retrieving or updating the data.
Links (1): https://iq.opengenus.org/key-value-store/
5. Distributed operating system
A distributed operating system,
is an advanced software architecture that extends the capabilities of traditional operating systems
to manage and coordinate multiple interconnected computers or nodes within a network.
Links (1): https://iq.opengenus.org/distributed-operating-system/
6. Distributed file system
A Distributed File System
is a file storage technology that spans multiple physical or virtual servers,
allowing them to work together as a single, unified file system.
Links (1): https://iq.opengenus.org/distributed-file-system/
---
Section 1: Load Balancing and Scaling
=====================================
1. Types of load balancing algorithms
Load balancing algorithms
are crucial for distributing incoming network traffic across multiple servers, thats why
rate limiting systems
uses different algos.
Links (2): https://iq.opengenus.org/load-balancing-algorithms/, https://iq.opengenus.org/design-of-rate-limiting-system/
2. Idea of vertical and horizontal scaling
These types of scaling
involves increasing the resources of a single server or node, such as CPU,
memory, or storage capacity, to handle greater workloads. It is typically limited by the
hardware's capacity and can result in higher costs.
Links (1): https://iq.opengenus.org/idea-of-vertical-and-horizontal-scaling/
3. Idea of layer 4 and layer 7 load balancing
Layer 4 and Layer 7:
Layer 4 load balancing focuses on distributing traffic based on network-level attributes, while Layer 7 load balancing
takes application-specific factors into account for more intelligent routing decisions.
Links (1): https://iq.opengenus.org/layer-4-layer-7-load-balancing/
4. Backpressure and exponential back-off to handle overload systems
Backpressure and exponential back-off
are strategies used to manage and mitigate the effects of system overloads, ensuring efficient resource utilization and preventing system collapse.
Links (1): https://iq.opengenus.org/backpressure-and-exponential-backoff/
---
Section 2: Databases and Data Storage
=====================================
1. Choose the right type of NoSQL database
When selecting a NoSQL database,
several factors come into play, including scalability, data model, consistency requirements, and query patterns.
Links (1): https://iq.opengenus.org/choose-nosql-databases/
2. In-memory database
An in-memory database
stores data in the main memory (RAM) for faster access and lower latency compared to traditional disk-based databases.
Links (1): https://iq.opengenus.org/in-memory-database/
3. Different caching strategies in system design
Different caching strategies
in system design are techniques used to improve the performance and responsiveness of a
pplications by storing frequently accessed data in a faster retrieval layer, like memory,
for quicker access. These strategies help reduce the load on backend databases and minimize latency.
Links (1): https://iq.opengenus.org/caching-strategies/
4. Types of caching in web application
This is an important topic as
caching plays a vital role in improving the performance and reducing the load on backend systems. In web applications,
different types of caching techniques are employed.
Links (1): https://iq.opengenus.org/types-of-caching-in-web-application/
5. Database replication
Database replication
is the process of creating and maintaining duplicate copies of a database on multiple servers. It ensures data availability,
fault tolerance, and load distribution.
Links (1): https://iq.opengenus.org/database-replication/
6. Data partitioning in system design
Data partitioning
in system design is the practice of dividing a large dataset into smaller, more manageable segments to improve
performance, scalability, and availability. Each partition is typically stored on separate servers or nodes,
allowing for parallel processing and reducing the risk of data bottlenecks.
Links (1): https://iq.opengenus.org/data-partitioning/
7. Concept of reverse proxies
A reverse proxy
is a server that acts as an intermediary between clients and backend servers, forwarding client requests to
appropriate backend servers and returning the response to the clients. Unlike a traditional proxy, which protects
clients from exposure to the internet, a reverse proxy shields backend servers from direct client requests.
Links (1): https://iq.opengenus.org/concept-of-reverse-proxies/
8. Types of client-server communication
Client-server communication
refers to the exchange of data and requests between client devices (such as web browsers or applications) and remote server systems.
Links (1): https://iq.opengenus.org/types-of-client-server-communication/
9. ER diagram/entity relationship model
An Entity-Relationship (ER) Diagram
, also known as an Entity-Relationship Model, is a graphical representation used to design and illustrate the logical structure
of a database. It depicts the relationships among various entities (objects, concepts, or things) within a database system.
Links (1): https://iq.opengenus.org/entity-relation-model/
10. Federation: functional partitioning of database + fdbs
Federation,
in the context of system design refers to the practice of breaking down a large, monolithic
database into smaller, more manageable functional units. This approach is known as Functional Database Sharding (FDBS).
Each functional unit, or shard, holds a subset of the data and is responsible for its own operations.
This enhances scalability and performance by distributing the workload across multiple database instances.
Links (1): https://iq.opengenus.org/federation/
11. Different types of file system
Different types of file systems
refer to various methods and structures used to manage and organize data on storage devices like hard drives or solid-state drives.
Links (1): https://iq.opengenus.org/types-of-file-system/
12. Redundant Arrays of Independent Disks
RAID
is a technology that combines multiple physical hard drives into a single logical unit to improve data performance, protection, and availability.
Links (1): https://iq.opengenus.org/redundant-arrays-of-independent-disks/
13. Wide column store
Wide Column Store
is a type of NoSQL database that stores data in tables with rows and columns, similar to relational databases.
Links (1): https://iq.opengenus.org/wide-column-store/
14. Apache HBase in system design
Apache HBase
is a distributed, scalable, and consistent NoSQL database that is designed to handle massive amounts of data.
Links (1): https://iq.opengenus.org/apache-hbase-in-system-design/
15. Google Cloud BigQuery in system design
Google Cloud BigQuery
is a fully managed, serverless data warehouse that offers high-performance
querying and analytics capabilities.
Links (1): https://iq.opengenus.org/bigquery-in-system-design/
16. Memcached in system design
Memcached
is an open-source, high-performance, distributed memory caching system designed to accelerate dynamic
web applications by alleviating database load.
Links (1): https://iq.opengenus.org/memcached-in-system-design/
17. Graph database in system in system design
A graph database
is a specialized type of database designed to store and manage data as nodes, edges, and properties, resembling a graph structure.
In system design, using a graph database can be advantageous for scenarios where relationships between data points are crucial.
Links (1): https://iq.opengenus.org/graph-database/
18. PostgreSQL in system design
PostgreSQL,
often referred to as "Postgres", is a powerful open-source relational database management system (RDBMS) that
plays a significant role in system design.
Links (1): https://iq.opengenus.org/postgresql-in-system-design/
19. Object-oriented database
An Object-Oriented Database
is a type of database that combines the principles of object-oriented programming with database management systems.
Links (1): https://iq.opengenus.org/object-oriented-database/
20. Sharding
Sharding
is a database design technique used to horizontally partition large datasets across multiple
physical or logical databases.
Links (1): https://iq.opengenus.org/sharding/
21. ACID and base model
The ACID and BASE models
are two different approaches to ensuring consistency and reliability in database systems.
Links (1): https://iq.opengenus.org/acid-and-base-model/
22. Master-slave and master-master replication in databases
Both replication methods
offer benefits in terms of scalability, fault tolerance, and performance enhancement, but they also bring challenges
like data consistency, conflict resolution, and configuration management.
Links (1): https://iq.opengenus.org/master-slave-and-master-master/
23. Time Series Database
A time series database
is a specialized type of database designed to efficiently store and manage time-stamped data points, often generated
at regular intervals. It is optimized for querying and analyzing temporal data, such as sensor readings, stock prices,
website analytics, and more.
Links (1): https://iq.opengenus.org/time-series-database/
24. 7Rs of database migration
The7 R's of Database Migration,
are a set of principles to guide the process of migrating a database from one environment to another.
These principles ensure a smooth and successful transition while minimizing risks and ensuring data integrity.
Links (1): https://iq.opengenus.org/7-r-of-database-migration/
25. Database mirroring and log shipping
Database mirroring
is a high-availability solution in SQL Server that involves maintaining two copies of a database, the principal and the mirror,
on separate server instances. The primary database (principal) is constantly mirrored to the secondary database (mirror) in real-time.
Links (1): https://iq.opengenus.org/database-mirroring-and-log-shipping/
26. Database clustering
Database Clustering
is a technique used to enhance the availability, performance, and fault tolerance of databases by distributing
the data across multiple servers. It involves setting up a group of interconnected database servers that work
together as a single system.
Links (1): https://iq.opengenus.org/database-clustering/
27. Different database migration strategies
Database migration strategies
are essential for smoothly transitioning from one database version, schema, or platform to another without disrupting the
application's functionality.
Links (1): https://iq.opengenus.org/different-database-migration-strategies/
28. File systems in database
A file system in a database
refers to the method of managing and storing data within a database system. It's an essential component that handles
how data is organized, stored, retrieved, and managed on physical storage devices.
Links (1): https://iq.opengenus.org/file-systems-in-database/
29. Always on availability
Always On availability
typically refers to a high-availability feature in database management systems. It ensures that the database
remains accessible and operational without interruption, even during maintenance or hardware failures.
Links (1): https://iq.opengenus.org/always-on-availability/
---
Section 3: Distributed Systems
==============================
1. Idea of zero copy
The
"Idea of Zero Copy"
is a technique used in computer systems to optimize data transfer between different parts of a system,
especially in cases involving I/O operations.
Links (1): https://iq.opengenus.org/idea-of-zero-copy/
2. Sidecar design pattern in system design
The
Sidecar Design Pattern
is an architectural approach in system design where functionality that's not core to the main application is
outsourced into a separate service, often referred to as a "sidecar."
Links (1): https://iq.opengenus.org/sidecar-design-pattern/
3. Cloud design patterns
Cloud design patterns
are architectural solutions that address common challenges when designing and deploying applications in cloud environments.
Links (1): https://iq.opengenus.org/cloud-design-patterns/
4. Idea of consistency patterns in system design
Consistency Patterns
refer to strategies that manage data consistency across distributed systems.
Links (1): https://iq.opengenus.org/consistency-patterns-in-system-design/
5. Consistent hashing
Consistent Hashing
is a technique used in distributed systems to evenly distribute data across multiple nodes while maintaining
a level of stability when nodes are added or removed from the system. In this approach, each data item is associated
with a hash value, and each node in the system is also mapped to a hash value range.
Links (1): https://iq.opengenus.org/consistent-hashing/
6. Stateless and stateful architecture
Stateless and stateful architectures:
Stateless architectures are generally easier to scale and are more suitable for distributed systems, while stateful architectures are used when
maintaining context and personalized experiences are crucial.
Links (1): https://iq.opengenus.org/stateless-and-stateful-architecture/
7. Message queues in system design
Message queues
are essential components in system design that facilitate asynchronous communication and decoupling
between different parts of a distributed application. They are used to manage the flow of messages
between various services, allowing these services to communicate without needing to be directly connected.
Links (1): https://iq.opengenus.org/message-queues/
8. Noisy neighbor+throttling pattern
The Noisy Neighbor and Throttling Pattern,
is a design approach used in distributed systems to manage resource allocation and prevent a single component from consuming excessive resources,
thereby affecting the overall system performance.
Links (1): https://iq.opengenus.org/noisy-neighbor-throttling-pattern/
9. Partition tolerance after 2000s
Partition tolerance,
in the context of distributed systems, refers to the system's ability to continue functioning even when
communication between nodes (servers) is unreliable or disrupted. It's one of the three aspects of the CAP theorem,
along with Consistency and Availability.
Links (1): https://iq.opengenus.org/partition-tolerance/
---
Section 4: Data Formats
=======================
1. Basics of YAML
YAML
is a human-readable data serialization format. It's often used for configuration files and data exchange between languages with different data structures.
Links (1): https://iq.opengenus.org/yaml/
2. Basics of Rich Text Format (RTF)
Rich Text Format (RTF)
is a document file format that allows for the formatting and styling of text within a document. Unlike plain
text files, RTF files can include various text attributes such as font styles, sizes, colors, alignments, and more.
Links (1): https://iq.opengenus.org/rich-text-format/
3. Basics of XML
XML (eXtensible Markup Language)
is a widely used markup language designed to store and transport data in a human-readable and machine-readable format.
Links (1): https://iq.opengenus.org/xml/
4. Portable Network Graphics (PNG) file format
Portable Network Graphics (PNG)
is a popular image file format designed to store and display raster graphics, such as images and icons.
Links (1): https://iq.opengenus.org/png-format/
---
Section 5: Testing, Tools and Strategies
========================================
1. OpenGenus Visual Documentation
OpenGenus Visual Documentation
is a tool designed to enhance understanding and learning of complex algorithms and data structures through visual representation.
Links (1): https://iq.opengenus.org/opengenus-visual-documentation/
2. Airbnb's massive deployment technique: 125000+ times a year
Airbnb, a prominent online marketplace for lodging and travel experiences, employs a remarkable deployment strategy
that involves an exceptionally high frequency of software deployments. With a staggering rate of over
125,000 deployments
annually, Airbnb's approach emphasizes rapid iteration and continuous delivery.
Links (1): https://iq.opengenus.org/airbnb-deployment/
3. Live streaming to 25.3M concurrent viewers: deal with traffic spike
Live streaming
to a massive audience demands a robust infrastructure capable of handling a sudden influx of viewers during significant events.
To manage the surge in traffic, content delivery networks (CDNs) are employed.
Links (1): https://iq.opengenus.org/deal-with-traffic-spike/
4. How server outrage do not impact Netflix
Netflix's
resilience against server outages is achieved through a combination of strategies. One key approach is
the concept of microservices architecture, where the platform's functionalities are divided into smaller,
independent services. These services are distributed across various servers and data centers.
Links (1): https://iq.opengenus.org/server-outrage-do-not-impact-netflix/
5. Why companies have high deployment rate
Companies aim for
high deployment rates
primarily to achieve faster development cycles, continuous improvement, and enhanced user experiences.
Links (1): https://iq.opengenus.org/companies-have-high-deployment-rate/
6. Apache Kafka in system design
Apache Kafka
is an open-source distributed event streaming platform used for building real-time data pipelines and streaming applications.
Links (1): https://iq.opengenus.org/apache-kafka/
7. MapReduce in system design
MapReduce ,
is a programming model and processing framework used to process and generate large-scale data
sets in parallel across a distributed cluster of computers. It was popularized by Google and
has become a cornerstone technology for processing big data.
Links (1): https://iq.opengenus.org/map-reduce/
8. Dapper in system design
Dapper
is an Object-Relational Mapping (ORM) library developed by Stack Overflow. It's designed to
simplify data access in applications by mapping database query results to strongly-typed objects.
Links (1): https://iq.opengenus.org/dapper-in-system-design/
9. what is Pub/Sub messaging
Pub/Sub (Publish/Subscribe)
messaging is a communication pattern in which senders (publishers) and receivers (subscribers) are decoupled.
Publishers distribute messages to topics, and subscribers receive messages from those topics based on their interests.
Links (1): https://iq.opengenus.org/pub-sub-messaging/
10. Apache ZooKeeper in system design
Apache ZooKeeper
is a distributed coordination service that plays a crucial role in system design, especially in distributed and highly
available applications. It provides a centralized platform for managing configuration, synchronization, and group services.
Links (1): https://iq.opengenus.org/zookeeper-in-system-design/
11. System Design of CRM Software
CRM software
is designed to manage an organization's interactions and relationships with its customers.
Links (1): https://iq.opengenus.org/system-design-of-crm-software/
12. Probnik: Netflix's innovation testing framework
Probnik,
is an innovative testing framework developed by Netflix to simulate real-world failure
scenarios and assess system resiliency. It's designed to push systems to their limits
and identify potential weaknesses before they impact user experiences.
Links (1): https://iq.opengenus.org/probnik/
13. How Spotify went down after an outage
Spotify
experienced an outage due to an unexpected combination of events. The incident occurred due to a synchronization
issue within the infrastructure that led to a cascading failure. The system was designed to maintain high availability
through redundancy, but a software bug caused a disruption in the communication between nodes.
Links (1): https://iq.opengenus.org/spotify-went-down-after-outage/
14. How Uber got hacked
Uber
experienced a data breach that exposed the personal information of around 57 million users and
600,000 drivers. The breach was not immediately disclosed to the affected individuals or regulatory
authorities, which led to significant controversy.
Links (1): https://iq.opengenus.org/how-uber-got-hacked/
15. Choking algorithm in BitTorrent
BitTorrent
is a peer-to-peer (P2P) file-sharing protocol that facilitates the distribution of large files across the
internet. Unlike traditional client-server models, where a central server serves files to multiple clients,
BitTorrent employs a decentralized approach where users collectively share and distribute files.
Links (1): https://iq.opengenus.org/choking-algorithm-in-bittorrent/
16. Long polling fault tolerance in system design
Long Polling
is a communication technique used in web development to achieve near real-time updates without the
need for constant requests from the client to the server.
Links (1): https://iq.opengenus.org/long-polling/
---
Section 6: Design Principles and Patterns
=========================================
1. Liskov substitution principle
The Liskov Substitution Principle (LSP)
is a fundamental principle in object-oriented programming that emphasizes the relationship between a base class and its derived classes.
Links (1): https://iq.opengenus.org/liskov-substitution-principle/
2. Open-closed principle
The Open-Closed Principle (OCP),
is one of the SOLID principles of object-oriented programming design. It states that software entities (such as classes,
modules, functions) should be open for extension but closed for modification.
Links (1): https://iq.opengenus.org/open-closed-principle/
3. Dependency inversion principle
The Dependency Inversion Principle (DIP)
is one of the SOLID principles of object-oriented programming and design. It suggests that high-level modules should not depend on low-level
modules, but both should depend on abstractions.
Links (1): https://iq.opengenus.org/dependency-inversion-principle/
4. Cache stampede
Cache stampede,
also known as "dog-piling" or "thundering herd," is a phenomenon that occurs in caching
systems when a cache entry expires, and multiple requests for the same resource simultaneously trigger cache misses.
Links (1): https://iq.opengenus.org/cache-stampede/
5. How to design a System?
Designing a system
, whether it's a software application, a network infrastructure, or any other complex solution, requires a systematic approach.
Links (1): https://iq.opengenus.org/how-to-design-system/
---
Section 7: System Design of Standard Platforms
==============================================
1. System design of meeting scheduler
The System Design of a Meeting Scheduler
involves creating a digital platform that efficiently manages scheduling and coordinating meetings among multiple participants. This system simplifies
the process of selecting suitable meeting times while considering participants' availability and preferences.
Links (1): https://iq.opengenus.org/system-design-of-meeting-scheduler/
2. System design of file uploading service
System design of file uploading service
involves designing a scalable and reliable system to handle file uploads.
Load balancing,
caching and
data partitioning are important factors of this topic.
Links (4): https://iq.opengenus.org/system-design-of-file-hosting-service/, https://iq.opengenus.org/layer-4-layer-7-load-balancing/, https://iq.opengenus.org/types-of-caching-in-web-application/, https://iq.opengenus.org/data-partitioning/
3. How are email systems designed?
Designing email systems
involves creating a complex infrastructure that enables the
sending, receiving, and storage of electronic messages. It typically comprises multiple
components, such as mail servers, protocols like SMTP and IMAP, spam filters, and user interfaces.
Links (1): https://iq.opengenus.org/how-email-systems-are-designed/
4. System design of a URL shortner
System design of a URL shortener
is a process that involves designing a service to shorten long URLs while maintaining their accessibility and redirect
functionality.
Links (1): https://iq.opengenus.org/system-design-of-url-shortener/
5. System design of elevator system
Designing an elevator system
involves creating an efficient and safe mechanism for vertical transportation within a building. Key considerations include optimizing
passenger wait times, elevator movement, and building energy efficiency.
Links (1): https://iq.opengenus.org/system-design-for-elevator-system/
6. System design of movie ticket booking system
TheSystem Design of a Movie Ticket Booking System
involves creating a robust and user-friendly platform that enables users to search for movies, view showtimes, select seats, and purchase tickets online.
Links (1): https://iq.opengenus.org/system-design-of-movie-ticket-booking-system/
7. System design of car rental system
Thesystem design of a car rental system
involves creating an architecture that efficiently handles the process of renting vehicles to customers.
Links (1): https://iq.opengenus.org/system-design-of-car-rental-system/
8. System design of bank management system
The system design of a Bank Management System
encompasses creating a digital framework for effectively managing various banking operations and customer interactions.
Links (1): https://iq.opengenus.org/system-design-of-bank-management-system/
9. System design of a firewall
A firewall
acts as a security barrier between a trusted internal network and an untrusted external network, such as the internet.
Links (1): https://iq.opengenus.org/system-design-of-firewall/
10. System Design of Hotel Management System
A hotel management system
is a software application designed to streamline various operations in a hotel,
from reservation and check-in to check-out and payment processing.
Links (1): https://iq.opengenus.org/system-design-of-hotel-management-system/
11. Train Reservation system design
The system design of a train reservation system
involves creating a robust and user-friendly platform to facilitate booking train tickets.
Links (1): https://iq.opengenus.org/system-design-of-train-reservation-system/
12. System Design for Parking lot
The System Design of a Meeting Scheduler
involves creating a digital platform that efficiently manages scheduling and coordinating meetings among multiple participants. This system simplifies
the process of selecting suitable meeting times while considering participants' availability and preferences.
Links (1): https://iq.opengenus.org/system-design-of-meeting-scheduler/
---
Section 8: System Design of Popular Platforms
=============================================
1. System design of Google Search
Google Search
is a complex and highly efficient system designed to quickly retrieve relevant information from an immense index
of web pages. The architecture involves multiple components working together, learn about them through the article.
Links (1): https://iq.opengenus.org/system-design-of-google-search/
2. System design of pastebin
Pastebin
is a web application that allows users to store and share snippets of text, code, or other content with a unique URL.
Links (1): https://iq.opengenus.org/system-design-of-pastebin/
3. System design of YouTube
YouTube's architecture handles massive user-generated content and high traffic load.
Links (1): https://iq.opengenus.org/system-design-youtube/
4. System design of Google Maps
Google Maps
is a widely used online mapping service that provides users with detailed geographical information, navigation assistance, and location-based services.
Links (1): https://iq.opengenus.org/system-design-of-google-maps/
5. System design of Amazon
Amazon
is the largest e-commerce platform in the world, it provides variety of services to its vast users.
Some topics to explore:
System Design of Amazon Hub Locker Service,
Eager Loading and Over-Eager Loading.
Links (3): https://iq.opengenus.org/system-design-of-amazon/, https://iq.opengenus.org/system-design-of-amazon-hub-locker-service/, https://iq.opengenus.org/eager-and-over-eager-loading/
6. System design of GitHub
GitHub
is a widely used platform for hosting and collaborating on software development projects. Some topics to explore are:
Memory Pool with C++ Implementation.
Links (2): https://iq.opengenus.org/system-design-of-github/, https://iq.opengenus.org/memory-pool/
7. System design of Spotify
Spotify's system design
is a remarkable example of how to handle the complexities of streaming music to millions of users globally.
Links (1): https://iq.opengenus.org/system-design-of-spotify/
8. System design of Microsoft Teams
Microsoft Teams
is a collaboration platform that offers chat, video meetings, file storage, and application integration.
Here are a few topics to explore:
Always On availability,
System Design of Movie Ticket Booking System,
Thundering Herd Problem.
Links (4): https://iq.opengenus.org/microsoft-teams-system-design/, https://iq.opengenus.org/always-on-availability/, https://iq.opengenus.org/system-design-of-movie-ticket-booking-system/, https://iq.opengenus.org/thundering-herd-problem/
9. System design of WhatsApp
WhatsApp
is a popular messaging application that allows users to send text messages, make voice and video calls, and share multimedia content.
The system design of WhatsApp involves a combination of client-server architecture, real-time communication, and data synchronization
to ensure a seamless and reliable messaging experience. Some topics to explore:
Who uses Apache Kafka and why?,
Long Polling.
Links (3): https://iq.opengenus.org/system-design-of-whatsapp/, https://iq.opengenus.org/who-uses-apache-kafka-and-why/, https://iq.opengenus.org/long-polling/
10. System design of Uber
Uber's system design
revolves around connecting riders with drivers in real-time through a mobile app.
Some topics to explore:
System Design of StackOverflow,
Top K Heavy Hitters System Design,
Payment Gateway System Design.
Links (4): https://iq.opengenus.org/system-design-of-uber/, https://iq.opengenus.org/system-design-of-stackoverflow/, https://iq.opengenus.org/system-design-of-top-k-heavy-hitters/, https://iq.opengenus.org/payment-gateway-system-design/
11. BitTorrent architecture
BitTorrent is a peer-to-peer (P2P) file sharing protocol that revolutionized the distribution of large files over the internet. Its
architecture
enables efficient, decentralized sharing.
Links (1): https://iq.opengenus.org/bittorrent-architecture/
12. System design of Instagram
Instagram
, a popular photo and video sharing social platform, has a complex system design to handle its massive user base and dynamic content.
Links (1): https://iq.opengenus.org/system-design-of-instagram/
13. System design of Snapchat
Snapchat,
a multimedia messaging app, requires a complex system design to support its unique features such as
disappearing messages and multimedia sharing.
Links (1): https://iq.opengenus.org/system-design-of-snapchat/
14. System design of Facebook Messenger
Facebook Messenger
is a real-time messaging platform with millions of users worldwide. Its system design encompasses various components to ensure seamless communication.
Links (1): https://iq.opengenus.org/system-design-of-facebook-messenger/
15. System design of Airbnb
The system design of Airbnb
involves creating a robust and scalable platform that connects hosts with travelers seeking accommodations.
Links (1): https://iq.opengenus.org/system-design-architecture-of-airbnb/
16. System design of Amazon Hub Locker Service
Amazon Hub Locker Service
is a delivery solution that offers customers an alternative way to receive their orders. It involves a network of self-service kiosks strategically
placed in public locations, such as grocery stores or convenience stores.
Links (1): https://iq.opengenus.org/system-design-of-amazon-hub-locker-service/
---
Section 9: Containerization and Orchestration
=============================================
1. Infrastructure as a service
Infrastructure as a Service (IaaS)
is a cloud computing model that provides virtualized computing resources over the internet.
Links (1): https://iq.opengenus.org/infrastructure-as-a-service/
2. Idea of virtualization
Virtualization
is a fundamental concept in system design that involves creating virtual instances of computing
resources, such as servers, storage, and networks, to effectively utilize physical hardware. By
abstracting physical resources, virtualization allows multiple virtual machines (VMs) or virtual
environments to run on a single physical machine, enhancing resource utilization, flexibility, and cost-efficiency.
Links (1): https://iq.opengenus.org/virtualization/
3. Application layer with Microservices and Service Discovery
The application layer
in microservices architecture refers to the topmost layer where individual microservices communicate with each other.
Links (1): https://iq.opengenus.org/application-layer-with-microservices-and-service-discovery/
4. Containerization
Containerization
is a technology that enables the packaging and isolation of applications and their dependencies into a
standardized unit called a "container." Containers provide a consistent and reproducible environment for
applications to run across different computing environments, such as development, testing, and production.
Links (1): https://iq.opengenus.org/containerization/
5. How to run container images safely?
Running container images safely
involves several best practices to ensure the security and stability of your applications within containerized environments
Links (1): https://iq.opengenus.org/run-container-images-safely/
6. AWS Redshift in system design
Amazon Redshift
is a fully managed data warehousing service provided by Amazon Web Services (AWS). It's designed to handle
large-scale data analytics and complex querying. Redshift is optimized for online analytical processing (OLAP) workloads,
making it a suitable choice for data warehousing and business intelligence applications.
Links (1): https://iq.opengenus.org/redshift-in-system-design/
---
Section 10: Temp (Confusion)
============================
1. RPC vs. REST
The choice between
RPC and REST
depends on the project's requirements. If you need efficient communication between services
with strict performance needs, RPC might be a good fit. On the other hand, if you want a
more standardized, scalable, and flexible approach to building APIs, REST is often a
preferred choice due to its compatibility with HTTP and its ability to handle various client types.
Links (1): https://iq.opengenus.org/rpc-vs-rest/
2. Context switching in OS
Context switching,
is a fundamental concept in operating systems that enables multitasking, where multiple processes or threads
share a single CPU core. It refers to the process of saving and restoring the state of a process or thread
so that the CPU can seamlessly switch from one task to another.
Links (1): https://iq.opengenus.org/context-switching-in-os/
3. Fault Tolerance in System Design
Fault tolerance
in system design refers to the system's ability to continue functioning, albeit with reduced performance, even when
certain components or parts of the system fail.
Links (1): https://iq.opengenus.org/fault-tolerance-in-system-design/
4. The lock convoy problem in OS
The"lock convoy problem"
in operating systems refers to a performance issue that arises in multi-threaded applications when multiple threads
compete for a single resource, such as a shared lock, in a synchronized manner. This competition can lead to inefficient
resource utilization and reduced overall system performance.
Links (1): https://iq.opengenus.org/lock-convoy-problem/
---
Generated by OpenGenus. Updated on 2023-12-28