1. Не доверяйте все системы единственному центру обработки данных. В самой AWS рекомендуют распределять нагрузки между несколькими зонами доступности, в идеале — между несколькими регионами и несколькими облаками, такими как AWS, Microsoft Azure и Google Cloud Platform.
2. Обеспечьте возможность быстрого выявления сбоя. Для AWS простейший способ — пользоваться сервисом Health Check, который отображает состояние ресурсов, используемых конкретным клиентом. Есть также сервис Amazon CloudWatch, автоматически следящий за доступностью сервисов, передающий предупреждения и реагирующий на проблемы.
3. Дублируйте системы. Можно пользоваться «холодным» резервом — запускаемым при сбое основного или «горячим», когда работа распределяется между несколькими системами, и при сбое одной из них остальные делят между собой ее нагрузку.
4. Обеспечьте резервное копирование. AWS предлагает синхронное, асинхронное и кворумное тиражирование. Первое — когда приложение подтверждает транзакцию только после ее тиражирования на резервный ресурс, второе — когда тиражирование происходит независимо от работы основной системы, третье — когда можно задать минимальный объем данных, которые нужно продублировать, прежде чем транзакция будет подтверждена.
5. Проверяйте возможности своей системы. Сопротивляемость среды сбоям лучше проверять до того, как они пройдут. В Netflix, например, есть механизм Simian Army, специально вызывающий сбои различных систем для проверки общей устойчивости.