Вы используете мобильную версию

перейти на Полную версию сайта

Доступно

[System Design Thinking] System Design for Interviews and Beyond (Mikhail Smarshchok)

Складчина [System Design Thinking] System Design for Interviews and Beyond (Mikhail Smarshchok). Совместные покупки курсов, тренингов, обучения. Присоединяйтесь! Важен каждый вкладчик.

Тема найдена по тегам:
Цена:
7600 руб
Взнос:
251 руб
Организатор:
Ⓚⓐⓡⓐⓟⓤⓩ

Список участников складчины:

1. Ⓚⓐⓡⓐⓟⓤⓩ 2. Юлия Fars
Оцените эту складчину: /5,
  1. Ⓚⓐⓡⓐⓟⓤⓩ
    Ⓚⓐⓡⓐⓟⓤⓩ Организатор складчин

    [System Design Thinking] System Design for Interviews and Beyond (Mikhail Smarshchok)

    [​IMG]

    Проектирование системы для собеседований и не только.

    Отличный курс от практика 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 you've invested a lot of time and gained a lot of knowledge, it's 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 don't 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, где я регулярно публикую свои мысли и материалы для обучения.

     
    Ⓚⓐⓡⓐⓟⓤⓩ, 17 май 2023
  2. Похожие складчины
    Загрузка...
  3. Ⓚⓐⓡⓐⓟⓤⓩ
    Ⓚⓐⓡⓐⓟⓤⓩ Организатор складчин
    Уведомляем вас о начале сбора взносов.
    Цена продукта: 7600 руб. Взнос с каждого участника: 251 руб.
    Кол-во участников в основном списке: 1 чел.

    Начало сбора взносов 19 Май 2023 года
     
    Ⓚⓐⓡⓐⓟⓤⓩ, 17 май 2023
Наверх