Khoá học System Design cho Developer vô cùng chi tiết

Khoá học Scalability & System Design for Developers được soạn vô cùng chi tiết bởi Educative.io. Một nền tảng học lập trình Online rất chất lượng cho Developer hiện nay.

Khoá học gồm 5 phần, mỗi phần có các chủ đề tương ứng từ cơ bản đến nâng cao dành cho bất cứ ai muốn hiểu sâu về System Design.

Xem thêm: Có nên học lập trình trên Educative.io không?

Content

Phần 1: Web Application & Software Architecture

 1. Different Tiers in Software Architecture

  • Introduction
  • Single-Tier Applications
  • Two-Tier Applications
  • Three-Tier Applications
  • N-Tier Applications
  • Different Tiers in Software Architecture Quiz

2. Web Architecture

  • What is Web Architecture?
  • Client-Server Architecture
  • Client
  • Types of Clients
  • Server
  • Communication Between the Client and the Server
  • Web Architecture Quiz – Part 1
  • What is a REST API?
  • HTTP Push and Pull – Introduction
  • HTTP Pull – Polling With AJAX
  • HTTP Push
  • HTTP Push-Based Technologies
  • Client-Side vs. Server-Side Rendering
  • Web Architecture Quiz – Part 2

3. Scalability

  • What is Scalability?
  • Types of Scalability
  • Which Scalability Approach is Right for our App?
  • Primary Bottlenecks That Hurt the Scalability of our Application
  • How to Improve and Test the Scalability of our Application?
  • Scalability Quiz

 4. High Availability

  • What is High Availability?
  • Reasons For System Failures
  • Achieving High Availability – Fault Tolerance
  • Redundancy
  • Replication
  • High Availability Clustering
  • High Availability Quiz

5. Load Balancing

  • Introduction to Load Balancing
  • Understanding DNS – Part 1
  • Understanding DNS – Part 2
  • DNS Load Balancing
  • Load Balancing Methods
  • Load Balancing Quiz

6. Monolith & Microservices

  • What is Monolithic Architecture?
  • When should you pick a Monolithic Architecture?
  • What is Microservice Architecture?
  • When should you pick Microservices Architecture?
  • Monolith and Microservices– Understanding the Trade-Offs – Part 1
  • Monolith and Microservices– Understanding the Trade-Offs – Part 2
  • Monolith and Microservices Quiz

7. Micro Frontends

  • Introduction to Micro Frontends
  • The Need For Micro Frontends
  • Micro Frontends Integration

8. Database

  • Introduction and Types of Data
  • Relational Databases
  • When should you pick a relational database?
  • NoSQL Databases – Introduction
  • Features of NoSQL Databases
  • When to pick a NoSQL Database?
  • Is NoSQL More Performant Than SQL?
  • Database Quiz – Part 1
  • Polyglot Persistence
  • Multi-Model Databases
  • Eventual Consistency
  • Strong Consistency
  • CAP Theorem
  • Database Quiz – Part 2
  • Types of Databases
  • Document-Oriented Database
  • Graph Database
  • Key-Value Database
  • Time Series Database
  • Wide-Column Database
  • Database Quiz – Part 3

9. Caching

  • Introduction
  • Do I Need A Cache?
  • Reducing the Application Deployment Costs via Caching
  • Caching Strategies
  • Caching Quiz

10. Message Queue

  • Introduction to Message Queues
  • Publish-Subscribe Model
  • Point-to-Point Model
  • Notification Systems and Real-Time Feeds with Message Queues
  • Handling Concurrent Requests with Message Queues
  • Message Queue Quiz

11. Stream Processing

  • Introduction
  • Data Ingestion
  • Different Ways of Ingesting Data and the Challenges Involved
  • Data Ingestion Use Cases
  • Data Pipelines
  • Distributed Data Processing
  • Lambda Architecture
  • Kappa Architecture
  • Stream Processing Quiz

12. More On Architecture

  • Event-Driven Architecture – Part 1
  • Event-Driven Architecture – Part 2
  • Webhooks
  • Shared-Nothing Architecture
  • Hexagonal Architecture
  • More on Architecture Quiz – Part 1
  • Peer-to-Peer Architecture – Part 1
  • Peer-to-Peer Architecture – Part 2
  • Decentralized Social Networks
  • Federated Architecture
  • More on Architecture Quiz – Part 2

13. Picking the Right Technology

  • How to Pick the Right Server-Side Technology?
  • Key Things to Remember When Picking the Tech Stack

14. Case Studies

  • A Web-Based Mapping Service Like Google Maps
  • A Baseball Game Ticket Booking Web Portal

15. Mobile Apps

  • Introduction
  • Before You Design Your Mobile App
  • Responsive Interfaces
  • Types of Mobile Apps – Part 1
  • Types of Mobile Apps – Part 2
  • Choosing Between a Native and a Hybrid App
  • Progressive Web Apps
  • Mobile Backend as a Service

