до 30 ноября
Хватай скидки -30% на все!
Черная пятница

Паттерны
отказоустойчивости
в микросервисах на Go

Глубокий курс по построению отказоустойчивой архитектуры — как быстро найти инцидент, на что смотреть и какие паттерны использовать. Все от А до Я на смоделированном ecom-проекте. Применимо в любой сфере
Преподает senior из Ozon Tech
интенсивность
ВТ/ЧТ в 19:00
когда
27 января
необходимый грейд
junior/middle
длительность
3 недели

Ты — новый Golang разработчик в ecom компании

Развиваешь существующий маркетплейс, а там...
Падение одного микросервиса рушит всю систему, база отказывает во время пиковых нагрузок, и сбои — твоя еженедельная рутина и головная боль

Глядя на архитектуру приложения, возникают вопросы:

/1
Упал один микросервис, а за ним вся система. Как разорвать цепочку
/2
БД легла от всплеска запросов. Как правильно использовать кэш, чтобы оптимизировать хранение данных
/3
В момент дежурства упала система. Как найти быстро найти причину, и какие действия предпринять для ее устранения без помощи старших коллег
/4
Как правильно кэшировать данные, чтобы не получить тонны устаревшей информации при инвалидации кеша или падении Redis
/5
Как написать повторную обработку сообщений, которая гарантированно не сломает систему
/6
Как правильно использовать retry, чтобы он за минуты при нагрузке не положил прод
чтобы решить задачу:
Вместе c Senior из Ozon Tech поочередно рассмотришь все проблемы в коде, к каждой разберешь теорию и сразу напишешь best practice решение, как в BigTech
Внедришь идемпотентность и Dead Letter Queue, чтобы при ошибках пользователя не откатывало на повторное создание заказа с нуля и система не останавливала обработку остальных заказов
Научишься писать outbox-паттерн и управлять offset’ами в Kafka, чтобы гарантировать списание средств за заказ
Напишешь повторную обработку сообщений, которая гарантированно не сломает систему и сохранит в кеше весь заказ без необходимости оформления с нуля
Научишься контролировать перегруз БД через Rate Limiter, «склейку» дублирующихся запросов через Single Flight и балансировку Nginx
Изолируешь упавший сервис с помощью Circuit Breaker, и напишешь Graceful Degradation с Fallback, чтобы отказ одного микросервиса не ронял всю систему
В итоге получишь «рецепты» по решению типичных инцидентов в prod’e, которые применимы к любой сфере и размеру компании — от маленькой до BigTech

программа

3 недели систематизированно изучаем применение паттернов отказоустойчивости

Попадешь в смоделированную ecom-компанию: микросервисная архитектура с десятками типичных проблем в коде. Поочередно разберешь каждую, получишь необходимую теорию и уже со второго занятия начнешь писать код
{
ффф"ratio": {
ффффф"practice": 80%,
ффффф"theory": 20%
ффф}
}
Особенности распределенных информационных систем:
  • Отказоустойчивость & Надежность
  • Каскадные сбои
  • CAP-теорема (Consistency, Availability, Partition Tolerance)
  • Классификация проблем и типы частичных отказов

Метрики надежности с примерами:
  • SLA (Service Level Agreement)
  • SLO (Service Level Objective) 
  • SLI (Service Level Indicator) 
  • Что такое «99,9%» доступности и для чего это нужно?

Влияние отказов на целостность данных:
  • Понятие целостности и угрозы ее потери
  • Идемпотентность
  • Split-brain & Failover
  • Кворумная запись/чтение

Разберем:
  • что такое WAL и зачем он нужен Postgres
  • почему важен replica factor > 1 в Kafka
  • Как ЮKassa обрабатывает дубликаты платежей

BigTech-инциденты и как их можно было избежать:
  • GitHub — как все упало на сутки
  • AWS us-east-1 — как пострадали сотни онлайн-сервисов по всему миру
  • Facebook, Instagram, WhatsApp — как отказ системы обрушил цену акции и привел к потере $6 млрд
  • GitLab — как легла БД и удалился пользовательский код
  • Случаи из личной практики в production

––––––––––––––––––––––

Результат недели:
  • понимаешь суть и последствия отказоустойчивости, как свойства системы
  • можешь выделить 2 из 3 свойств CAP-теоремы для выбранной системы
  • магические девятки в метриках надежности теперь прозрачны и понятны

В результате освоишь hard’ы, без которых сложно вырасти до Senior’а

/1
Научишься изолировать упавший сервис с помощью Circuit Breaker, а также писать Graceful Degradation и Fallback, чтобы один баг не ронял всю систему
/2
Сможешь контролировать перегруз БД через Rate Limiter, «склейку» дублирующихся запросов через Single Flight и балансировку Nginx
/3
Научишь систему заранее оповещать о предстоящих инцидентах, а если он уже случился — сможешь быстро их находить и решать
/4
Реализуешь многоуровневое кеширование с LRU/LFU-вытеснением и настроишь Redis так, чтобы данные в кеше были всегда актуальны
/5
Научишься внедрять идемпотентность и писать повторную обработку сообщений с outbox-паттерном и ручным управлением offset’ами в Kafka
/6
Сможешь писать Retry, который не создает «шторм» запросов, и делает систему стабильной под нагрузкой
{
ффф"differences": {
ффффф"practice": true,
ффффф"theory": false
ффф}
}

главное отличие этого курса от остальных

Практика с «рецептами» по решению типичных инцидентов в prod’e

Курс

Глубина изучения паттернов отказоустойчивости

«Микросервисы, как в BigTech» и курсы других школ

Основные паттерны с примерами кода. Изучается в середине курса и не так глубоко, как здесь. Упор на построение микросервисов с нуля

