Hey, welcome to the course. I hope this course provides a great learning experience.
This course is also available on my website. Please leave a as motivation if this was helpful!
Table of contents
- What is system design?
- OSI Model
- TCP and UDP
- Domain Name System (DNS)
- Load Balancing
- Content Delivery Network (CDN)
- Databases and DBMS
- SQL databases
- NoSQL databases
- SQL vs NoSQL databases
- Database Replication
- Normalization and Denormalization
- ACID and BASE consistency models
- CAP theorem
- PACELC Theorem
- Distributed Transactions
- Consistent Hashing
- Database Federation
- N-tier architecture
- Message Brokers
- Message Queues
- Enterprise Service Bus (ESB)
- Monoliths and Microservices
- Event-Driven Architecture (EDA)
- Event Sourcing
- Command and Query Responsibility Segregation (CQRS)
- API Gateway
- REST, GraphQL, gRPC
- Long polling, WebSockets, Server-Sent Events (SSE)
- Geohashing and Quadtrees
- Circuit breaker
- Rate Limiting
- Service Discovery
- SLA, SLO, SLI
- Disaster recovery
- Virtual Machines (VMs) and Containers
- OAuth 2.0 and OpenID Connect (OIDC)
- Single Sign-On (SSO)
- SSL, TLS, mTLS
- System Design Interviews
- URL Shortener
- Next Steps
What is system design?
Before we start this course, let’s talk about what even is system design.
System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. System design meets the needs of your business or organization through coherent and efficient systems. It requires a systematic approach to building and engineering systems. A good system design requires us to think about everything, from infrastructure all the way down to the data and how it’s stored.
Why is System Design so important?
System design helps us define a solution that meets the business requirements. It is one of the earliest decisions we can make when building a system. Often it is essential to think from a high level as these decisions are very difficult to correct later. It also makes it easier to reason about and manage architectural changes as the system evolves.
Mobile App Development Best Practices – 03.10
iOS MetaCodable – Supercharge Swift’s Codable implementations with macros meta-programming How to build a Tuist plugin and publish it using...
How to make and use BOM (Bill of Materials) dependencies in Android projects
By using a BOM dependency, you can avoid specifying the versions of each individual library in your app, and let...
Telegram turns 10 years old and revenues stagnate
Telegram seems to want to grow not only through messaging but also through communities, which pretty much means it wants...
MetaCodable – Supercharge Swift’s Codable implementations with macros meta-programming
Supercharge Swift‘s Codable implementations with macros. Overview MetaCodable framework exposes custom macros which can be used to generate dynamic Codable implementations. The core of the framework...
How to get started with Swift Concurrency 🧵 (Beginner Tutorial)
Swift has built-in support for writing asynchronous and parallel code in a structured way. Asynchronous code can be suspended and resumed later,...
Mobile App Development Best Practices – 02.10
Data.ai has summarized the interim results of the year – and once again we have a record. Annual consumer spending...