• < онлайн-курс >
  • < 18 занятий >
  • < Старт 30.11 >
Оксана Носенко

Михаил Михалев

Software Engineer в Amazon

Архитектура высоких нагрузок

Получите фундаментальные знания в области системного дизайна

Записаться

о курсе

Чтобы никогда больше не проектировать системы по принципу copy-paste и не разгребать последствия падения, подключитесь к обучению на курсе. Вы узнаете, как компании справляются с высокой нагрузкой, и научитесь выбирать подходящие архитектурные решения исходя из требований бизнеса.

  • работа с распределенными данными с помощью DynamoDВ, Cassandra, Redis, Kafka, ZooKeeper, Spark
  • разбор реальных кейсов и типичных решений компаний с трафиком в миллионы пользователей ежедневно
  • разработка Highload-архитектуры для своего проекта

специализация курса

курс подойдет
  • Developers / Software Architect
    • ⟶ Научитесь разрабатывать дизайн систем так, чтобы они могли легко масштабироваться, сохраняя компромисс между надежностью, ресурсами и временем
  • DevOps / Tech Lead / Team Lead
    • ⟶ Узнаете, как крупные мировые компании справляются с высокой нагрузкой, разработаете собственную Highload-архитектуру и научитесь выбирать подходящие решения исходя из задач бизнеса.
  • CEO / CTO
    • ⟶ Вы получите фундаментальные знания в области системного дизайна, поймете, какие технологии применять в той или иной ситуации, и сможете оценивать затраты на реализацию сложных решений.
необходимые знания
  • Разработка
    • ⟶ опыт промышленной разработки > 2 лет на любом языке программирования
  • Big Data
    • ⟶ понимаете, что такое replication, partitioning, transactions, consistency, load balancer, relational/document data model
  • Highload
    • ⟶ опыт работы с высоконагруженными системами будет плюсом

30 ноября — 17 февраля

18 занятий (по вторникам и четвергам)

Записаться на курс
Михаил Михалев

лектор

Михаил Михалев

Software Engineer в Amazon

  • разрабатывает системы, которые отвечают за логистику и сортировку товара, и создает архитектурные решения, которые способны выдержать миллионы заказов каждый день, в Amazon [Ванкувер, Канада]
  • имеет > 9 лет опыта в промышленной разработке, 5 последних лет ― в разработке Highload-архитектур
  • 4 года руководил командой биллинга в одном из крупнейших сервисов в мире DeliveryHero [Берлин, Германия]
  • разрабатывал системы, которые справлялись с оборотом в несколько млн заказов в день
  • участвовал в разработке множества нагруженных проектов в роли разработчика и техлида в SmartHead

Программа

    • занятие 1
    • онлайн 30.11 в 18:00

    Введение в Highload-архитектуру

    Узнайте, что такое Highload и Data-Intensive Apps. Разберитесь в задачах, которые стоят перед архитектором высоконагруженных систем. Узнайте, с какими проблемами он сталкивается в своей работе. Ознакомьтесь с основными принципами, которые помогают выстроить систему from 0 to millions users. Научитесь делать грубые расчеты архитектуры приложений. Сделайте первый черновик Highload-дизайна.

    • занятие 2
    • онлайн 01.12 в 18:00

    Требования к архитектуре

    Разберитесь в базовых терминах, которые применяют в Highload-архитектуре. Узнайте trade-offs высоконагруженных систем: как выбрать компромисс между надежностью, возможностью масштабироваться и быстро восстанавливаться после падения. Научитесь собирать и составлять требования к приложению.

