Що нового?

Придбаний [Системне дизайнерське мислення] системний дизайн для інтерв'ю і не тільки (Михайло Смарщок)

Інформація про покупку
Тип покупки: Складчина
Ціна: 2795 ГРН
Учасників: 0 з 28
Організатор: Відсутній
Статус: Набір учасників
Внесок: 103.8 ГРН
0%
Основний список
Резервний список

Gadzhi

Модератор
Проектування системи для співбесід і не тільки.

Відмінний курс від практика System Design. Записуйся!

Англійська + Англійська субтитри

  1. введення
    1.1. Вступ до курсу
    1.2. Кому і як курс буде корисний
    1.3. Огляд курсу
  2. Як визначити системні вимоги
    2.1. Системні вимоги
    2.2. Функціональні вимоги
    2.3. Висока доступність
    2.4. Відмовостійкість, стійкість до збоїв, надійність
    2.5. Масштабованість
    2.6. Продуктивність
    2.7. Надійність
    2.8. Узгодженість
    2.9. Обслуговуваність, безпека, вартість
    2.10. Зведення системних вимог
  3. Як досягти певних якостей системи за допомогою апаратних засобів
    3.1. Регіони, зони доступності, центри обробки даних, стійки, сервери
    3.2. Фізичні сервери, віртуальні машини, контейнери, безсерверні
    3.3. Основи надійного, масштабованого та швидкого спілкування
    3.4. Синхронна vs асинхронна комунікація
    3.5. Асинхронні шаблони обміну повідомленнями
    3.6. Мережеві протоколи
    3.7. Блокуючий vs неблокуючий введення-виведення
    3.8. Формати кодування даних
    3.9. Підтвердження повідомлень
  4. Як покращити продуктивність системи за допомогою кешу
    4.1. Кеш дедуплікації
    4.2. Кеш метаданих
  5. важливість черг у розподілених системах
    5.1. Черга
    5.2. Проблеми повної та порожньої черги
    5.3. Почніть з чогось простого
    5.4. Блокуюча черга і шаблон виробник-споживач
    5.5. Пул потоків
    5.6. Архітектура великих обчислень
  6. нутрощі систем зберігання даних
    6.1. Журнал
    6.2. Індекс
    6.3. Дані часових рядів
    6.4. Проста база даних ключ-значення
    6.5. Індекс B-дерева
    6.6. Вбудована база даних
    6.7. RocksDB
    6.8. LSM-дерево vs B-дерево
    6.9. Кеш сторінок
  7. Як побудувати ефективну комунікацію в розподілених системах
    7.1. Push vs pull
    7.2. Виявлення хостів
    7.3. Виявлення служб
    7.4. Виявлення бенкетів
    7.5. Як вибрати мережевий протокол
    7.6. Мережеві протоколи в реальних системах
    7.7. Відео через HTTP
    7.8. CDN
    7.9. Технології push і pull
    7.10. Технології push і pull в реальних системах
    7.11. Архітектури масштабування push на великих масштабах
  8. Як надійно доставляти дані
    8.1. Що ще потрібно знати для створення надійних, масштабованих і швидких систем
    8.2. Тайм-аути
    8.3. Що робити з невдалими запитами
    8.4. Коли повторювати спробу
    8.5. Як повторити спробу
    8.6. Гарантії доставки повідомлень
    8.7. Зміщення споживачів
  9. Як швидко доставити дані
    9.1. Пакетування
    9.2. Стиснення
  10. як доставляти дані на великому масштабі
    10.1. Як масштабувати споживання повідомлень
    10.2. Розділення в реальних системах
    10.3. Стратегії розділення
    10.4. Маршрутизація запитів
    10.5. Перебалансування розділів
    10.6. Консистентне хешування
  11. Як захистити сервери від клієнтів
    11.1. Перевантаження системи
    11.2. Автомасштабування
    11.3. Проектування системи автоматичного масштабування
    11.4. Відкидання навантаження
    11.5. Обмеження швидкості
    11.6. Як захистити клієнтів від серверів
    11.7. Синхронні та асинхронні клієнти
    11.8. Вимикач ланцюга
    11.9. Принцип проектування fail-fast
    11.10. Балка
    11.11. Shuffle sharding
  12. епілог
    12.1. Кінець (але не зовсім)
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)
про автора:
Hi! This is Mikhail Smarshchok from the System Design Interview YouTube channel . I am a software engineer with a passion for learning, teaching and mentoring. Having over 15 years of industry experience, last 9 years I worked on building scalable, highly available and low latency

distributed systems. For a long time, I have wondered what is the best way to learn system design. While there are many excellent resources for learning individual concepts, few provide a holistic view of how to design systems. And even after youve invested a lot of time and gained a lot of knowledge, its still hard to develop true system design thinking. Thinking that helps answer questions like: where to start my design; where to go next; how to break this big obscure problem into sub-problems that I know how to solve; and even if I dont know the answer, can I make an educated guess? So I challenged myself to create a course that can help build and improve system design thinking. And two years later, you can see the result of this work. Feel free to connect/follow me on LinkedIn where I try to post more of my thoughts and learning material regularly.

Привіт! Мене звуть Михайло Смарщок, я творець YouTube-каналу "System Design Interview". Я-програміст із захопленням до навчання і наставництва. Маючи більш ніж 15-річний досвід роботи в галузі, за останні 9 років я займався розробкою масштабованих, високодоступних та розподілених систем із низькою затримкою. Довгий час я замислювався, як найкраще навчитися проектуванню систем. Хоча існує багато чудових ресурсів для вивчення окремих концепцій, мало хто надає цілісне уявлення про те, як проектувати системи. І навіть після того, як ви вклали багато часу і отримали багато знань, все ще важко розвивати справжнє мислення про проектування систем. Мислення, яке допомагає відповісти на такі питання, як: з чого почати проектування; куди рухатися далі; як розбити цю велику неясну проблему на підзадачі, які я вмію вирішувати; і навіть якщо я не знаю відповіді, Чи можу я дати освічене припущення? Тож я кинув виклик собі створити курс, який може допомогти побудувати та вдосконалити мислення щодо проектування систем. І через два роки ви можете побачити результати моєї роботи. Не соромтеся зв'язатися зі мною на LinkedIn, де я регулярно публікую свої думки та навчальні матеріали.

https://privatelink.de/?https://leetcode.com/explore/interview/card/system-design-for-interviews-and-beyond/
 
Угорі