Розробка плану аварійного відновлення (Disaster Recovery Plan) для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка плану аварійного відновлення (Disaster Recovery Plan) для сайту
Середня
~3-5 робочих днів
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розроблення плану аварійного восстановлення (DRP)

Disaster Recovery Plan (DRP) — документований набір процедур для відновлення IT-інфраструктури після катастрофічного сбою. Без DRP команда паніує, дані втрачаються, відновлення займає дні замість годин. Хороший DRP існує у двох форматах: детальний документ для аналізу та короткі runbook'и для виконання о 3 ночі.

Структура DRP

1. Класифікація сценаріїв за пріоритетом

Сценарій RTO RPO Ймовірність
Падення сервера програм 15 хв 0 Висока
Відказ primary БД 30 хв 5 хв Середня
Втрата дата-центра (регіон) 4 ч 1 ч Низька
Атака ransomware / видалення даних 8 ч 24 ч Низька
Помилка деплоя (критична регресія) 30 хв 0 Висока

2. Відповідальні та контакти

# drp/contacts.yml
incident_commander: "CTO"
primary_oncall: "DevOps Team"

contacts:
  - role: "Incident Commander"
    name: "Aleksei Petrov"
    phone: "+7-xxx-xxx-xxxx"
    telegram: "@apetrov"

  - role: "DB Admin"
    name: "Marina Sidorova"
    phone: "+7-xxx-xxx-xxxx"

3. Інвентаризація критичних компонентів

# drp/inventory.yml
critical_systems:
  - name: "PostgreSQL Primary"
    host: "db-primary.internal"
    backup_location: "s3://backups/postgres/"
    backup_frequency: "hourly"
    replication: "streaming to db-replica-1, db-replica-2"

Runbook: втрата primary БД

# RUNBOOK: PostgreSQL Primary Failure
**Час:** 15-30 хвилин
**Вимоги:** доступ AWS, ssh до серверів

## Кроки

### 1. Підтвердити відказ (2 хв)
```bash
ssh db-primary.internal
psql -h db-primary.internal -U postgres -c "SELECT 1;"

2. Вибрати кращу реплік (3 хв)

Перевірити запізнення на кожній реплік та вибрати ту, що має найменше запізнення.

3. Промоут реплік (5 хв)

patronictl -c /etc/patroni/patroni.yml failover cluster-name --master db-replica-1

4. Перенаправити трафік (5 хв)

Оновити DNS або HAProxy

5. Перезапустити програму (2 хв)

kubectl rollout restart deployment/api -n production

6. Верифікація

curl https://api.example.com/health
psql -h db-primary.example.com -U app -c "SELECT count(*) FROM users;"

### Автоматизація DR-процедур

```bash
#!/bin/bash
# scripts/dr/db-failover.sh
# Автоматичний failover при підтвердженому відказі primary

set -euo pipefail

# 1. Підтвердити відказ
if pg_isready -h "$DB_PRIMARY_HOST" -U postgres -t 5; then
  echo "[$(date -u)] Primary is up. Aborting."
  exit 1
fi

# 2. Знайти кращу реплік
BEST_REPLICA=""
BEST_LAG=999999999

for replica in $DB_REPLICAS; do
  LAG=$(psql -h $replica -U postgres -tAc "
    SELECT extract(epoch from (now() - pg_last_xact_replay_timestamp()))::int
  " 2>/dev/null || echo 999999999)

  if [ "$LAG" -lt "$BEST_LAG" ]; then
    BEST_LAG=$LAG
    BEST_REPLICA=$replica
  fi
done

# 3. Промоут (Patroni)
patronictl -c /etc/patroni/patroni.yml failover \
  postgres-cluster --master $BEST_REPLICA --force

# 4. Сповістити Slack
curl -s -X POST "$SLACK_WEBHOOK" -H 'Content-type: application/json' \
  -d "{\"text\": \"DB Failover completed. New primary: $BEST_REPLICA (lag was ${BEST_LAG}s)\"}"

Тривалість

Розроблення повного DRP з runbook'ами для 5–10 сценаріїв, інвентаризацією та скриптами автоматизації — 3–5 робочих днів.