Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

Управляем состоянием распределенных систем без боли

Архитектурные паттерны

Доклад принят в программу конференции

Тезисы

Управление состоянием в сложном микросервисном ландшафте — задача не из легких. Как только процесс изменения затрагивает несколько слабосвязанных сущностей, проблема их консистентности встает поперек горла архитектора. На помощь приходят многофазные транзакции, Saga, X/Open XA... Теперь вместо одной проблемы у вас две.

В процессе разработки сервиса Containerum Kubernetes Service мы пошли другим путем — построили распределенную систему на основе доменной модели, управляемой конечными автоматами, и синхронно-асинхронной коммуникации между сервисами посредством gRPC и Kafka. Это позволило нам управлять сложными иерархическими сущностями, разбросанными на полдюжины сервисов, гибко обрабатывать ошибки и забыть про неконсистентность и болезненные роллбэки. Нашим опытом, ошибками и успехами я с вами и поделюсь.

Technical Lead в MTC Cloud, Cloud Architect, основатель Golang Voronezh и SAP Community Voronezh, соведущий подкаста Z-Namespace, организатор конференций и митапов.

MTC Cloud

Видео