Phần 2: An Introduction to Microservice Principles and Concepts

1. Microservices

  • Introduction
  • Advantages
  • Advantage: Continuous Delivery
  • More on Advantages
  • Tradeoffs, Prioritizing Advantages, & Levels
  • Challenges

2. Micro and Macro Architecture

  • Introduction
  • Domain-Driven Design & Bounded Contexts
  • Strategic Design & Common Patterns
  • Architecture Decisions
  • Operation: Micro or Macro Architecture?
  • Give a Preference to Micro Architecture!
  • Organizational Aspects
  • Independent Systems Architecture Principles
  • Variations

3. Migration

  • Introduction
  • Reasons for Migrating
  • Typical Migration Strategies
  • Alternative Strategies
  • Build, Operation, and Organization
  • Variations

4. Docker

  • Introduction
  • Docker for Microservices: Reasons
  • Docker Basics
  • Dockerfiles
  • Docker Compose
  • Variations

5. Technical Micro Architecture

  • Introduction
  • Requirements
  • Reactive Programming
  • Spring Boot
  • Spring Boot Starter Web as Single Dependency
  • Spring Boot for Microservices: Communication
  • Other Communication APIs Supported by Spring
  • Spring Boot for Microservices: Operation
  • Spring Boot for Microservices: New Microservices & Resilience
  • Go
  • Go for Microservices?
  • Variations

Phần 3: Microservice Architecture: Practical Implementation

1. Self-contained Systems

  • Introduction
  • Definition
  • An Example
  • SCSs and Microservices
  • Challenges
  • Benefits & Variations

2. Concept: Frontend Integration

  • Introduction
  • Frontend: Monolith or Modular?
  • Options
  • Resource-oriented Client Architecture (ROCA)
  • Benefits of ROCA
  • Challenges
  • Benefits
  • Variations

3. Recipe: Links and Client-side Integration

  • Introduction
  • Overview
  • Integration in Assurance App
  • Other Integration Methods
  • Example
  • Variations
  • Experiments

4. Recipe: Server-side Integration using Edge Side Includes (ESI)

  • Introduction
  • Example
  • Varnish
  • ESI in Order & Common
  • Variations
  • Experiments

5. Concept: Asynchronous Microservices

  • Introduction
  • Definition
  • Data Replication, Bounded Contexts, & Protocols
  • Events
  • Event Sourcing
  • Challenges: Inconsistencies & CAP Theorem
  • More on Inconsistencies
  • Other Challenges
  • Advantages & Variations

6. Recipe: Messaging and Kafka

  • Introduction
  • Message-oriented Middleware (MOM)
  • The Architecture of Kafka
  • More on The Architecture of Kafka
  • Even More on The Architecture of Kafka
  • Events with Kafka
  • Example: Introduction
  • Example: Data Model
  • Example: Technical Structure & Live App
  • Example: Topics & Partitions
  • Example: Testing & Other Data Formats
  • Variations & Experiments

7. Recipe: Asynchronous Communication with Atom and REST

  • Introduction
  • The Atom Format
  • Atom Caching
  • Example
  • Variations
  • Experiments

8. Concept: Synchronous Microservices

  • Introduction
  • Definition
  • Example
  • Benefits & Challenges
  • Variations

9. Recipe: REST with the Netflix Stack

  • Introduction
  • Example
  • Eureka: Service Discovery
  • Router: Zuul
  • Load Balancing: Ribbon
  • Resilience: Hystrix
  • Resilience: Hystrix Implementation
  • Variations
  • Experiments

10. Recipe: REST with Consul and Apache httpd

  • Introduction
  • Example
  • Service Discovery
  • Routing: Apache httpd
  • Consul Template
  • Consul and Spring Boot
  • DNS and Registrator
  • Variations
  • Experiments

11. Concept: Microservices Platforms

  • Introduction
  • Definition
  • Variations

12. Recipe: Docker Containers with Kubernetes

  • Introduction
  • The Example with Kubernetes
  • The Example in Detail
  • Additional Kubernetes Features
  • Variations
  • Experiments

13. Recipe: PaaS with Cloud Foundry

  • Introduction
  • PaaS: Definition
  • Cloud Foundry
  • The Example with Cloud Foundry
  • Variations & Experiments
  • Serverless

Phần 4: Grokking Modern System Design Interview

1. Introduction

  • Introduction to Modern
  • System Design
  • Course Structure for Modern System Design

2. System Design Interviews

  • What Is a System Design Interview?
  • How to Prepare for Success
  • How to Perform Well

3. Abstractions

  • Why Are Abstractions Important?
  • Network Abstractions: Remote Procedure Calls
  • Spectrum of Consistency Models
  • The Spectrum of Failure Models

