Функционал работает идеально, и вроде бы всё хорошо. Но что происходит, когда база данных на секунду «ложится»? Или сторонний API начинает отвечать с задержкой в 30 секунд? А если сеть между микросервисами ненадолго пропадает?
В реальном мире такие инциденты неизбежны. И правильная реакция на них — барьер между грейдом middle и senior
Повторная попытка:- умный retry
- грамотный выбор backoff + jitter
- idempotent requests
- hedging запросов
Контроль выполнения:- timeout, когда дольше уже нельзя
- установка deadline
- cancel propagation при прерывании пути запроса
Защита системы от каскадных сбоев:- circuit breaker для спасения от отказов частей системы
- graceful degradation, когда отказ все же произошел
- fallback по возможности
На практике:- внедрим circuit breaker между сервисами
- обеспечим graceful degradation
- применим fallback
- выставим timeout'ы на синхронные вызовы
- реализуем idempotent retry
––––––––––––––––––––––Домашняя работа:Ты на дежурстве, алерты стучатся в дверь, а пользователи недовольны работой системы. Задача — самостоятельно найти инцидент, выбрать нужный паттерн и реализовать его
Результат:- умеешь справляться с ошибками и временными сбоями
- глубоко понимаешь суть каждого паттерна и сценария его применения
- умеешь применять это на практике в реальном проекте