Какие архитектурные подходы и инструменты используются для обеспечения катастрофоустойчивости (Disaster Recovery)?

«Какие архитектурные подходы и инструменты используются для обеспечения катастрофоустойчивости (Disaster Recovery)?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Катастрофоустойчивость (Disaster Recovery, DR) обеспечивается комплексом мер для восстановления работы системы после крупного сбоя. Основные подходы:

1. Стратегия репликации и размещения:

  • Multi-AZ (Availability Zone) развёртывание: Компоненты (БД, инстансы приложений) размещаются в разных физических дата-центрах внутри одного региона для отказоустойчивости.
  • Cross-Region репликация: Критичные данные асинхронно реплицируются в другой географический регион (например, из eu-west-1 в us-east-1). Используется для AWS RDS, S3, DynamoDB Global Tables.

2. Резервное копирование (Backup) и восстановление:

  • Автоматические снепшоты (snapshots) БД и файловых систем.
  • Регулярное тестирование процедуры восстановления для проверки RPO (Recovery Point Objective) и RTO (Recovery Time Objective).

3. Отказоустойчивые кластеры:

  • Базы данных: PostgreSQL/MySQL в кластерной конфигурации с автоматическим failover (Patroni, Galera).
  • Брокеры сообщений: Apache Kafka с репликацией партиций на брокеры в разных AZ (фактор репликации min. 3).

Пример настройки источника данных в Spring для работы с Multi-AZ кластером:

@Bean
public DataSource dataSource() {
    HikariConfig config = new HikariConfig();
    // Подключение к endpoint кластера, который управляет failover
    config.setJdbcUrl("jdbc:postgresql://my-cluster.cluster-xyz.eu-west-1.rds.amazonaws.com/db");
    config.setConnectionTimeout(30000); // Увеличенный таймаут на случай переключения AZ
    config.setMaximumPoolSize(20);
    return new HikariDataSource(config);
}

Тестирование: Регулярно проводятся DR-дриллы — имитация отключения региона или AZ для проверки процедур восстановления и соблюдения SLA (например, RTO < 15 минут).