Налаштування Disaster Recovery плану для інфраструктури

Коли стається аварія, критично важливо швидко відновити роботу сервісів, але без перевіреного плану це перетворюється на хаос. Ми розробляємо та впроваджуємо Disaster Recovery плани, які допомагають вашій команді діяти чітко навіть у стресовій ситуації. Наша команда бере на себе весь цикл — від аудиту та проєктування до регулярних перевірок і підтримки, забезпечуючи надійність і готовність до будь-яких збоїв.
Часті запитання

Більшість компаній згадують про Disaster Recovery після першого серйозного інциденту. Падіння ЦОД, випадково віддалена production-база, компрометація хмарного облікового запису з видаленням усіх ресурсів — у цей момент виявляється, що бекапи є, але ніхто не знає, як їх відновлювати, а час відновлення виявляється в 10 разів більшим за допустимий. Ми допомагаємо запобігти таким сценаріям, розробляючи DR-плани, які гарантовано спрацюють у неробочий час.

DR-план — це не документ заради документа. Це набір перевірених технічних процедур із конкретними RTO та RPO, які працюють о 3 годині ночі без автора плану. Наша команда має 10+ років досвіду в розробці планів аварійного відновлення для компаній різного масштабу — від стартапів до enterprise з compliance-вимогами.

Як вибрати RTO та RPO для ваших сервісів?

Інвентаризація критичних компонентів. Для кожного сервісу визначаємо: де дані, як бекапяться, який допустимий простій (RTO) та максимальна втрата даних (RPO). Типова матриця:

Компонент RPO RTO Тип DR
PostgreSQL (транзакції) 0 хв 5 хв Streaming replication + failover
PostgreSQL (аналітика) 1 год 2 год pg_dump → S3
Файлове сховище 24 год 4 год rsync → cross-region S3
Kubernetes state 1 год 2 год Velero → S3
DNS 0 (managed) 0 (failover) Route53 health checks

Документація з відновлення кожного компонента. Не «відновити БД з бекапу», а покрокова інструкція з конкретними командами. Кожен крок має вміти виконати черговий інженер без доступу до автора плану і без часу на роздуми.

Технічні процедури: найцінніша частина

Для кожного компонента в DR-плані описуємо три сценарії: частковий збій (одна нода), повний збій (втрата всієї площадки), компрометація (зловмисник видалив дані).

Приклад процедури відновлення PostgreSQL з pg_basebackup:

# 1. Зупинити сервіс, підключений до БД
systemctl stop app-service

# 2. Очистити data directory
rm -rf /var/lib/postgresql/15/main/*

# 3. Відновити з останнього бекапу
aws s3 cp s3://backups-prod/postgresql/basebackup-latest.tar.gz /tmp/
tar xzf /tmp/basebackup-latest.tar.gz -C /var/lib/postgresql/15/main/

# 4. Налаштувати recovery target
cat > /var/lib/postgresql/15/main/postgresql.auto.conf << EOF
restore_command = 'aws s3 cp s3://backups-prod/postgresql/wal/%f %p'
recovery_target_time = '2023-01-15 10:00:00'
recovery_target_action = 'promote'
EOF
touch /var/lib/postgresql/15/main/recovery.signal

# 5. Запустити PostgreSQL і перевірити recovery
systemctl start postgresql
tail -f /var/log/postgresql/postgresql-15-main.log

Такий рівень деталізації — єдиний прийнятний для production DR-плану. Відновлення з streaming replication швидше, ніж з повного бекапу, в 10 разів — це різниця між хвилинним простоєм і годиною.

Ланцюжки залежностей. Застосунок не запуститься без БД. БД не запуститься без правильного network routing. Routing не працює без DNS. У плані явно документуємо порядок відновлення: спочатку інфраструктура (VPC, security groups), потім бази даних, потім stateful сервіси, потім stateless застосунки, потім DNS та load balancer.

Чому тестування DR-плану критичне?

Тестування виявляє приховані проблеми: застарілі скрипти, змінені версії ПЗ, недоступні бекапи. Ми проводимо тести в ізольованому середовищі, імітуючи реальні збої. Кожен тест завершується postmortem, а процедури коригуються. Без регулярного тестування план втрачає актуальність уже за місяць.

Приклад з практики: у клієнта RPO було 1 годину, але під час тесту виявилося, що pg_dump виконується 2 години на production-базі. Довелося перейти на pg_basebackup з WAL-архівацією. Тест врятував від втрати даних.

Результати тестування одного з проектів У ході квартального тесту виявили: некоректні права доступу до S3-бакету, застарілий скрипт відновлення MySQL, несправний health-check для load balancer. Після виправлення — RTO скоротився з 4 до 1,5 годин.

Інфраструктурний код як частина DR

Вся інфраструктура має бути описана в Terraform або Ansible — це само по собі частина DR-плану. terraform apply на чистому обліковому записі має підняти базову інфраструктуру без ручних дій:

# Ініціалізація в аварійному регіоні
terraform init \
  -backend-config="bucket=tfstate-dr-backup" \
  -backend-config="region=eu-central-1"

# Перевірка плану без застосування
terraform plan -var-file=environments/production-dr.tfvars

# Застосування
export TF_VAR_region="eu-central-1"
terraform apply -var-file=environments/production-dr.tfvars -auto-approve

Terraform state зберігається в S3 з cross-region реплікацією та версіонуванням. Втрата primary-регіону не повинна означати втрату state-файлу.

Runbooks та ескалація

DR-план включає runbooks — короткі сценарні інструкції для конкретних типів збоїв. Структура кожного runbook: тригер (що сталося), діагностика (як переконатися), кроки відновлення, перевірка результату, кому доповідати.

Матриця ескалації: хто перший черговий, хто second-on-call, хто приймає рішення про перемикання на резервну площадку, хто повідомляє клієнтів.

Як створити runbook за 5 кроків? — налаштування disaster recovery

  1. Визначте типові сценарії збоїв (відмова диска, збій БД, помилка розгортання).
  2. Опишіть тригер — метрику або алерт, що однозначно вказує на збій.
  3. Запишіть діагностичні команди для підтвердження (наприклад, pg_isready, curl health-check).
  4. Покроково опишіть відновлення з конкретними командами та скриптами.
  5. Вкажіть, як перевірити успішність відновлення та кого повідомити.

Що входить у роботу з розробки DR-плану?

  • Аудит поточної інфраструктури та виявлення критичних компонентів.
  • Визначення цільових RTO/RPO для кожного сервісу.
  • Розробка технічних процедур відновлення з перевіркою на реальних системах.
  • Створення runbooks для типових сценаріїв збоїв.
  • Тестування DR-процедур в ізольованому середовищі.
  • Фіналізація документації та передача команді (доступи, навчання, підтримка).

Етапи роботи

Масштаб інфраструктури Термін
5-15 компонентів, один регіон 1-2 тижні
15-50 компонентів, мультирегіон 3-6 тижнів
Велика інфраструктура з compliance-вимогами від 2 місяців

Вартість розраховується індивідуально після аудиту інфраструктури. Ми виконали понад 50 DR-проектів, і кожен план супроводжується гарантією актуальності на 6 місяців.

Середня вартість відновлення після збою без DR-плану може сягати $1000 за хвилину. Наші клієнти економлять до 80% витрат на відновлення завдяки заздалегідь розробленим процедурам. Зверніться до нас для консультації — ми допоможемо підготувати інфраструктуру до будь-яких збоїв. Отримайте демо-версію нашого підходу на вашому проекті.

Визначення термінів Disaster Recovery та RTO/RPO наведено в Wikipedia.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141