Короткий ответ
Явного универсального ответа нет: active-active даёт меньшее RTO (фактически около нуля при отказе региона) и может улучшить latency для глобальных пользователей, но требует решения проблем консистентности данных при конкурентной записи в нескольких регионах, что часто сложнее и дороже, чем сама эксплуатация; решение зависит от того, можно ли архитектурно избежать конфликтов записи и оправдывают ли бизнес-требования эту сложность.
Как это работает подробнее
active-passive проще — весь трафик на запись идёт в один регион, второй регион — реплика, готовая принять трафик при отказе первого, но с ненулевым RTO (время на переключение) и возможной потерей последних неотреплицированных записей (RPO > 0 при асинхронной репликации). Active-active принимает запросы на запись в нескольких регионах одновременно, что устраняет RTO при отказе одного региона, но требует стратегии разрешения конфликтов (conflict resolution) при одновременной записи одних и тех же данных в разных регионах, что либо ограничивает модель данных (например, партиционирование по пользователю/региону, чтобы избежать конфликтов), либо требует сложных CRDT/last-write-wins механизмов с риском потери данных при разрешении конфликтов.
Компромисс: нужно явно сопоставить (а) частоту и стоимость отказов целого региона исторически и по оценке риска, (б) бизнес-стоимость даже короткого RTO для конкретного сервиса, (в) инженерную стоимость и риски решения проблемы консистентности данных при active-active, и обсудить с заинтересованными сторонами, оправдывает ли сокращение RTO с минут до секунд эту постоянную дополнительную сложность — однозначно правильного ответа без этих цифр нет.
Пример / кейс
Ожидаемое поведение: с такими цифрами обсуждение должно явно сравнить разовую/редкую потерю при active-passive с постоянной инвестицией и риском active-active, а не принимать решение исходя из общего тренда "active-active лучше".
Пример кода
Сервис: финансовые транзакции, выручка 50000$/час простоя.
Active-passive: RTO ~15 минут (после улучшения автоматизации), потенциальная потеря ~12500$ при отказе региона раз в год.
Active-active: RTO ~0, но оценка доп. инженерных затрат на consistency-слой — 6 месяцев команды из 4 человек
+ постоянные повышенные операционные риски.Что использовать на практике
- Практический подход. Active-active оправдан, когда данные естественно партиционируются по географии (у пользователя есть "домашний" регион, и конфликтов записи почти нет), либо когда бизнес готов инвестировать в сложные механизмы консистентности для действительно критичного сервиса (например, финансовые транзакции с строгими требованиями). Для многих систем выгоднее улучшать active-passive (снизить RTO через лучшую автоматизацию failover и регулярные drill) вместо перехода на active-active, который добавляет постоянную операционную сложность на годы вперёд.
Подводные камни
- Частые ошибки. Внедрять active-active "потому что это современно", не решив проблему консистентности данных, что приводит к трудноуловимым багам потери/рассинхронизации данных под нагрузкой; недооценивать операционную сложность отладки проблем, которые проявляются только при конкурентной записи в двух регионах одновременно; сравнивать стоимость вариантов только по инфраструктурным расходам, не учитывая стоимость дополнительной инженерной сложности и рисков.