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

Best Practice по HighLoad и отказоустойчивости веб-приложений
Подойдет ли мне этот курс?

Длительность

5 месяцев

Начало

27 сентября

Занятия

Пт 20:00, Ср 20:00

Общая стоимость

40 000 ₽

В месяц

10 500 ₽

В кредит:

10500 ₽ в месяц

Хочу дешевле
Общая стоимость
40 000 ₽
В месяц: 10 500 ₽
В кредит: 40000 ₽
в месяц
Продолжительность
5 месяцев, 4 академических часа в неделю
Пт 20:00, Ср 20:00
Начало занятий
27 сентября
Что даст вам этот курс

Сегодня немногие веб-разработчики обладают достаточным опытом для создания отказоустойчивых и масштабируемых архитектур. И именно такие специалисты являются самыми высокооплачиваемыми и востребованными в крупных компаниях: Google, Mail.Ru Group, Yandex, Netflix и др.

Для кого этот курс

Программа создана специально для веб-разработчиков, тимлидов команд веб-разработки, архитекторов и технических руководителей. За 5 месяцев студенты научатся использовать в своих проектах решения, которые выдерживают сотни тысяч (и даже миллионы) запросов в секунду, смогут правильно оптимизировать работоспособность серверов, начнут эффективно использовать инструменты, которые уже есть в проектах. Также курс позволит актуализировать и систематизировать знания в сфере HighLoad.

Преимущества программы

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


изучение основных проблем архитектуры веб-приложений

домашние задания — мини-проекты для портфолио

лучшие практики и решения высоких нагрузок веб-приложений

настоящее комьюнити и постоянный фидбек преподавателей-экспертов



Выпускники смогут:

— создавать веб-приложения, которые легко масштабировать
— обеспечивать отказоустойчивость веб-приложений даже при падении серверов
— правильно использовать шаблоны (кеширование, реплицирование, шардирование, индексирование)
— работать с инструментами, разработанными Google, Mail.Ru Group, Yandex
Преподаватель
Иван Ремень
Учился в технопарке Mail.Ru. В 2013 году начал работать стажером в проекте "Почта" компании Mail.Ru. С 2015 года преподавал различные (в том числе и авторские курсы) в образовательных проектах Mail.Ru. С 2016 года занимал должность руководителя группы в Почте. В том же году получил диплом магистра по специальности "Программная инженерия" в МГТУ им. Н.Э. Баумана.

С 2018 года начал работать в Ситимобил на должность руководителя группы. С апреля 2019 года был назначен руководитель направления серверной разработки. Занимается развитием технических навыков людей, поддержкой их мотивации, развитием отказоустойчивых архитектур, внедрением новых технологий в процесс разработки (golang, tarantool).

Основные технические навыки:
Golang
C
MySQL
Tarantool
Highload architecture
Linux API

Руководитель программы
Преподаватель
Иван Ремень
Учился в технопарке Mail.Ru. В 2013 году начал работать стажером в проекте "Почта" компании Mail.Ru. С 2015 года преподавал различные (в том числе и авторские курсы) в образовательных проектах Mail.Ru. С 2016 года занимал должность руководителя группы в Почте. В том же году получил диплом магистра по специальности "Программная инженерия" в МГТУ им. Н.Э. Баумана.

С 2018 года начал работать в Ситимобил на должность руководителя группы. С апреля 2019 года был назначен руководитель направления серверной разработки. Занимается развитием технических навыков людей, поддержкой их мотивации, развитием отказоустойчивых архитектур, внедрением новых технологий в процесс разработки (golang, tarantool).

Основные технические навыки:
Golang
C
MySQL
Tarantool
Highload architecture
Linux API

