[Smarshchok] Системный дизайн для интервью и не только (2023)

Tomi

Редактор
🛡 МОДЕРАТОР 🛡
Регистрация
13 Июль 2018
Сообщения
28.224
Автор: Smarshchok
Название: Системный дизайн для интервью и не только (2023)

7aae6b835fc5954699069d5dd8d8170b.png


Описание:
System Design for Interviews and Beyond

Mikhail Smarshchok - System Design Thinking

Course curriculum

1. Introduction

1.1. Course introduction

1.2. Who will benefit from the course and how

1.3. Course overview

2. How to define system requirements

2.1. System requirements

2.2. Functional requirements

2.3. High availability

2.4. Fault tolerance, resilience, reliability

2.5. Scalability

2.6. Performance

2.7. Durability

2.8. Consistency

2.9. Maintainability, security, cost

2.10. Summary of system requirements

3. How to achieve certain system qualities with the help of hardware

3.1. Regions, availability zones, data centers, racks, servers

3.2. Physical servers, virtual machines, containers, serverless

3.3. Fundamentals of reliable, scalable, and fast communication

3.4. Synchronous vs asynchronous communication

3.5. Asynchronous messaging patterns

3.6. Network protocols

3.7. Blocking vs non-blocking I/O

3.8. Data encoding formats

3.9. Message acknowledgment

4. How to improve system performance with caching

4.1. Deduplication cache

4.2. Metadata cache

5. The importance of queues in distributed systems

5.1. Queue

5.2. Full and empty queue problems

5.3. Start with something simple

5.4. Blocking queue and producer-consumer pattern

5.5. Thread pool

5.6. Big compute architecture

6. Data store internals

6.1. Log

6.2. Index

6.3. Time series data

6.4. Simple key-value database

6.5. B-tree index

6.6. Embedded database

6.7. RocksDB

6.8. LSM-tree vs B-tree

6.9. Page cache

7. How to build efficient communication in distributed systems

7.1. Push vs pull

7.2. Host discovery

7.3. Service discovery

7.4. Peer discovery

7.5. How to choose a network protocol

7.6. Network protocols in real-life systems

7.7. Video over HTTP

7.8. CDN

7.9. Push and pull technologies

7.10. Push and pull technologies in real-life systems

7.11. Large-scale push architectures

8. How to deliver data reliably

8.1. What else to know to build reliable, scalable, and fast systems

8.2. Timeouts

8.3. What to do with failed requests

8.4. When to retry

8.5. How to retry

8.6. Message delivery guarantees

8.7. Consumer offsets

9. How to deliver data quickly

9.1. Batching

9.2. Compression

10. How to deliver data at large scale

10.1. How to scale message consumption

10.2. Partitioning in real-life systems

10.3. Partitioning strategies

10.4. Request routing

10.5. Rebalancing partitions

10.6. Consistent hashing

11. How to protect servers from clients

11.1. System overload

11.2. Autoscaling

11.3. Autoscaling system design

11.4. Load shedding

11.5. Rate limiting

11.6. How to protect clients from servers

11.7. Synchronous and asynchronous clients

11.8. Circuit breaker

11.9. Fail-fast design principle

11.10. Bulkhead

11.11. Shuffle sharding

12. Epilogue

12.1. The end (but not quite)

Материал на английском языке

Подробнее:
Для просмотра содержимого вам необходимо авторизоваться.

Скачать:
Скрытое содержимое могут видеть только члены группы Премиум.


Скрытый контент для пользователей All-dar.
 

Присоединяйтесь, чтобы открыть полный доступ

Комментарии и материалы этой темы доступны только зарегистрированным участникам

Новый участник?

Регистрация занимает меньше минуты

Уже с нами?

Войдите в свой аккаунт

Сверху