Database per service / Shared database - каждому сервису своя база
Паттерны данных
Отчеты по данным из нескольким сервисам
Кроны, очереди с обновлениями, кеш
Паттерны отказоустойчивости
fallback - сервис не работает - показываем заглушку / альт флоу
bulkheads - изоляция сервисов
backpressure - уменьшаем нагрузку, если серв не справляется
self-healing - аи само починка
rate limiting - пон
retries (backoff) - ну ретраи и ретраи, с увеличивающимся отчетом до ретрая
feature toggles - фича флаги
circuit breaker - прокси между клиентом и сервисом, если сервис лежит, то прокси понимает это и не кидает ещё один запрос на сервис, а сразу отдает клиенту ошибку
gracefull degradation - лежит, ну и хуй с ним, кор функционал держим
Распределенные транзакции
2pc
Пессимистичный алго
Участники транзакции сначала готовятся к транзакции, ничего не делая
Когда все будут готовы, отправляется команда на коммит - участники выполняют свои команды
Оркестратор - узкое место, нужно ждать сначала подготовки, потом все закоммитить
Saga
Оптимистичный алго
Распределённая транзакция состоит из маленьких транзакций, каждая из которых имеет роллбек и при падении транзакции, последовательно откатываем транзакции