Руководитель программы
Минимальные знания
— Владение одним из языков серверной разработки: Python, PHP, Golang (предпочтительно), NodeJS (в крайнем случае), Java (в крайнем случае) — Умение верстать сайты на базовом уровне — Знания основ JavaScript — Навыки работы с SQL (составление запросов): в процессе обучения используется MySQL — Навыки работы с Linux
Процесс обучения
Образовательный процесс происходит ONLINE в формате вебинаров (язык преподавания — русский). В рамках курса слушателям предлагаются к выполнению домашние задания, которые позволяют применить на практике знания, полученные на занятиях. По каждому домашнему заданию преподаватель дает развернутый фидбек. В течение всего учебного процесса преподаватель находится в едином коммуникационном пространстве с группой, т. е. при обучении слушатель может задавать преподавателю уточняющие вопросы по учебным материалам.
Программа обучения
Модуль 1
Введение в высокие нагрузки
Модуль 2
СУБД в высоконагруженных проектах
Модуль 3
Разработка бэкенда высоконагруженных сервисов
Модуль 4
Типовые архитектуры
Модуль 5
Итоговый проект
Введение в высокие нагрузки
Тема 1: Проблемы высоких нагрузок
в чем мерить нагрузку
Latency
Throughput
Горизонтальное и вертикальное масштабирование
Когда же начинается высокая нагрузка?
27 сентября, 20:00 — 21:30
Тема 2: Проблемы высоких нагрузок
модели веб-серверов
Многопроцессные сервера
Многопоточные сервера
Проблемы медленных клиентов
Асинхронные сервера
Nginx vs Apache
Ограничения асинхронной модели
Трехзвенная архитектура
Синхронные и асинхронные языки программирования
2 октября, 20:00 — 21:30
Домашние задания: 1
1 Написать заготовку для социальной сети
Цель:
Тема 3: Нагрузочное тестирование
как правильно проводить тестирование под высокими нагрузками?
Генерация тестовых данных
Ограничения
JMeter
ab
Yandex tank
wrk
4 октября, 20:00 — 21:30
СУБД в высоконагруженных проектах
Тема 1: Индексы (часть 1)
explain
Структуры данных, которые используются в индексах
B-tree
B+-tree
Бинарные деревья
9 октября, 20:00 — 21:30
Домашние задания: 1
1 Сгенерировать случайные страницы для проекта социальной сети
Цель:
Тема 2: Индексы (часть 2)
хэш-таблицы
Какие индексы нужны для запросов
Кластерные индексы
Покрывающие индексы
Первичный ключ в InnoDB и MyISAM
11 октября, 20:00 — 21:30
Тема 3: Репликация (часть 1)
виды репликация
Реализация репликации в MySQL
Реализация репликации в PostgreSQL
16 октября, 20:00 — 21:30
Домашние задания: 1
1 Добавить m/s репликацию. Сделать балансирование запросов на чтение. Провести нагрузочное тестирование
Цель:
Тема 4: Репликация (часть 2)
ограничения асинхронной репликации
Полусинхронная и синхронная репликации
Проблемы m/m репликации
18 октября, 20:00 — 21:30
Тема 5: Репликация (часть 3)
обзор Galera
Инструменты для повышения отказоустойчивости (переключение master/slave)
23 октября, 20:00 — 21:30
Домашние задания: 1
1 Обеспечить возможность переключения master на другую машину без потери транзакций
Тема 6: Шардинг (часть 1)
что такое шардирование?
Подготовка
Виды шардинга
Стратегии шардирования
Консистентное шардирование
Guava
Шардирование по диапазону
Виртуальное шардировние
Принцип “Используются вместе - лежат вместе”
25 октября, 20:00 — 21:30
Тема 7: Шардинг (часть 2)
vitess
30 октября, 20:00 — 21:30
Домашние задания: 1
1 Написать систему диалогов с использованием шардинга
Тема 8: Кеширование
серверное кэширование
Клиентское кэширование
Проблемы кэширования
Инвалидация
Инвалидация кэша
Заголовки управления кэшом
1 ноября, 20:00 — 21:30
Тема 9: Очереди и отложенное выполнение
aMQP протокол
RabbitMQ
Сущности RabbitMQ - exchange, routing key, queue, dead letters
Примеры работы с очередями RabbitMQ в языке golang
Kafka
6 ноября, 20:00 — 21:30
Домашние задания: 1
1 Разработать ленту новостей
Разработать ленту новостей
Настроить кэширование для раздачи статики
Настроить кэширование ленты новостей
Настроить публикацию ленты новостей через очереди (рассмотреть эффект Леди Гаги)
Тема 10: Транзакции в РСУБД
aCID
CAP теорема
Производительность транзакции
Проектирование ПО для работы с транзакциями
Уровни изоляции и методы их обеспечения: MVCC и другое
8 ноября, 20:00 — 21:30
Тема 11: In-Memory СУБД
особенности In-Memory баз данных
Tarantool
Применимость in-memory баз
Tarantool как реплика mysql
13 ноября, 20:00 — 21:30
Домашние задания: 1
1 Поднять реплику mysql<->tarantool для любой таблицы из любой подсистемы
Цель:
Тема 12: OLAP и OLTP (часть 1)
oLTP
OLAP
Отличие OLTP и OLAP нагрузки
Реализации OLAP и OLTP
15 ноября, 20:00 — 21:30
Тема 13: OLAP и OLTP (часть 2)
clickhouse и его архитектура
20 ноября, 20:00 — 21:30
Домашние задания: 1
1 Провести сравнительные тесты ClickHouse и MySQL
Провести сравнительные тесты ClickHouse и MySQL
При запросах на запись
При большом количестве легких запросов на чтение
При малом количестве тяжелых запросов на чтение
Разработка бэкенда высоконагруженных сервисов
Тема 1: Протокол HTTP (часть 1)
протокол HTTP
Методы HTTP
REST-API
HTTPS (handshake, ускорение)
Chunk encodning
Сжатие: gzip, brotli, zopfli
22 ноября, 20:00 — 21:30
Тема 2: Протокол HTTP (часть 2)
tCP handshake
HTTP Keep-Alive
HTTP 2.0
WebSockets
27 ноября, 20:00 — 21:30
Домашние задания: 1
1 Применить в ленте новостей технологию web-socket для обновления ленты налету
Тема 3: Микросервисы (часть 1)
зачем нужны микросервисы
Взаимодействие микросервисов
Виды API
29 ноября, 20:00 — 21:30
Тема 4: Микросервисы (часть 2)
event-Driven микросервисы
Идемпотентное API
Коммутативность API
4 декабря, 20:00 — 21:30
Домашние задания: 1
1 Выделить систему диалогов в отдельный сервис
Выделить систему диалогов в отдельный сервис.
Реализовать взаимодействие сервисов через любое rest-API
Тема 5: Балансировка и отказоустойчивость (часть 1)
как устроен DNS
Балансировка через DNS
xixi-DNS
Балансировка reverse-proxy
Балансировка backend
Балансировка хранилищ
6 декабря, 20:00 — 21:30
Тема 6: Балансировка и отказоустойчивость (часть 2)
cARP
Haproxy
orchestrator
Libslave
11 декабря, 20:00 — 21:30
Домашние задания: 1
1 Реализовать соединение с mysql через haproxy
Реализовать соединение с mysql через haproxy.
Поднять несколько приложений и обеспечить их балансировку через nginx.
Тема 7: Использование асинхронности обработки
live-coding асинхронной обработки запроса на примере разработки twitter-like программы
13 декабря, 20:00 — 21:30
Тема 8: Распределенные транзакции
как обеспечить консистентность хранилищ разных БД
Гетерогенные и гомогенные транзакции
18 декабря, 20:00 — 21:30
Домашние задания: 1
1 Сделать сервис счетчиков. Обеспечить консистентное хранение числа непрочитанных сообщений при отправке сообщения
Цель:
Тема 9: Инфраструктура микросервисов
init.d
Systemd
Docker
Graceful restart
Graceful shutdown
20 декабря, 20:00 — 21:30
Тема 10: Системы конфигурации
etcd
consul
Византийский консенсус
Задача о византийских генералах
paxos
raft
gossip
Конфигурация без перезагрузки
memtable, sstable, LSM
25 декабря, 20:00 — 21:30
Домашние задания: 1
1 Обернуть сервис диалогов в docker. Научить остальные сервисы находить сервис диалогов через consul
Тема 11: Мониторинг и алертинг
мониторинг
Алертинг
Стратегии выбора порогов алертинга
Поиск аномалий
Graphite
Sentry
Grafana
Prometheus
Zabbix
Бизнес-мониторинг
Организация дежурств
27 декабря, 20:00 — 21:30
Типовые архитектуры
Тема 1: Новостной портал
1 января, 20:00 — 21:30
Домашние задания: 1
1 Организовать мониторинги свой социальной сети
Цель:
Тема 2: Рекламная система
3 января, 20:00 — 21:30
Тема 3: Почтовый сервис
8 января, 20:00 — 21:30
Домашние задания: 1
1 Сделать обзор архитектуры любого крупного западного сервиса: netflix, dropbox, twitch, gmail, ...
Тема 4: Облачное хранилище
10 января, 20:00 — 21:30
Тема 5: Сайт знакомств
15 января, 20:00 — 21:30
Домашние задания: 1
1 Сделать описание потенциальных узких мест собственной архитектуры
Сделать описание потенциальных узких мест собственной архитектуры.
Выработать план возможных решений.
Найти single points of failure
Итоговый проект
Необходимо разработать отказоустойчивую и масштабирую архитектуру веб-проекта. Далее разработать MVP по данной архитектуре.
Тема 1: Консультация по проекту
выбрать и обсудить выбранный проект

