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

Курсы

Курсы в разработке Подготовительные курсы
Работа в компаниях Компаниям Блог +7 499 110-61-65

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

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

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

5 месяцев

Начало

31 декабря

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

50 000 ₽

В месяц

12 500 ₽

В кредит:

12500 ₽ в месяц

Хочу дешевле
Общая стоимость
50 000 ₽
В месяц: 12 500 ₽
В кредит: 50000 ₽
в месяц
Продолжительность
5 месяцев, 4 академ. часа в неделю
Начало занятий
В декабре
Что даст вам этот курс

Сегодня немногие веб-разработчики обладают достаточным опытом для создания отказоустойчивых и масштабируемых архитектур. И именно такие специалисты являются самыми высокооплачиваемыми и востребованными в крупных компаниях: 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

Повышаю качество более 10 лет. Ускорял системы документооборота, порталы государственных услуг. Сейчас развиваю каналы дистанционного банковского обслуживания для юридических лиц.
Основной профиль работы: тестирование производительности.
Хорошо разбираюсь в тестировании защищённости.

В 2016 окончил МГТУ имени Н.Э.Баумана (ИУ-7).

Профессиональную карьеру начал в 2014, с 2016 работаю в фин. техе, писал бэкенд в hft-фонде, писал с нуля бэкенд биржи Onederx. С 2019 пишу бэкенд часть брокера другой биржи и руковожу небольшой командой разработчиков.

Люблю новые технологии, постоянно стараюсь знакомиться с чем-то новым и применять это на практике. Основные языки - C++/Go.

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

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

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

Вячеслав Смирнов
Повышаю качество более 10 лет. Ускорял системы документооборота, порталы государственных услуг. Сейчас развиваю каналы дистанционного банковского обслуживания для юридических лиц.
Основной профиль работы: тестирование производительности.
Хорошо разбираюсь в тестировании защищённости.

Юрий Юрочко
В 2016 окончил МГТУ имени Н.Э.Баумана (ИУ-7).

Профессиональную карьеру начал в 2014, с 2016 работаю в фин. техе, писал бэкенд в hft-фонде, писал с нуля бэкенд биржи Onederx. С 2019 пишу бэкенд часть брокера другой биржи и руковожу небольшой командой разработчиков.

Люблю новые технологии, постоянно стараюсь знакомиться с чем-то новым и применять это на практике. Основные языки - C++/Go.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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