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

Глубокий курс по построению отказоустойчивой архитектуры — как быстро найти инцидент, на что смотреть и какие паттерны использовать. Все от А до Я на смоделированном TravelTech-проекте. Применимо в любой сфере
Преподает senior из Ozon Tech
интенсивность
2 урока в неделю
когда
27 октября
необходимый грейд
middle/senior
длительность
1.5 месяца

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

Развиваешь существующий сервис бронирования отелей, а там...
Падение одного микросервиса рушит всю систему, БД отказывает на пиковых нагрузках, и сбои — постоянная головная боль
Готовый номер считается неготовым
Room-ready событие отстаёт за медленным consumer
Гость: ждет
Отель: медленный check-in
Бронь есть, события нет
DB commit прошёл, а публикация в Kafka — нет
Гость: нет подтверждения
Стойка: бронь не видна
Истечение кеша обрушает PostgreSQL
Одинаковые miss одновременно идут в Search DB
Гость: ошибка поиска
Система: DB Saturation
Два гостя получают один номер
Конкурентные запросы уменьшают один остаток без проверки версии
Гость: отменяет бронь
Отель: овербукинг
Availability блокирует Booking
Ожидание и повторы заполняют connections и создают каскадный отказ
Гость: spinner
Платформа: retry storm
Система принимает больше работы, чем завершает
Низкоприоритетный поиск заполняет очередь и вытесняет check-in
Гость: не заселяется
Отель: очередь в лобби
Повтор создаёт вторую бронь
Booking сохранил результат, но клиент не получил ответ
Гость: две брони
Отель: ручная сверка
Популярный отель перегружает поиск
Тысячи гостей проверяют один номер на одинаковые даты
Гость: виснет поиск
Отель: теряет брони

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

/1
Упал один микросервис, а за ним вся система. Как разорвать цепочку
/2
БД легла от всплеска запросов. Как правильно использовать кэш, чтобы оптимизировать хранение данных
/3
В момент дежурства упала система. Как найти быстро найти причину, и какие действия предпринять для ее устранения без помощи старших коллег
/4
Как правильно кэшировать данные, чтобы не получить тонны устаревшей информации при инвалидации кеша или падении Redis
/5
Как написать повторную обработку сообщений, которая гарантированно не сломает систему
/6
Как правильно использовать retry, чтобы он за минуты при нагрузке не положил прод
чтобы решить задачу:
Вместе c Senior из Ozon Tech поочередно рассмотришь все проблемы в коде, к каждой разберешь теорию и сразу напишешь best practice решение
Непонятно, где случился инцидент
как исправим:
Дашборды в Grafana • алерты в Prometheus
Заранее можем прогнозировать проблемы, а если случился инцидент — быстро найти его
Готовый номер продолжает считаться неготовым
как исправим:
Message key · manual offset · lag SLI
События упорядочены по room_id, offset фиксируется после обработки, lag измеряется во времени
Бронь сохранена, но событие не опубликовано
как исправим:
Transactional outbox · inbox · retry topics
Booking пишет outbox вместе с бронью; consumer дедуплицирует доставку через inbox
Одновременные cache miss обрушивают Search DB
как исправим:
Singleflight · soft/hard TTL · TTL jitter
Один запрос обновляет ключ, остальные получают soft-stale. Hard TTL разнесён jitter
Два гостя резервируют последний номер
как исправим:
Optimistic locking · CAS · version token
Availability обновляет остаток только при совпадении версии
Availability блокирует Booking и создаёт retry storm
как исправим:
Deadline · timeout · circuit breaker · retry budget
Общий deadline ограничивает цепочку, breaker прекращает бесполезные вызовы
Поиск вытесняет check-in при нагрузке выше capacity
как исправим:
Load shedding · priority admission · bounded queue
Gateway отдаёт 429 низкому приоритету и сохраняет отдельный бюджет для check-in
Повтор запроса создаёт вторую бронь
как исправим:
Idempotency-Key · stored result
Booking хранит ключ и результат в транзакции с бронью и возвращает тот же ответ
Популярный отель перегружает Search
как исправим:
Cache-aside · hot-key isolation
Search владеет Redis, объединяет одинаковые запросы и возвращает допустимый stale-result
В итоге получишь «рецепты» по решению типичных инцидентов в prod’e, которые применимы к любой сфере и размеру компании — от маленькой до BigTech

подойдет middle/senior go-разработчикам

знаешь основы kafka
базово владеешь redis
Джунам будет сложно, но полезно
Если хочется быстрее расти и не пугает, что для усвоения материала придется дополнительно поизучать какие-то темы — приходи

подробная программа

Попадешь в смоделированную TravelTech-компанию: микросервисная архитектура с десятками типичных проблем в коде. Каждый урок закрывает один инженерный вопрос — почему возникает отказ, как его заметить и какой паттерн применить
{
ффф"ratio": {
ффффф"practice": 80%,
ффффф"theory": 20%
ффф}
}
Начинаем с инженерного расследования: почему пользователь видит ошибку, где искать источник деградации и как по метрикам отличить частичный отказ от каскадного

Теория:
  • архитектура учебного Go-стенда в Kubernetes: gateway, несколько микросервисов, БД, брокер или кэш;
  • надежность vs отказоустойчивость, graceful degradation, blast radius, MTBF и MTTR;
  • partial failure, cascading failure, transient, permanent и intermittent failures;
  • почему сеть ненадежна: timeout, потерянный ответ, частичный успех и отсутствие глобального времени;
  • SLI / SLO / SLA: availability, error rate, latency p95/p99, saturation и request rate;
  • почему средняя latency обманывает и как читать пользовательскую деградацию по p95/p99.