4. Non-functional System Characteristics

  • Availability
  • Reliability
  • Scalability
  • Maintainability
  • Fault Tolerance

5. Back-of-the-envelope Calculations

  • Put Back-of-the-envelope
  • Numbers in Perspective
  • Examples of Resource Estimation

6. Building Blocks

  • Introduction to Building Blocks for Modern System Design

7. Domain Name System

  • Introduction to Domain Name System (DNS)
  • How the Domain Name System Works

8. Load Balancers

  • Introduction to Load Balancers
  • Global and Local Load Balancing
  • Advanced Details of Load Balancers

9. Databases

  • Introduction to Databases
  • Types of Databases
  • Data Replication
  • Data Partitioning
  • Trade-offs in Databases

10. Key-value Store

  • System Design: The Key-value Store
  • Design of a Key-value Store
  • Ensure Scalability and Replication
  • Versioning Data and Achieving Configurability
  • Enable Fault Tolerance and Failure Detection

11. Content Delivery Network (CDN)

  • System Design: The Content Delivery Network (CDN)
  • Introduction to a CDN
  • Design of a CDN
  • In-depth Investigation of CDN: Part 1
  • In-depth Investigation of CDN: Part 2
  • Evaluation of CDN’s Design
  • Quiz on CDN’s Design

12. Sequencer

  • System Design: Sequencer
  • Design of a Unique ID Generator
  • Unique IDs with Causality

13. Distributed Monitoring

  • System Design: Distributed Monitoring
  • Introduction to Distributed Monitoring
  • Prerequisites of a Monitoring System

14. Monitor Server-side Errors

  • Design of a Monitoring System
  • Detailed Design of a Monitoring System
  • Visualize Data in a Monitoring System

15. Monitor Client-side Errors

  • Focus on Client-side Errors in a Monitoring System
  • Design of a Client-side Monitoring System

16. Distributed Cache

  • System Design: The Distributed Cache
  • Background of Distributed Cache
  • High-level Design of a Distributed Cache
  • Detailed Design of a Distributed Cache
  • Evaluation of a Distributed Cache’s Design
  • Memcached versus Redis

17. Distributed Messaging Queue

  • System Design: The Distributed Messaging Queue
  • Requirements of a Distributed Messaging Queue’s Design
  • Considerations of a Distributed Messaging Queue’s Design
  • Design of a Distributed Messaging Queue: Part 1
  • Design of a Distributed Messaging Queue: Part 2
  • Evaluation of a Distributed Messaging Queue’s Design
  • Quiz on the Distributed Messaging Queue’s Design

18. Pub-sub

  • System Design: The Pub-sub Abstraction
  • Introduction to Pub-sub
  • Design of a Pub-sub System

19. Rate Limiter

  • System Design: The Rate Limiter
  • Requirements of a Rate Limiter’s Design
  • Design of a Rate Limiter
  • Rate Limiter Algorithms
  • Quiz on the Rate Limiter’s Design

20. Blob Store

  • System Design: A Blob Store
  • Requirements of a Blob Store’s Design
  • Design of a Blob Store
  • Design Considerations of a Blob Store
  • Evaluation of a Blob Store’s Design
  • Quiz on the Blob Store’s Design

21. Distributed Search

  • System Design: The Distributed Search
  • Requirements of a Distributed Search System’s Design
  • Indexing in a Distributed Search
  • Design of a Distributed Search
  • Scaling Search and Indexing
  • Evaluation of a Distributed Search’s Design

22. Distributed Logging

  • System Design: Distributed Logging
  • Introduction to Distributed Logging
  • Design of a Distributed Logging Service

23. Distributed Task Scheduler

  • System Design: The Distributed Task Scheduler
  • Requirements of a Distributed Task Scheduler’s Design
  • Design of a Distributed Task Scheduler
  • Design Considerations of a Distributed Task Scheduler
  • Evaluation of a Distributed Task Scheduler’s Design

24. Sharded Counters

  • System Design: The Sharded Counters
  • High-level Design of Sharded Counters
  • Detailed Design of Sharded Counters
  • Quiz on the Sharded Counters’ Design

25. Concluding the Building Blocks Discussion

  • Wrapping Up the Building Blocks Discussion
  • The RESHADED Approach for System Design

26. Design YouTube

  • System Design: YouTube
  • Requirements of YouTube’s Design
  • Design of YouTube
  • Evaluation of YouTube’s Design
  • The Reality Is More Complicated
  • Quiz on YouTube’s Design

27. Design Quora

  • System Design: Quora
  • Requirements of Quora’s Design
  • Initial Design of Quora
  • Final Design of Quora
  • Evaluation of Quora’s Design

