В процессе обучения рассматриваются типичные и нетривиальные проблемы архитектуры веб-приложений. Преподаватели поделятся лучшими практиками и решениями этих проблем.
Сегодня немногие веб-разработчики обладают достаточным опытом для создания отказоустойчивых и масштабируемых архитектур. И именно такие специалисты являются самыми высокооплачиваемыми и востребованными в крупных компаниях: Google, VK, Yandex, Netflix и др.
Для кого этот курс:
- Веб-разработчиков. Расширите свой кругозор, поймете какие есть подводные камни у разных решений и почему именно они используются и как с ними работать правильно
- Тимлидов команд веб-разработки. Получите набор инструментов для проектирования системы в вашей команде, а так же надежные аргументы для объяснения, продажи, подтверждения решения своих или команды
- Архитекторов ПО. Курс даст базу, на которой строятся все системы подверженные высокой нагрузке на всем пути начиная от запроса пользователя, заканчиваю возвращением ему ответа
Что вам даст этот курс:
- За 5 месяцев студенты научатся использовать в своих проектах решения:
- Которые выдерживают сотни тысяч (и даже миллионы) запросов в секунду;
- Смогут правильно оптимизировать работоспособность серверов;
- Начнут эффективно использовать инструменты, которые уже есть в проектах;
- Также курс позволит актуализировать и систематизировать знания в сфере HighLoad.
Программа курса
Введение в высокие нагрузки
В этом модуле будут рассмотрены высокие нагрузки. Большая часть модуля будет посвящена особенностям архитектуры компьютеров и операционных систем. Студенты получат представление о главных проблемах, с которыми сталкивается архитектор систем
- Тема 1: Проблемы высоких нагрузок // ДЗ
- Тема 2: Введение в docker. Обзор docker-compose
- Тема 3: Введение в высокие нагрузки
- Тема 4: Нагрузочное тестирование
СУБД в высоконагруженных проектах
В данном модуле изучим особенности проектирования хранилищ для работы в условиях высоких нагрузок, методы их резервирования и масштабирования
- Тема 1: Индексы: структуры данных
- Тема 2: Индексы: оптимизация запросов // ДЗ
- Тема 3: Репликация: основы и алгоритмы
- Тема 4: Репликация: виды репликации
- Тема 5: Репликация: практическое применение // ДЗ
- Тема 6: Кеширование // ДЗ
- Тема 7: Транзакции в реляционных СУБД
- Тема 8: Шардирование: основы и алгоритмы
- Тема 9: Шардирование: практическое применение // ДЗ
- Тема 10: Очереди и отложенное выполнение #1
- Тема 11: Очереди и отложенное выполнение #2 // ДЗ
- Тема 12: In-Memory СУБД // ДЗ
- Тема 13: OLAP и OLTP
- Тема 14: Обзор ClickHouse
- Тема 15: Leaderless базы данных. Casandra
Разработка бэкенда высоконагруженных сервисов
В данном модуле будут рассмотрены основные способы проектирования приложений, способных выдерживать высокие нагрузки. Рассмотрим инфраструктуру таких приложений, средства мониторинга и отладки. Поговорим о том, как не создавать точки отказа и обеспечить масштабируемость
- Тема 1: Когда нужны микросервисы, а когда монолиты
- Тема 2: Паттерны декомпозиции системы на микросервисы
- Тема 3: Domain Driven Design
- Тема 4: Принципы организации микросервисов. Типы взаимодействий // ДЗ
- Тема 5: Протокол HTTP #1
- Тема 6: Протокол HTTP #2
- Тема 7: Балансировка и отказоустойчивость #1
- Тема 8: Балансировка и отказоустойчивость #2 // ДЗ
- Тема 9: Использование асинхронности обработки
- Тема 10: Распределенные транзакции // ДЗ
- Тема 11: Инфраструктура микросервисов
- Тема 12: Системы конфигурации
- Тема 13: Распределенное файловое хранилище
- Тема 14: Мониторинг и алертинг // ДЗ
- Тема 15: Средства описания архитектуры
Типовые проблемы Highload на примере разных архитектур
В этом модуле рассмотрим проблемы ХЛ архитектуры типовых веб-проектов: новостного портала, рекламной системы, облачного хранилища и сайта знакомств
- Тема 1: Новостной портал, Сайт знакомств
- Тема 2: Рекламная система, Видеостриминг, Облачное хранилище
System Design на практике
Научимся находить единые точки отказа и узкие места в сервисах
- Тема 1: System Design
- Тема 2: System Design: Сервис продажи билетов
- Тема 3: System Design: Сервис такси
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей. Необходимо разработать отказоустойчивую и масштабирую архитектуру веб-проекта. Далее разработать MVP по данной архитектуре
- Тема 1: Выбор темы и организация проектной работы // Проект
- Тема 2: Консультация по проектам и домашним заданиям
- Тема 3: Защита проектных работ