Практика:
  • в k8s-стенде включаем fault-сценарии: сломанный pod, медленный downstream, временно недоступную БД и lag в асинхронной обработке
  • работаем с Grafana / Prometheus, kubectl, логами и incident card.

----------------------

Результат:
  • умеешь начать расследование: найти симптом, определить пострадавший SLI, оценить радиус поражения и выбрать первую безопасную реакцию
{
ффф"differences": {
ффффф"practice": true,
ффффф"theory": false
ффф}
}

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

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

Курс

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

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

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

«System Design»

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

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

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

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

Над TravelTech-проектом работаешь на лекциях с преподавателем. В домашках закрепляешь знания на проекте аренды самокатов с аналогичными проблемами

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

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

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

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

Общий чат

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

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

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

Сертификат

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

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

отзывы студентов прошлого потока

В этом потоке исправили проблему с длительностью уроков
Вместо 6 длинных стало 12 коротких — до 90 минут

еще больше отзывов

  • Семён Киланов
    Курс был очень полезен — узнал много тонкостей о которых не знал ранее
  • Ольга Ларина
    Очень много материала, подробные объяснения, много случаев из реальной практики
  • Artem Tretiakov
    Классно, что разбирали реальные кейсы и реальные способы для применения в prod
  • Сергей
    Данил отвечает в личных сообщениях очень развернуто, если появляются вопросы
  • Борис Полошков
    Крутые ДЗ, имитирующие реальные бизнес-проблемы, глубина раскрытия тем
  • Сергей Фастунов
    Насыщенность материала. Готовность ведущего к работе до «последнего клиента»

метрики удовлетворенности прошлого потока

Учеников готовы рекомендовать обучение друзьям и коллегам
Итоговая оценка курса
по 10-ти балльной шкале

здесь можно учиться за счет работодателя

Оставляй заявку — ответим на вопросы и поможем согласовать обучение
у нас учились:

начинаем 27 октября

Можно оплатить в рассрочку и иностранной валютой. Вернем 100% средств в первую неделю обучения, если не понравится
Стандарт
Премиум
12 online-занятий
Домашние задания
Q&A-сессии с ответами на вопросы
Общий чат и допматериалы
Доступ к урокам на 1 год
Проверка ДЗ от преподавателя
Вернем все деньги в первую неделю обучения, если не понравится
54 700 Р
53 900
Стоимость увеличится через:
52д 48ч 32м 17с
Можно в рассрочку — частями и без процентов
9 100
Р х 6
или
18 250
Р х 3
Будет дешевле, если проходили у нас:
При заполнении формы оплаты укажи email, к которому привязан аккаунт на платформе. Скидка применится автоматически
1 курс
54 700
49 230 Р
3+ курса
54 700
43 760 Р
5+ курсов
54 700
38 290 Р
Стандарт
Премиум
12 online-занятий
Домашние задания
Q&A-сессии с ответами на вопросы
Общий чат и допматериалы
Доступ к урокам на 2 года
Проверка ДЗ от преподавателя
Вернем все деньги в первую неделю обучения, если не понравится
58 200 Р
66 400
Стоимость увеличится через:
52д 48ч 32м 17с
Можно в рассрочку — частями и без процентов
9 700
Р х 6
или
19 400
Р х 3
Будет дешевле, если проходили у нас:
При заполнении формы оплаты укажи email, к которому привязан аккаунт на платформе. Скидка применится автоматически
1 курс
58 200
52 380 Р
3+ курса
58 200
46 560 Р
5+ курсов
58 200
40 740 Р
Стандарт
12 online-занятий
Домашние задания
Q&A-сессии с ответами на вопросы
Общий чат и допматериалы
Доступ к урокам на 1 год
Проверка ДЗ от преподавателя
54 700 Р
53 900
Стоимость увеличится через:
52д 48ч 32м 17с
Можно в рассрочку — частями и без процентов
9100
х 6
|
18 250
х 3
Будет дешевле, если проходили у нас:
При заполнении формы оплаты укажи email, к которому привязан аккаунт на платформе. Скидка применится автоматически
1 курс
54 700
49 230 Р
3+ курса
54 700
43 760 Р
5+ курсов
54 700
38 290 Р
Премиум
12 online-занятий
Домашние задания
Q&A-сессии с ответами на вопросы
Общий чат и допматериалы
Доступ к урокам на 2 года
Проверка ДЗ от преподавателя
58 200 Р
66 400
Стоимость увеличится через:
52д 48ч 32м 17с
Можно в рассрочку — частями и без процентов
9100
х 6
|
18 250
х 3
Будет дешевле, если проходили у нас:
При заполнении формы оплаты укажи email, к которому привязан аккаунт на платформе. Скидка применится автоматически
1 курс
58 200
52 380 Р
3+ курса
58 200
46 560 Р
5+ курсов
58 200
40 740 Р
Частые вопросы
В индивидуальной проверке домашних работ. Но важно понимать: тариф без проверки не значит отсутствие фидбека или менее внимательное отношение к тебе

Все ученики в равных условиях и находятся в одном чате. Никаких разделений. Просто ученики премиум-тарифа получают персональный фидбек от преподавателя — и в этом вся разница

Студенты без проверки не остаются без обратной связи — если появляется вопрос по ДЗ, можно разобрать его на еженедельных Q&A-сессиях с преподавателем. А еще есть доступ к проверенным домашкам учеников с опцией персонального фидбека — можно изучать их работы, смотреть комментарии преподавателя и учиться на чужих ошибках

Тариф «Стандарт» — это не «урезанный» вариант, а нормальный рабочий формат. И в нем тоже есть обратная связь, просто точечная — в моменты, когда она действительно тебе нужна

задать вопрос

Пиши, если есть вопрос по курсу или не знаешь, с чего начать — поможем советом

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