О чём эта история

Компания «1С‑Битрикс» — разработчик платформы для управления бизнесом «Битрикс24», которая объединяет приложения и системы для организации работы компании любого уровня. В сервисе зарегистрировано несколько миллионов организаций разного уровня.

Решение разместили в инфраструктуре одного из российских облачных провайдеров, а данные реплицировали в облачное объектное хранилище иностранного провайдера. Со временем с целью полной локализации «1С‑Битрикс» решил разместить резервное хранилище также в России, выбрав Yandex Cloud.

Компания в короткие сроки переместила в Yandex Object Storage несколько петабайтов данных и реализовала схему репликации данных на основе парадигмы слабого связывания. Данные перенесли без потерь.

Задача компании

«1С‑Битрикс» — разработчик сервиса «Битрикс24» для управления бизнесом, распространяемого по SaaS‑модели и в виде коробочного продукта. Компания образована в 1998 году. Её штаб‑квартира расположена в Калининграде, а представительства — в Москве, Алматы и Минске.

У компании 17 000 организаций‑партнёров в 450 городах России и других стран. Продуктами «1С‑Битрикс» пользуются федеральные розничные сети, банки, страховые и производственные компании, госорганизации, малый и средний бизнес. Более 15 млн организаций зарегистрировано в «Битрикс24». Он задуман как сервис, где собраны все нужные инструменты для ведения бизнеса: от CRM и почты до корпоративных чатов, видеозвонков и AI‑помощника CoPilot, который облегчает выполнение рутинных задач. Клиенты хранят большой объём информации, в том числе документы и фотографии, и могут строить бизнес‑аналитику по своим данным.

На старте проекта в 2012 году «Битрикс24» развернули на облачной платформе зарубежного провайдера. Со временем выросла вероятность вендорлока, финансовых рисков и рисков потери доступности. Поэтому, учитывая также требования закона № 242‑ФЗ о порядке обработки персональных данных, компания решила локализовать инфраструктуру и в 2015 году перенесла своё решение на российскую облачную платформу, при этом для репликации данных продолжили использовать прежнюю инфраструктуру. Через несколько лет возникла другая задача: организовать новую схему репликации данных, выбрав для хранилища локального облачного провайдера.

«1С‑Битрикс» рассматривал провайдеров публичного облака, которые занимают лидирующие позиции в России и предлагают объектное хранилище. Провайдер должен иметь ЦОД в России, а также соответствовать требованиям к обработке информации международного генерального регламента о защите данных (GDPR) и закону № 152‑ФЗ «О персональных данных».

Кроме того, облачный провайдер должен гарантировать высокий уровень SLA и обеспечивать широкий набор управляемых сервисов и инструментов. Также компания учитывала возможности масштабирования, прозрачность работы облачной платформы и скорость реакции поддержки.

Команда «1С‑Битрикс» диверсифицировала риски, поэтому не стала использовать для резервного хранилища платформу, где развёрнуто решение. Рассмотрев несколько вариантов, компания выбрала Yandex Cloud, так как платформа соответствовала всем требованиям. Кроме того, специалисты «1С‑Битрикс» отметили подробную документацию и качественные сервисы мониторинга Yandex Cloud, которые позволяют контролировать все необходимые метрики.

Организация хранилища резервных копий данных в Yandex Cloud

«Битрикс24» — платформа, в которой объединены приложения и системы для организации работы компаний любого уровня. В неё входят CRM, включая мобильную версию, система организации онлайн‑офиса для совместной работы, система управления проектами, AI‑помощник CoPilot, конструктор для разработки сайтов и интернет‑магазинов, а также коммуникационная платформа.

«Битрикс24» оперирует множеством файлов, которые нужны в работе бизнес‑инструментов. Например, онлайн‑документами, данными клиентов: на один портал приходится от нескольких тысяч до миллионов файлов. В первое время их решили хранить в объектном хранилище S3. В начале 2010‑х на платформах ещё не было функций репликации, поэтому компания разработала и внедрила собственную схему инкрементального резервного копирования. Когда провайдер включил события добавления и удаления файлов в бакет, система стала их использовать, запуская задачу на копирование с помощью AWS Lambda. Тогда же команда «Битрикс24» разработала функцию отложенного удаления, чтобы восстанавливать ошибочно удалённые файлы. Система перехватывала такие события и помещала их в базу DynamoDB. Периодически базу сканировали в поиске событий, которым уже исполнилось два месяца, — и тогда удаляли файл в резервном хранилище.