Показать всю программу свернуть программу
    • занятие 3
    • онлайн 07.12 в 18:00

    Формат хранения и передачи данных

    Изучите глубинную разницу между форматами хранения и передачи данных [JSON/XML/Binary]. Ознакомьтесь с преимуществами и недостатками каждого подхода и научитесь выбирать подход исходя из своих задач и требований бизнеса.

    • занятие 4
    • онлайн 09.12 в 18:00

    Коммуникация системы с внешним миром

    Узнайте, как работает коммуникация приложения с внешним миром. Разберитесь в отличиях Load balancer. Ознакомьтесь с разными методами имплементации rate limiter. Научитесь выбирать оптимальный вариант коммуникации исходя из требований бизнеса. Напишите алгоритм rate limiter.

    • занятие 5
    • онлайн 14.12 в 18:00

    Модели передачи данных

    Ознакомьтесь с моделями передачи данных [Database-through model, Service-through model (REST/RPC), Message-passing model]. Узнайте о преимуществах и недостатках каждой модели. Научитесь выбирать модель исходя из конкретных требований.

    • занятие 6
    • онлайн 16.12 в 18:00

    Хранение данных

    Ознакомьтесь с моделями хранения данных [Relational model и document-based model]. Разберите разницу между declarative query languages и imperative query languages. Изучите жизненный цикл Database Management System [DBMS]. Ознакомьтесь с моделями графовых данных. Научитесь выбирать лучший вариант хранения данных исходя из требований бизнеса.

    • занятие 7
    • онлайн 21.12 в 18:00

    Структуры данных

    Узнайте, как устроены базы данных и в каком виде в них хранится информация. Найдите необходимую информацию с помощью индексов. Выберите оптимальный вариант DBMS исходя из требований бизнеса по хранению данных.

    • занятие 8
    • онлайн 23.12 в 18:00

    Аналитика и хранение big data

    Узнайте, как нужно хранить данные для аналитики. Ознакомьтесь с алгоритмом построения Data Warehouse. Разберитесь в особенностях и отличиях Data Warehouse и Data Lake. Узнайте, какие факторы нужно учитывать при проектировании хранилища под big data и для чего нужны column-oriented storages. Напишите key-value хранилище данных исходя из требований.

    • занятие 9
    • онлайн 27.12 в 18:00

    Распределенные данные: САР-теорема

    Узнайте, для чего нужно распределять данные и какие проблемы решает такой подход. Узнайте также, какие проблемы могут возникнуть при таком подходе и научитесь их решать. Ознакомьтесь с САР-теоремой и научитесь выбирать наиболее подходящее решение по распределению исходя из требований.

    • занятие 10
    • онлайн 11.01 в 19:00

    Распределенные данные: репликация [replication]

    Изучите основы репликации данных. Ознакомьтесь со стратегиями репликации [Multi-leader replication, Leaderless replication]. Изучите преимущества и недостатки каждой стратегии. Ознакомьтесь с примерами и готовыми решениями рынка, которые используют ту или иную стратегию.

    • занятие 11
    • онлайн 13.01 в 18:00

    Распределенные данные: секционирование [partitioning]

    Изучите основы секционирования и поймите, как оно связано с репликацией. Ознакомьтесь со стратегиями ребалансировки и готовыми решениями, которые применяют компании на практике. Продолжите работу с key-value data warehouse.

    • занятие 12
    • онлайн 18.01 в 18:00

    Распределенные данные: транзакции [transaction]

    Узнайте, что такое ACID и зачем нужны Isolation levels. Разберитесь в особенностях каждого уровня и научитесь выбирать Isolation level исходя из требований бизнеса.

    • занятие 13
    • онлайн 20.01 в 19:00

    Распределенные данные: целостность [сonsistency]

    Узнайте, что такое целостность данных в контексте распределенных систем. Ознакомьтесь с типами целостности. На реальных примерах узнайте о преимуществах и недостатках каждого типа. Научитесь выбирать тип целостности данных исходя из требований бизнеса.

    • занятие 14
    • онлайн 25.01 в 18:00

    Распределенные данные: консенсус [сonsensus]

    Узнайте, что такое консенсус в распределенных системах. Ознакомьтесь с популярными алгоритмами консенсуса [Paxos и Raft]. Поймите, как работают популярные распределенные хранилища данных с точки зрения консенсуса. Реализуйте выбранный тип консенсуса.

    • занятие 15
    • онлайн 27.01 в 18:00

    Batch and Stream Рrocessing

    Изучите особенности работы пакетного режима и потокового режима. Ознакомьтесь с моделью MapReduce и узнайте, для каких задач ее применять. Получите информацию о различных Messaging systems, определите их преимущества и недостатки.

    • занятие 16
    • онлайн 03.02 в 18:00

    Event sourcing and streams

    Разберитесь в понятиях [state], [stream] и [immutability]. Узнайте, что такое [event stream] и [event sourcing] и когда необходимо их применять. Добавьте event stream или event sourcing в ваш дизайн.

    • занятие 17
    • онлайн 10.02 в 18:00

    Metrics. Monitoring. Alerting

    Узнайте, зачем нужен мониторинг, и научитесь грамотно настраивать оповещения. Разберитесь в метриках и узнайте, в чем отличие метрик от логов. Опишите метрики для одного из компонентов системы.

    • занятие 18
    • онлайн 17.02 в 18:00

    Презентация курсового проекта

    Создайте и защитите архитектуру выбранного [или своего] проекта, учитывая что дизайн обязательно должен предусматривать высокую нагрузку.

регистрация

Регистрируясь, вы соглашаетесь с условиями
договора-оферты и политикой конфиденциальности.

после курса вы сможете:

  • 1

     

    ⟶ разбираться в технологиях, которые лежат в основе масштабируемых и отказоустойчивых систем

    ⟶ применять и адаптировать современные Highload-практики компаний-гигантов

    ⟶ принимать правильные решения по архитектуре фичи/компонента/сервиса/приложения

  • 2

     

    ⟶ самостоятельно проектировать и разрабатывать системы, которые могут выдержать миллионы запросов пользователей каждый день

    ⟶ устранять и предотвращать проблемы, связанные с высокой нагрузкой

    ⟶ проводить нагрузочные тестирования

  • 3

     

    ⟶ настраивать мониторинг системы

    ⟶ оптимизировать работу существующих систем на вашей работе

    ⟶ определять стоимость внедрения того или иного решения под задачи бизнеса

What if … :

  • 1. ... курс не понравился — можно вернуть деньги.
  • 2. ... не подходит график занятий — уточните, когда будет следующий поток.
  • 3. ... вы пропустили занятия — сохраняется запись.