Управляем состоянием распределенных систем без боли Архитектуры, масштабируемость

Доклад принят в программу конференции
Илья Казначеев
MTS Cloud

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

http://kaznacheev.me
https://github.com/ilyakaznacheev
https://linkedin.com/in/ilyakaznacheev/
Тезисы

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

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

Другие доклады секции Архитектуры, масштабируемость