«System Design»

Изучается на уровне проектирования архитектуры без написания кода

Курс подойдет для junior/middle Golang-разработчиков, которые хотят вырасти в грейде

{
ффф"grade": {
ффффф"junior": true,
ффффф"middle": true,
ффффф"senior": false

ффф}
}
Программа состоит на 80% из практики, поэтому нужно знать язык и иметь базовые навыки работы с Kafka и Redis

из чего состоит курс

Последовательно смотрим каждую проблему в коде, разбираем ее в теории и сразу пишем решение
Уроки длятся по 1.5−2 часа и проходят два раза в неделю в свободное от работы время

Онлайн-уроки в ZOOM

Над ecom-проектом работаешь на лекциях с преподавателем, а в домашке пишешь код самостоятельно для закрепления материала

Реальные инциденты в домашней работе

Фидбек дает только преподаватель — никаких кураторов и помощников. Уточняющие вопросы можно задавать на еженедельных online-встречах

Q&A-сеccии и проверка ДЗ

Посмеяться, обсудить проблему или задать вопрос по паттернам отказоустойчивости архитектуры — на связи преподаватель и другие ученики курса

Общий чат

Книги, статьи, видео — отдадим все, что можно почитать на досуге и прокачаться еще сильнее

Дополнительные материалы

Выдадим после курса для подтверждения твоих навыков

Сертификат

преподает даниил булыкин, senior в ozon tech

распил монолита и построение многокомпонентного отказоустойчивого сервиса «Ozon Job»
Ozon Tech
разработка платформы DBass
ВКонтакте
max. нагрузка спроектированных систем
10 000 RPS
коммерческого опыта в BigTech
3000+ часов
в разработке высоконагруженных систем
4 года

Отвечаем репутацией за качество обучения

{
ффф"it_companies": {
ффффф"trust": 100%
ффф}
}
BigTech-компании регулярно покупают наши курсы для сотрудников. Вот некоторые из них:
начинаем 27 января
Можно оплатить в рассрочку и иностранной валютой. Вернем 100% средств в первую неделю обучения, если не понравится
Стандарт
Осталось <30 мест
30 660 Р
43 800 Р
До конца черной пятницы
дней
часов
минут
секунд
Премиум
6 online-занятий 2 раза в неделю
Домашние задания
Q&A-сессии с ответами на вопросы по ДЗ и лекциям
Общий чат и допматериалы
Доступ к курсу на 1 год
Проверка ДЗ от преподавателя
Оплатить полностью
Оформить рассрочку
Места закончились
39 340 Р
56 200 Р
До конца черной пятницы
дней
часов
минут
секунд
6 online-занятий 2 раза в неделю
Домашние задания
Q&A-сессии с ответами на вопросы по ДЗ и лекциям
Общий чат и допматериалы
Доступ к курсу на 2 года
Проверка ДЗ от преподавателя
Частые вопросы
На курсе по построению отказоустойчивых систем у тебя будет 2 урока в неделю примерно по 1.5-2 часа

Несмотря на это, ты сможешь проходить обучение в удобном для себя темпе и формате — у тебя будут записи уроков, поэтому ты легко сможешь наверстать упущенное

Остались вопросы?

Если у тебя срочный вопрос, можешь написать нам в Telegram-бот
Если ты готов немного подождать, оставляй вопрос на сайте — мы свяжемся с тобой в ближайшее время
Современные сервисы и приложения сталкиваются с новыми вызовами: рост нагрузки, сложные цепочки сервисов, интеграции со сторонними API. Даже небольшие ошибки микросервисных архитектур могут привести к сбоям и цепной реакции отказов. Именно поэтому при проектировании микросервисов важно заранее предусмотреть механизмы отказоустойчивости и правильное использование соответствующих паттернов.

Отказоустойчивая архитектура в приложениях снижает риски и сохраняет работоспособность системы в целом. В условиях высокой конкуренции простои недопустимы: клиенты ожидают стабильного ответа даже в случае частичного отказа отдельных компонентов. Использование Go для реализации микросервисов удобно благодаря простоте языка, высокой производительности и богатому набору инструментов для сетевого взаимодействия.

Несколько ключевых паттернов отказоустойчивости микросервисной архитектуры:
  • Circuit Breaker (Автоматический выключатель). Когда приложение зависает или отвечает слишком медленно, включается ответ в виде отказа запросов на определённое время. Это помогает разгрузить систему и снизить количество ошибок.
  • Retry (Повтор запроса). В случае временных проблем сервис может попробовать выполнить операцию повторно. Однако важно избегать бесконечных циклов и учитывать изменения состояния системы.
  • Bulkhead (Перегородки). Разделение потоков и ресурсов предотвращает «эффект домино», когда отказ одного сервиса вызывает проблемы в других.
  • Fallback (Резервные ответы). Вместо полного сбоя пользователь получает упрощённый ответ. Такой подход включает использование заранее подготовленных данных и помогает сохранить базовый уровень безопасности и стабильности.
  • Load Balancing и резервирование. Грамотная маршрутизация и дублирование компонентов обеспечивают повышения надёжности. Это позволяет приложению оставаться доступным даже при сбое отдельных узлов и упрощает реализации сложных сценариев.

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

Правильное использование паттернов отказоустойчивости в приложениях на Go обеспечивает стабильность, снижает вероятность ошибок и помогает справляться даже с самыми критическими проблемами. Благодаря встроенным инструментам языка и внешним библиотекам их внедрение становится относительно простой задачей, которая со временем окупается за счёт повышения надежности и доверия пользователей.

Паттерны отказоустойчивости архитектуры в микросервисах