10 вопросов
Микросервисная архитектура: Service Discovery, API Gateway, Event-driven, CQRS, Saga, идемпотентность, Distributed Tracing. Паттерны взаимодействия и координации сервисов.
Микросервисы - это набор независимых сервисов: отдельный деплой, свои БД, общение по сети. Монолит - одно приложение и одна БД; масштабирование и изменения затрагивают всё целиком.
Подробнее →API Gateway - единая точка входа для клиентов: маршрутизация запросов к нужному сервису, аутентификация/авторизация, rate limiting, иногда агрегация нескольких вызовов в один ответ.
Подробнее →Event-driven: сервисы публикуют события в брокер сообщений, другие подписываются и реагируют. Слабая связанность: производитель не знает, кто потребит событие.
Подробнее →Distributed tracing - один trace ID проходит через все сервисы; каждый сервис создаёт span (родитель-потомок). В системах вроде Jaeger/Zipkin видна цепочка вызовов и время на каждом шаге.
Подробнее →Service discovery - реестр, куда сервисы регистрируются и откуда клиенты получают список живых инстансов.
Подробнее →Идемпотентность - повторный запрос с теми же данными дает тот же эффект. Реализация через Idempotency-Key.
Подробнее →CAP: при сетевом разделении (Partition) нужно выбирать между согласованностью (Consistency) и доступностью (Availability). CP-системы (PostgreSQL) жертвуют доступностью, AP-системы (Cassandra) - согласованностью.
Подробнее →Микросервисы дают независимый деплой, масштабирование отдельных частей, технологическое разнообразие. Но усложняют операции, отладку, консистентность данных и требуют зрелой инфраструктуры.
Подробнее →CQRS - Command Query Responsibility Segregation: отдельная модель и путь для записи (команды) и для чтения (запросы). Модели чтения могут быть денормализованы и храниться в отдельных БД или кэшах.
Подробнее →Saga - цепочка локальных транзакций в разных сервисах. При сбое выполняются компенсирующие транзакции (откат) в обратном порядке. Хореография (события) или оркестратор (центральный координатор).
Подробнее →