Поймёте, что делает систему высоконагруженной, и какие проблемы возникают при росте нагрузки
Освоите базовые шаблоны масштабирования, доступности и производительности
Научитесь анализировать и проектировать простые архитектуры под высокую нагрузку
Получите практический опыт решения типичных проблем: горячие ключи, GC-паузы, race conditions
Сформируете фундамент для перехода к продвинутому уровню (Highload Fundamentals, практикум)
Senior и Techlead/Teamlead
Систематизируете свои знания о работе нагруженных систем и ключевых инженерных вызовах
Получите набор готовых паттернов и тактик, применимых к вашим текущим сервисам
Освежите понимание масштабируемости, доступности, производительности – в связке
Разовьёте навык объяснения технических решений команде и бизнесу на языке метрик и trade-off’ов
Увидите, как устроены реальные архитектуры (Twitter, Uber, YouTube) и какие ошибки в них были допущены
Architect
Посмотрите на свою архитектурную практику через призму проверенных паттернов и инженерных подходов
Получите основу для построения собственного фреймворка оценки решений под нагрузкой
Увидите, как вводный курс используется как фильтр для роста и развития внутри команды
Необходимые требования для прохождения курса
Опыт коммерческой разработки от 2 лет в роли middle+ или senior engineer
Базовое понимание клиент-серверной архитектуры, HTTP-протокола и устройства веб-приложений
Уверенное владение одним из языков backend-разработки (Go, Java, Python, C#, JavaScript и др.)
Навыки работы с базами данных (реляционными и/или NoSQL)
Готовность погружаться в технические детали и архитектурные компромиссы
[Цели курса]
Понять, что делает систему высоконагруженной Разобраться, какие метрики, характеристики и паттерны определяют highload-систему. Осознать, в чём коренные отличия от обычных приложений и почему масштабирование – это не просто «больше серверов».
1.
Освоить ключевые шаблоны масштабирования, доступности и производительности Познакомиться с базовыми стратегиями и тактиками построения отказоустойчивых и масштабируемых решений: от горизонтального масштабирования до расчёта SLA и работы с деградацией.
2.
Научиться выявлять и устранять узкие места в системах Увидеть, как проявляются реальные проблемы: нагруженная запись, GC-паузы, thundering herd, конфликтные транзакции. Получить практический опыт оптимизации и проектирования под нагрузку.
3.
Разобраться в архитектуре популярных систем и инцидентах Разобрать подходы Twitter, Uber, YouTube и других к масштабированию, кэшированию, фан-ауту, инцидент-менеджменту. Увидеть на практике, как технические решения влияют на устойчивость продукта.
4.
Построить фундамент для перехода к системному архитектурному мышлению Понять, как мыслить в категориях доступности, производительности и управляемой деградации. Подготовиться к следующему шагу – курсам Highload Fundamentals и практикуму по Highload-системам.
5.
Закрепить знания через практику и проектные задания Спроектировать мини-сервисы (чат, сокращатель ссылок, thumbnail-API), оптимизировать код, устранить реальные bottlenecks, потренироваться в разборе архитектур и подготовке к рефакторингу.
6.
[Что будет на курсе]
Поймём, что такое Highload-система и её ключевые сложности Расшифруем критерии Highload-систем: какие метрики и пороги считать «высокой нагрузкой». Разберём основные проблемы: нагрузочная запись, устаревание кэша, «celebrity»-запросы, горячие партиции, GC-паузы. Приведём реальные примеры сверхнагруженных проектов и их архитектурные решения.
1.
Изучим шаблоны и тактики масштабируемости и доступности Сравним горизонтальную и вертикальную масштабируемость, научимся подбирать правильный подход для разных задач. Познакомимся с шаблонами (sharding, CQRS, event sourcing и др.) и тактиками (control resource demand, manage resources). Разберём методы обнаружения, восстановления и предотвращения отказов, поймём, что такое «количество девяток» и как его считать.
2.
Освоим подходы к повышению производительности и реальные кейсы Определим, что такое Performance-показатели и какие шаблоны (caching, batching, back-pressure) работают лучше всего. Познакомимся с тактиками управления нагрузкой: от контроля потребления ресурсов до динамического распределения. Проанализируем реальные инциденты Twitter, YouTube, Wildberries и Uber: какие решения помогли им справиться с пиком запросов.
3.
Разберём реальные инциденты и сложные баги в Highload-системах Изучим причину и профилактику «thundering herd» и гонок (race conditions) при распределённых блокировках. Проработаем сценарии переполнения очередей, dead-letter-механизмы и консистентность кэша при failover. Разберём кейсы, связанные с feature toggles, и научимся структурировать расследование инцидентов в Highload-окружении.
4.
[ Как проходит обучение ]
Разбираете тему и обсуждаете ее
с преподавателем.
Изучаете материал
Выполняете ДЗ
Решаете учебные задачи, подготовленные для курса.
Получаете обратную связь
Разбираете с преподавателем ошибки и пути их решения.
После прохождения курса Вы получите сертификат на двух языках RU и ENG
1
2
3
4
Каждое практическое задание сопровождается:
Реальными кейсами и замерами времени выполнения
Нагрузочным тестированием и отладкой
Обратной связью по коду и архитектуре
Ревью решений от наставников и коллег
Практика: 3 задания – от диагностики проблем highload-систем до проектирования и оптимизации собственных сервисов под нагрузкой.
Практика распределена по курсу и охватывает ключевые аспекты:
1. Разбор проблем Highload-систем: Погружаемся в особенности нагрузки – исследуем нагруженную запись в БД, GC-паузы, наблюдаем аномалии, отрабатываем гипотезы на тестовой системе. 2. Проектирование нагруженных сервисов: Создаём и тестируем собственные версии сервисов:
сокращатель ссылок
fan-out чат (один пишет – тысячи читают)
генератор миниатюр (thumbnail-сервис)
3. Оптимизация кода и архитектур: Проводим анализ, исправляем и ускоряем готовые решения, замеряем до/после. Упрощаем архитектурные схемы, повышаем читаемость и масштабируемость.
Курс построен на принципе «учимся на практике»–каждую неделю участники решают задачи, приближённые к работе с реальными высоконагруженными системами.
[ Практика]
[ Программа курса ]
теории
4 занятия
практики
3 занятия
1.1. Что считать HL системой? (Критерии HL системы) 1.2. Чем конкретно сложна HL система? 1.3. Примеры highload систем 1.4. Проблемы высоконагруженных систем: 1.4.1. Нагруженная запись 1.4.2. Устаревание данных в кэше 1.4.3. Celebrity проблема (одинаковые запросы) 1.4.4. Горячие партиции/ключи 1.4.5. GC паузы
3.1. Понятие Performance (производительность) 3.2. Шаблоны performance 3.3. Performance tactics 3.3.1. Control resource demand 3.3.2. Manage resources 3.4. Подходы к оптимизации приложений 3.5. Реальные проблемы из известных систем (Twitter, YouTube, Wildberries, Uber)
4.1. Реальные проблем нагруженных систем 4.1.1. «Thundering herd» и как её избежать 4.1.2. Distributed locks и race conditions 4.1.3. Раздутие очередей и dead-letter 4.1.4. Инциденты, связанные с feature toggles 4.1.5. Консистентность кэша при failover 4.1.6. Сложные баги из-за неправильной изоляции транзакций
Развитие разработчика невозможно без понимания интересов бизнеса
—Павел Вейник, Founder Hard&Soft Skills
[ Преподаватель курса ]
Founding Architect at Hard & Soft Skills
Павел Вейник
Разработчик с 2003 года, занимается обучением с 2008, обучением сеньоров и архитекторов с 2018. Делился экспертизой на более чем 100 митапах и конференциях.
Выполнял роли разработчика, тимлида, архитектора, СТО в небольших стартапах, крупных корпорациях и продуктовых компаниях:
Специализации: архитектура распределенных систем, highload, микросервисные архитектуры, системная инженерия, рост инженера, коммуникации в организации.
Architect: Miro, EPAM
CTO: AmadoAd Ltd., SplitMetrics, Leverice
Tech Advisor: Gincubator, LeoHome Inc.
Founder: Hard&Soft Skills, ITStart, Amadoad Ltd.
Выстраивал архитектуру для крупнейших мировых корпораций в рамках EPAM
Обучил более 1K разработчиков за последние 15 лет. Обучил более 400 архитекторов. Создает и проводит обучающие курсы для любых технических направлений.
Запишитесь на консультацию с ex-Architect Miro и EPAM и преподавателем курса Павлом Вейником
Если ты middle+ разработчик, техлид или начинающий архитектор и хочешь научиться «думать нагрузкой», понимать архитектурные проблемы под давлением и проектировать устойчивые сервисы – да, это курс для тебя.
Теории – 4 занятия. Практики – 3 занятия, плюс домашние задания и проект. Мы специально сократили объём теории до самого важного, а основной упор сделали на практику – ты не просто слушаешь, а сразу пробуешь и разбираешься в инструментах, архитектурах и проблемах.
Это реальные задачи:
замеры производительности,
отладка GC-пауз,
проектирование и нагрузочное тестирование сервисов (чат, сокращатель ссылок и др.),
оптимизация кода с метриками до/после.
Все задания приближены к реальному опыту работы с нагруженными системами.
Нет. Это вводный курс, и мы вместе по шагам изучаем ключевые подходы. Главное – быть уверенным разработчиком, способным писать код, экспериментировать и замерять результат.
Ты сам выбираешь стек. Мы дадим шаблоны и рекомендации, но ты можешь реализовывать сервисы на знакомом тебе языке и фреймворках. Главное – не технология, а подходы к проектированию под нагрузкой.
Highload Introduction – это знакомство с подходами и базовыми проблемами. Он нужен, чтобы:
понять, «твоя ли это тема»,
научиться базовым приёмам проектирования и анализа,
подготовиться к следующему шагу – Fundamentals (глубокому, технически насыщенному курсу для опытных инженеров и архитекторов).
Соглашение на обработку персональных данных
Присоединяясь к настоящему Соглашению и оставляя свои данные на Сайте Hard&Soft Skills, путем заполнения полей онлайн-заявки (оформления заказа) Пользователь:
– подтверждает, что указанные им персональные данные принадлежат лично ему; признает и подтверждает, что он внимательно и в полном объеме ознакомился с настоящим Соглашением и содержащимися в нем условиями обработки его персональных данных, указываемых им в полях онлайн заявки (регистрации) на Сайте; – признает и подтверждает, что все положения настоящего Соглашения и условия обработки его персональных данных ему понятны; – дает согласие на обработку Сайтом предоставляемых персональных данных в целях регистрации Пользователя на Сайте; – выражает согласие с условиями обработки персональных данных без каких-либо оговорок и ограничений.
Пользователь дает свое согласие на обработку его персональных данных, а именно совершение действий, предусмотренных законом «О персональных данных» Республики Беларусь, и подтверждает, что, давая такое согласие, он действует свободно, своей волей и в своем интересе. Согласие Пользователя на обработку персональных данных является конкретным, информированным и сознательным.
Настоящее согласие Пользователя применяется в отношении обработки следующих персональных данных: – фамилия, имя, отчество; – номера телефонов; – адресах электронной почты (E-mail); – данные о профессиональных навыках.
Пользователь предоставляет сервису https://hardsoftskills.dev право осуществлять следующие действия (операции) с персональными данными:
– сбор, накопление и хранение данных; – уточнение (обновление, изменение); – использование в целях регистрации Пользователя на Сайте; – удаление.
Указанное согласие действует бессрочно с момента предоставления данных и может быть отозвано Вами путем обращения через «Форму обратной связи» или по e-mail info@hardsoftskills.dev.
Сайт имеет право вносить изменения в настоящее Соглашение. При внесении изменений будет указываться дата последнего обновления. Последнее обновление: 22/09/2023