Чтобы организовать хранилище резервных копий в Yandex Cloud, специалисты «1С‑Битрикс» сначала скопировали весь накопленный массив данных в Yandex Object Storage. Затем реализовали уже проверенную схему на основе парадигмы слабого связывания.

Архитектура системы репликации данных объектного хранилища

Так как отдельные сервисы «Битрикс24» слабо связаны между собой, данные изолированы и можно копировать только ту информацию, которая изменилась. Репликацию данных проводят в реальном времени. При этом раз в неделю делают сверку, которая выявляет недостающие в резервном хранилище данные, после чего их копируют из основного хранилища. Сверку проводят по хешам в 60–80 потоков, что позволяет проверить весь массив информации за пару дней.

После этого специалисты «1С‑Битрикс» подключили к Yandex Cloud стандартные программные клиенты, которые отвечают за многопоточность, переподключение и асинхронную работу с сокетами при обращении к платформе прежнего провайдера. Всё заработало без проблем. Таким образом создали пайплайн, в котором все события сначала попадают в очередь Yandex Message Queue. Затем воркеры в асинхронном, не блокирующем сокеты режиме разбирают очередь. Если воркер обнаруживает задание на создание файла, то файл копируется в таком же режиме в объектное хранилище. В схеме отложенного удаления DynamoDB сменили на Yandex Managed Service for YDB в совместимом с DynamoDB режиме. Периодически пул воркеров чистит базу YDB и, соответственно, удаляет устаревшие данные в резервном хранилище. Управляемый сервис автоматически подстраивается под нагрузку и делает бэкапы, что позволяет не тратить время специалистов на обслуживание и поддержку.

Для хранения секретов команда использует Yandex Lockbox, а для отслеживания нагрузки — Yandex Monitoring. Команда следит, чтобы одновременно обрабатывалось не более 120 тысяч сообщений, а также анализирует количество сообщений в очереди.

Всю работу по проекту команда «1С‑Битрикс» выполнила самостоятельно примерно за семь дней. Значительных проблем при реализации проекта не было.

Перенос в Yandex Cloud миллиардов записей и разработка отказоустойчивой системы репликации объектного хранилища

Команда «1С‑Битрикс» достигла поставленных целей — перенесла в Yandex Cloud несколько петабайтов данных и развернула резервное хранилище, и при этом не было ни одного инцидента с потерей данных. Компании удалось адаптировать имеющиеся наработки и реализовать уже проверенную схему репликации данных. Широкий набор сервисов Yandex Cloud позволил оптимально организовать отказоустойчивую инфраструктуру, которую легко поддерживать. За всё время после перехода в Yandex Cloud не было ни одного падения системы.

Издержки на инфраструктуру соответствуют изначальным ожиданиям «1С‑Битрикс» и сопоставимы с затратами на аналогичную инфраструктуру у других провайдеров. При этом компания обеспечила непрерывную работу платформы «Битрикс24» и сохранила целевой регулярный доход от предоставления услуг.

В будущем, чтобы добавить системе устойчивости, команда намерена реализовать возможность репликации и в обратном направлении. Для этого планируют создать в резервном объектном хранилище точно такие же триггеры на события, как на создание или удаление файлов. Это можно сделать с помощью Yandex Cloud Functions. Также компания предполагает анализировать в реальном времени некоторые потоки больших данных от клиентов: логи, трафик, бизнес‑события, — используя сервис для управления потоками данных Yandex Data Streams.

Мнение

Александр Викторович Демидов,
директор по облачной инфраструктуре
Александр Викторович Демидов,
директор по облачной инфраструктуре

Нам удалось быстро реализовать в Yandex Cloud годами проверенную схему резервного хранения данных. В ограниченные сроки мы перенесли в Yandex Cloud огромный массив информации, и при этом у нас не было ни одного инцидента. Выбирая облачную платформу для  резервного хранения нашей масштабной базы данных, мы ориентировались на уровень и широту предоставляемых провайдером сервисов, а также на качество документации и уровень мониторинга сервисов. Yandex Cloud подтвердил свой статус одного из лидеров в сфере облачных услуг.