Варианты проектов:
- Новостной ресурс
- Сайт знакомств
- Ресурс для персональных блогов
- Интернет-магазин
- Или любой другое проект, кроме социальной сети
17 января, 20:00 — 21:30
Домашние задания: 1
1 Разработать MVP по данной архитектуре
Цель: Варианты проектов: Новостной ресурс Сайт знакомств Ресурс для персональных блогов Интернет-магазин Или любой другое проект, кроме социальной сети
Тема 2: Консультация по проекту
22 января, 20:00 — 21:30
Тема 3: Защита проекта
защита архитектуры и MVP
24 января, 20:00 — 21:30
Выпускной проект
Выпускной проект — возможность закрепить навыки, наработанные в процессе обучения. Это отдельная работа, на выполнение которой отводится последний месяц обучения. Тема проекта обсуждается с преподавателем в индивидуальном порядке.
После обучения вы

  • получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)

  • сможете писать рациональный и хорошо структурированный код

  • получите сертификат об окончании курса

  • приобретёте навыки работы с алгоритмами и структурами данных, которые необходимы при реализации сложных проектов в крупных компаниях

  • получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения)

Дата выдачи сертификата: 2 апреля 2020 года
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Архитектор высоких нагрузок»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Архитектор высоких нагрузок»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.
Общая стоимость
40 000 ₽
В месяц: 10 500 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
27 сентября