Попрактикуетесь на простом сервисе: проектирование и отладка под нагрузкой
Senior
Систематизируете знания о поведении систем под нагрузкой и влиянии архитектурных решений
Освежите в памяти тактики масштабирования и восстановления после сбоев, включая detect/recover/prevent
Получите структурированный набор паттернов, пригодных для аудита и улучшения production-сервисовс
Увидите типичные анти-паттерны и ошибки highload-систем на реальных примерах
TechLead/TeamLead и Architect:
Быстро вспомните основы, нужные для планирования отказоустойчивых и масштабируемых решений
Получите компактный инструментарий для обсуждения с командой: диаграммы, схемы, схемы расчёта availability
Подготовите базу для вовлечения команды в развитие инженерной зрелости через практику и обсуждение
Необходимые требования для прохождения курса
Опыт коммерческой разработки от 2 лет в роли middle+ или senior engineer
Базовое понимание клиент-серверной архитектуры, HTTP-протокола и устройства веб-приложений
Уверенное владение одним из платформ backend-разработки (Go, Java, Python, C#, Node.js и др.)
Навыки работы с базами данных (реляционными и/или NoSQL)
Готовность погружаться в технические детали и архитектурные компромиссы
[Цели курса]
Понять, что делает систему высоконагруженной Разобраться, по каким признакам можно определить highload-систему: от пиковых нагрузок и ограничений инфраструктуры до поведенческих особенностей пользователей. Понять, какие вызовы возникают при масштабировании, и почему простое добавление ресурсов часто не решает проблему.
1.
Осознать основные проблемы и риски highload-систем Познакомиться с типовыми инженерными трудностями: нагруженной записью, устареванием кэша, GC-паузами, неравномерностью нагрузки и «celebrity-проблемой». Увидеть, как мелкие архитектурные решения могут приводить к масштабным сбоям.
2.
Освоить базовые шаблоны масштабируемости и доступности Изучить ключевые тактики построения надёжных систем: горизонтальное и вертикальное масштабирование, избыточность, failover, отказоустойчивые паттерны. Понять, как рассчитывается availability и как добиваются «девяток» в SLA.
3.
Применить знания на практике Научиться выявлять и воспроизводить реальные проблемы (например, нагруженную запись в БД или GC-паузы), а также спроектировать простой, но нагруженный сервис – чтобы понять, как система ведёт себя под давлением.
4.
[Что будет на курсе]
Поймём, что такое highload и почему масштаб – это не только про «больше серверов» Разберёмся, какие признаки отличают highload-систему от обычной, и почему архитектура, которая работала на 1k RPS, начинает сбоить на 10k.
1.
Разберём ключевые проблемы нагруженных систем Нагруженная запись, GC-паузы, горячие ключи, устаревание данных в кэше, celebrity-проблема – рассмотрим, как эти вещи проявляются в реальных системах и какие есть способы их смягчить.
2.
Изучим базовые шаблоны масштабируемости и доступности Познакомимся с horizontal/vertical scaling, паттернами отказоустойчивости, расчётом SLA и метриками «девяток». Освоим подходы Detect–Recover–Prevent.
3.
Сделаем мини-практику: нагрузка и архитектура на ощупь Воспроизведём типовые проблемы (например, перегрузку записи или GC stop-the-world), а также спроектируем простой highload-сервис – сокращатель ссылок.
4.
[ Как проходит обучение ]
Разбираете тему и обсуждаете ее
с преподавателем.
Изучаете материал
Выполняете ДЗ
Решаете учебные задачи, подготовленные для курса.
Получаете обратную связь
Разбираете с преподавателем ошибки и пути их решения.
После прохождения курса Вы получите сертификат на двух языках RU и ENG
1
2
3
4
Что сделаем: ✓ Воспроизведём типовые проблемы нагруженных систем: - нагруженную запись в базу - GC-паузы и их влияние на отклик сервиса ✓ Спроектируем и обсудим архитектуру простого highload-сервиса – сокращателя ссылок, в котором есть запись, чтение и нагрузка. ✓ Посмотрим, как поведение сервиса меняется при увеличении трафика, и что начинает «ломаться» первым. ✓ Обсудим, какие тактики помогут справиться с ростом нагрузки.
Практика: Теория – это хорошо, но мы хотим, чтобы вы прочувствовали highload на практике.
Практика не требует установки сложного окружения: всё будет доступно через web-интерфейс или инструкции для запуска на своём сервере.
[ Практика]
[ Программа курса ]
теории
2 занятия
практики
2 занятия
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 паузы
Развитие разработчика невозможно без понимания интересов бизнеса
—Павел Вейник, 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 и преподавателем курса Павлом Вейником
Курс создан как открытое демо – для того, чтобы вы могли быстро вникнуть в основы highload и оценить наш подход к обучению.
Если ты middle+ разработчик, техлид или начинающий архитектор и хочешь научиться «думать нагрузкой», понимать архитектурные проблемы под давлением и проектировать устойчивые сервисы – да, это курс для тебя.
Теории – 4 занятия. Практики – 3 занятия, плюс домашние задания и проект. Мы специально сократили объём теории до самого важного, а основной упор сделали на практику – ты не просто слушаешь, а сразу пробуешь и разбираешься в инструментах, архитектурах и проблемах.
Это реальные задачи:
замеры производительности,
отладка GC-пауз,
проектирование и нагрузочное тестирование сервисов (чат, сокращатель ссылок и др.),
оптимизация кода с метриками до/после.
Все задания приближены к реальному опыту работы с нагруженными системами.
Нет. Это вводный курс, и мы вместе по шагам изучаем ключевые подходы. Главное – быть уверенным разработчиком, способным писать код, экспериментировать и замерять результат.
Ты сам выбираешь стек. Мы дадим шаблоны и рекомендации, но ты можешь реализовывать сервисы на знакомом тебе языке и фреймворках. Главное – не технология, а подходы к проектированию под нагрузкой.
Highload Introduction – это знакомство с подходами и базовыми проблемами. Он нужен, чтобы:
понять, «твоя ли это тема»,
научиться базовым приёмам проектирования и анализа,
подготовиться к следующему шагу – Fundamentals (глубокому, технически насыщенному курсу для опытных инженеров и архитекторов).
Соглашение на обработку персональных данных
Присоединяясь к настоящему Соглашению и оставляя свои данные на Сайте Hard&Soft Skills, путем заполнения полей онлайн-заявки (оформления заказа) Пользователь:
– подтверждает, что указанные им персональные данные принадлежат лично ему; признает и подтверждает, что он внимательно и в полном объеме ознакомился с настоящим Соглашением и содержащимися в нем условиями обработки его персональных данных, указываемых им в полях онлайн заявки (регистрации) на Сайте; – признает и подтверждает, что все положения настоящего Соглашения и условия обработки его персональных данных ему понятны; – дает согласие на обработку Сайтом предоставляемых персональных данных в целях регистрации Пользователя на Сайте; – выражает согласие с условиями обработки персональных данных без каких-либо оговорок и ограничений.
Пользователь дает свое согласие на обработку его персональных данных, а именно совершение действий, предусмотренных законом «О персональных данных» Республики Беларусь, и подтверждает, что, давая такое согласие, он действует свободно, своей волей и в своем интересе. Согласие Пользователя на обработку персональных данных является конкретным, информированным и сознательным.
Настоящее согласие Пользователя применяется в отношении обработки следующих персональных данных: – фамилия, имя, отчество; – номера телефонов; – адресах электронной почты (E-mail); – данные о профессиональных навыках.
Пользователь предоставляет сервису https://hardsoftskills.dev право осуществлять следующие действия (операции) с персональными данными:
– сбор, накопление и хранение данных; – уточнение (обновление, изменение); – использование в целях регистрации Пользователя на Сайте; – удаление.
Указанное согласие действует бессрочно с момента предоставления данных и может быть отозвано Вами путем обращения через «Форму обратной связи» или по e-mail info@hardsoftskills.dev.
Сайт имеет право вносить изменения в настоящее Соглашение. При внесении изменений будет указываться дата последнего обновления. Последнее обновление: 22/09/2023