← Назад к вопросам

Что такое RPO?

1.0 Junior🔥 182 комментариев
#Другое

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разбор понятия RPO (Recovery Point Objective)

RPO (Recovery Point Objective) или Цель по точке восстановления — это ключевой показатель в области обеспечения непрерывности бизнес-процессов и аварийного восстановления (DR - Disaster Recovery). Он определяет максимально допустимый период времени, в течение которого данные могут быть потеряны в результате сбоя, без катастрофического воздействия на бизнес.

Суть и практическое значение RPO

По сути, RPO отвечает на вопрос: «Насколько свежей должна быть резервная копия данных, чтобы после восстановления бизнес мог продолжить работу?». Это не технический параметр системы, а бизнес-требование, которое диктуется критичностью данных и процессов. Например, для банковской транзакционной системы RPO может составлять 0 секунд (нулевая потеря данных), а для внутренней wiki-системы компании — несколько часов.

Пример:

  • Если RPO установлен в 15 минут, это означает, что в худшем случае после аварии система будет восстановлена с данными, актуальными на момент 15 минут до сбоя. Все транзакции, совершённые в эти последние 15 минут, будут потеряны и должны быть перезапущены или компенсированы.

Как RPO связано с технологиями резервного копирования и репликации

RPO напрямую определяет выбор архитектуры резервирования и репликации данных:

  • RPO = 0 (Zero RPO). Требует технологий непрерывной синхронной репликации данных (например, синхронная репликация на уровне блока storage или использование распределенных баз данных с немедленной синхронной записью). Любая операция записи должна быть подтверждена как в основной, так и в резервной системе прежде чем будет считаться успешной.
# Пример конфигурации синхронной репликации в PostgreSQL
primary_conninfo = 'host=standby_node port=5432 application_name=my_application sslmode=require sslcompression=0 target_session_attrs=read-write'
synchronous_standby_names = 'ANY 1 (standby_node)'
  • RPO = несколько минут/часов. Позволяет использовать более экономичные и менее нагрузочные решения: асинхронную репликацию, периодический снепшоты (snapshots) или резервное копирование с высокой частотой.
# Пример cron-задачи для частого снепшота через AWS CLI (RPO ~15 мин)
crontab -e
*/15 * * * * /usr/bin/aws ec2 create-snapshot --volume-id vol-0abcd1234 --description "15-min RPO snapshot"

Расчет и обеспечение RPO в DevOps-практике

Для DevOps инженера работа с RPO включает:

  1. Участие в оценке бизнес-требований с владельцами продуктов для определения приемлемого уровня потери данных для каждого сервиса.
  2. Дизайн и реализация инфраструктуры, соответствующей целевым RPO. Это может быть комбинация:
    *   Репликации баз данных (синхронной/асинхронной).
    *   Поточной репликации журналов изменений (например, Kafka MirrorMaker).
    *   Регулярных снепшотов виртуальных машин или контейнеров.
  1. Мониторинг и проверка соблюдения RPO. Системы должны постоянно измерять лаг репликации (replication lag) и сравнивать его с целевым RPO.
# Пример скрипта проверки лага репликации PostgreSQL
import psycopg2

conn_primary = psycopg2.connect("host=primary dbname=postgres")
conn_standby = psycopg2.connect("host=standby dbname=postgres")

cur_primary = conn_primary.cursor()
cur_primary.execute("SELECT pg_current_wal_lsn()")
current_lsn = cur_primary.fetchone()[0]

cur_standby = conn_standby.cursor()
cur_standby.execute("SELECT pg_last_wal_replay_lsn()")
replay_lsn = cur_standby.fetchone()[0]

lag_bytes = current_lsn - replay_lsn  # Расчет лага в байтах
# Конвертация в время и сравнение с целевым RPO (например, 15 минут)
  1. Регулярное тестирование процедур восстановления (DR Drill) для подтверждения, что реальное время потери данных после имитации аварии действительно соответствует установленному RPO.

RPO vs RTO (Recovery Time Objective)

Важно не смешивать RPO с другим ключевым показателем — RTO (Recovery Time Objective). RTO определяет максимально допустимое время восстановления работы системы после сбоя, то есть как быстро она должна вернуться в операционный режим. RPO — о потере данных, RTO — о простое системы. Они часто связаны, но требуют разных технических подходов.

Итог: RPO — это фундаментальный бизнес-ориентированный параметр, который служит техническим руководством для DevOps инженеров при построении отказоустойчивых, надежных систем с контролируемым уровнем риска потери данных.

Что такое RPO? | PrepBro