Переход от монолитного приложения к микросервисной архитектуре часто вынуждает разделять данные по отдельным хранилищам, чтобы уменьшить связность в системе и увеличить её отказоустойчивость. В процессе может оказаться, что часть данных должна быть доступна из разных компонентов системы. Есть много разных подходов к решению этой проблемы, но чаще всего приходится искать компромисс между консистентностью данных и производительностью системы в целом.
Андрей расскажет, как им удалось разделить модели данных между компонентами системы с базой в десятки терабайт, тысячами RPS клиентской нагрузки и десятками миллионов сообщений в асинхронной обработке в день. Поделится, как помогла асинхронная репликация и почему в её реализации отказались от стандартного подхода к Event Sourcing. А ещё даст рекомендации, как поддерживать распределённый кеш в согласованном состоянии и как справляться с ситуациями внезапного выхода из строя одного из компонентов.