28. Design Google Maps

  • System Design: Google Maps
  • Requirements of Google Maps’ Design
  • Design of Google Maps
  • Challenges of Google Maps’ Design
  • Detailed Design of Google Maps
  • Evaluation of Google Maps’ Design

29. Design a Proximity Service / Yelp

  • System Design: Yelp
  • Requirements of Yelp’s Design
  • Design of Yelp
  • Design Considerations of Yelp
  • Quiz on Yelp’s Design

30. Design Uber

  • System Design: Uber
  • Requirements of Uber’s Design
  • High-level Design of Uber
  • Detailed Design of Uber
  • Payment Service and Fraud Detection in Uber Design
  • Evaluation of Uber’s Design
  • Quiz on Uber’s Design

31. Design Twitter

  • System Design: Twitter
  • Requirements of Twitter’s Design
  • High-level Design of Twitter
  • Detailed Design of Twitter
  • Client-side Load Balancer for Twitter
  • Quiz on Twitter’s Design

32. Design Newsfeed System

  • System Design: Newsfeed System
  • Requirements of a Newsfeed System’s Design
  • Design of a Newsfeed System
  • Evaluation of a Newsfeed System’s Design

33. Design Instagram

  • System Design: Instagram
  • Requirements of Instagram’s Design
  • Design of Instagram
  • Detailed Design of Instagram
  • Quiz on Instagram’s Design

34. Design a URL Shortening Service / TinyURL

  • System Design: TinyURL
  • Requirements of TinyURL’s Design
  • Design and Deployment of TinyURL
  • Encoder for TinyURL
  • Evaluation of TinyURL’s Design
  • Quiz on TinyURL’s Design

35. Design a Web Crawler

  • System Design: Web Crawler
  • Requirements of a Web Crawler’s Design
  • Design of a Web Crawler
  • Design Improvements of a Web Crawler
  • Evaluation of Web Crawler’s Design

36. Design WhatsApp

  • System Design: WhatsApp
  • Requirements of WhatsApp’s Design
  • High-level Design of WhatsApp
  • Detailed Design of WhatsApp
  • Evaluation of WhatsApp’s Design
  • Quiz on WhatsApp’s Design

37. Design Typeahead Suggestion

  • System Design: The Typeahead Suggestion
  • SystemRequirements of the Typeahead Suggestion System’s Design
  • High-level Design of the Typeahead Suggestion System
  • Data Structure for Storing Prefixes
  • Detailed Design of the Typeahead Suggestion System
  • Evaluation of the Typeahead Suggestion System’s Design
  • Quiz on the Typeahead Suggestion System’s Design

38. Design a Collaborative Document Editing Service / Google Docs

  • System Design: Google Docs
  • Requirements of Google Docs’ Design
  • Design of Google Docs
  • Concurrency in Collaborative Editing
  • Evaluation of Google Docs’ Design

39. Spectacular Failures

  • Introduction to Distributed System Failures
  • Facebook, WhatsApp, Instagram, Oculus Outage
  • AWS Kinesis Outage Affecting Many Organizations
  • AWS Wide Spread Outage

40. Concluding Remarks

  • Conclusions

Phần 5: The Good Parts of AWS: Cutting Through the Clutter

1. Part 1: The Good Parts

  • The Default Heuristic
  • Database: DynamoDB
  • Storage: S3
  • Compute: EC2
  • Compute: EC2 Auto Scaling
  • Compute: Lambda
  • Networking & Content Delivery: ELB
  • Networking & Content Delivery: Route 53
  • Management & Governance: CloudFormation
  • Application Integration: SQS
  • Media Service: Kinesis
  • Quiz – Basic AWS Services

2. Part 2: The Bootstrap Guide

  • Starting from Scratch: Basic Web Application
  • Starting from Scratch: Manual AWS Infrastructure
  • Infrastructure as Code: Create CloudFormation Stack
  • Infrastructure as Code: Deploy CloudFormation Stack
  • Automatic Deployments: CodeBuild
  • Automatic Deployments: Install CodeDeploy Agent on EC2
  • Automatic Deployments: Create a CodePipeline
  • Load Balancing: Add a second EC2 Instance
  • Load Balancing: Add an Application Load Balancer
  • Scaling: Add an Auto Scaling Group
  • Scaling: Remove Instances
  • Production: Add Stack Name to our Application
  • Production: Create Staging Stack
  • Production: Create Production Stack
  • Custom Domains: Register Domain with Route 53
  • Custom Domains: Map our Domain to Load Balancers
  • HTTPS: Create a TLS Certificate
  • HTTPS: Add an HTTPS Endpoint
  • HTTPS: Make the Application Speak HTTPS
  • Network Security: Set up SSM for SSH Access
  • Network Security: Add Private Subnets with NAT Gateway
  • Network Security: Enabling HTTPS port in Public Subnets

Nguồn nội dung bài học: Educative.io