HRlink — как хранить документы 1,5 млн пользователей в облаке

Как организовать хранение кадровых документов 1,5 млн пользователей в облаке: опыт HRlink

Рассказываем, как компания HRlink построила отказоустойчивую и надежную инфраструктуру для сервиса кадрового документооборота. Ежедневно через сервис подписываются сотни тысяч документов, а сам процесс подписания занимает не более 6 секунд.

Изображение записи

Кейс будет полезен для компаний в следующих сферах:

  • HR Tech
  • SaaS
  • высоконагруженные сервисы

Задачи:

  • Гарантировать отказоустойчивость инфраструктуры при пиковых нагрузках.
  • Обеспечить производительную работу СУБД.
  • Организовать надежное хранение кадровых документов.
  • Гарантировать безопасную обработку персональных данных.

О компании

HRlink — первая в России компания, предложившая рынку сервис для кадрового электронного документооборота (КЭДО). Сегодня более 6 400 корпоративных клиентов и 1 500 000 человек используют платформу для хранения и подписания кадровых документов. Среди компаний — ЭРКАФАРМ, сеть клиник «Скандинавия», hh.ru, «Самокат», Selectel и другие.

Вызовы и решения

Гарантировать отказоустойчивость инфраструктуры при пиковых нагрузках

Основная нагрузка на сервис HRlink выпадает на даты, важные для кадрового делопроизводства: первые и последние числа месяца, начало и конец квартала, дни выплаты зарплаты, первый и последний день недели. Особый пик — в декабре, когда в компаниях идет согласование отпусков на следующий год. Также нагрузка резко возрастает при массовом подписании локальных нормативных актов (ЛНА): например, если крупный клиент отправляет новый ЛНА, то тысячи сотрудников идут подписывать его одновременно. В течение короткого промежутка времени возникает большой поток ресурсоемких операций, которые без грамотной настройки инфраструктуры могут привести к отказу системы.

Помимо переменных нагрузок, сервис круглосуточно испытывает нагрузку от интеграций с кадровыми системами учета, такими как «1С:ЗУП», «Босс-кадровик» и другими. Клиенты HRlink стремятся оперативно получать результаты подписания документов в своих информационных системах, поэтому те регулярно опрашивают приложение.

В момент основания компании в 2020 году и старта разработки MVP на рынке не было аналогичных продуктов. IT-команда HRlink столкнулась с рядом вопросов, в ответах на которые она стала первопроходцем: 

  • какой должна быть IT-архитектура;
  • какие компоненты сервиса будут наиболее высоконагруженными;
  • где может возникнуть узкое место и как это предотвратить.

Команда HRlink сразу решила разворачивать сервис в облаке. Первую архитектуру развернули буквально на трех виртуальных машинах — одна под монолитное ядро системы, вторая — под СУБД, третья — под вспомогательные сервисы. Инфраструктура масштабировалась вертикально. 

Однако с ростом количества пользователей стали появляться проблемы с производительностью и отказоустойчивостью системы.

«Однажды в декабре подавляющее большинство клиентов запустило процесс подписания графика отпусков, у чего есть ряд особенностей. Во-первых, график отпусков — это документ на несколько десятков, а то и сотен страниц, который нужно быстро сконвертировать в PDF/A-формат, обязательный для КЭДО. Во-вторых, на каждой странице необходимо проставить оттиск о том, что он был подписан электронной подписью, принадлежащей определенному физлицу. В-третьих, сотрудники компаний, особенно крупных, по призыву кадровой службы идут подписывать этот документ единовременно. Из-за такой нагрузки случился очень серьезный инцидент, во время которого наше приложение сначало работало с очень большой задержкой, а потом вообще стало недоступно. В процессе диагностики мы обнаружили сразу несколько узких мест, которые пришлось срочно исправлять».

Александр Ноздрин технический директор HRlink

Параллельно развивался сам продукт, появлялись новые сервисы. Чтобы повысить отказоустойчивость и сделать управление инфраструктурой удобнее, команда HRlink решила разделить монолит на самостоятельные микросервисы.

Развернули продакшн в облаке с возможностью гибкого масштабирования

Сегодня продакшн HRlink развернут на облачных серверах и состоит из нескольких десятков микросервисов. Каждый из них запускается в Docker-контейнерах в нескольких экземплярах. В число микросервисов, развернутых в облаке, входят:

  • подписание документов;
  • отправка уведомлений;
  • контроль лицензий;
  • взаимодействие с удостоверяющими центрами для проверки электронной подписи и другие.

Под пиковые нагрузки команда HRlink с помощью Terraform-скриптов дозаказывает облачные ресурсы, а при спаде в пару кликов сворачивает их.

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

Обеспечить производительную работу СУБД

Одним из наиболее высоконагруженных компонентов сервиса HRlink является база данных. Под капотом используется следующий стек:

  • PostgreSQL — основная СУБД для обработки и хранения табличных данных, а именно реестра корпоративных документов, метаинформации о подписании файлов и других данных; 
  • ClickHouse — для построения аналитических отчетов и хранения логов;
  • Kafka и RabbitMQ в качестве брокеров сообщений.

Исторически PostgreSQL построили в мультитенантной архитектуре с логическим разделением данных корпоративных клиентов: одна база данных — один клиент. Со временем количество БД росло, соответственно, росло и количество подключений к кластеру и операций на запись и чтение. Все это снижало производительность СУБД.

Разделили PostgreSQL на шарды и развернули их на облачных серверах с производительными дисками

На сегодняшний день к сервису подключено более 5 000 баз данных. Чтобы обеспечить их бесперебойную работу, команда HRlink разделила PostgreSQL на множество шардов и настроила асинхронную stand-by реплику на базе облачных серверов. Такая архитектура сделала сервис более отказоустойчивым. Дополнительно к серверам подключили vSSD с производительностью до 25 000 IOPS для обеспечения высокой скорости чтения документов.

Чтобы обеспечить сохранность данных, настроили резервное копирование. Раз в неделю снимается полная копия, в дополнение к ней — снапшот. Бэкапы хранятся в трех копиях на разных дисках.

Организовать надежное хранение кадровых документов

За время существования сервиса HRlink размер хранилища превысил 230 ТБ — это сотни миллионов документов.

«Специфика работа с файлами в том, что они используются редко. Кто посмотрит один документ? Пару раз кадровик, пару раз сотрудник, который один раз подпишет документ, и, может, когда-нибудь скачает. Поэтому один файл в среднем просматривается до десяти раз, при этом хранить его важно длительное время».

Александр Ноздрин технический директор HRlink

Подключили холодное хранилище для редкочитаемых файлов

Прежде данные хранили на дисках тех же облачных серверов, где были развернуты базы данных. Со временем пользовательские файлы стали занимать много места и съедали ресурсы сервера, поэтому постепенно все данные перенесли в холодное S3-хранилище. В нем стоимость хранения ниже, чем в стандартном типе, что подходит специфике работы с документами в HRlink. При этом все пользовательские файлы хранятся в двух копиях во избежание потери информации.

Гарантировать безопасную обработку персональных данных

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

  • соответствие 152-ФЗ «О персональных данных»;
  • организация защищенных туннелей, которые поддерживают ГОСТ-шифрование;
  • защита от DDoS-атак и WAF;
  • необходимость установки NGFW.

Настроили защищенные сетевые каналы и развернули дополнительные средства защиты

Единая точка входа пользовательского запроса — виртуальный роутер — программный маршрутизатор, через который виртуальные машины получают доступ в сеть. За роутером настроен программный NGFW для обеспечения безопасности на уровнях L3-L4. Далее стоит балансировщик, который перенаправляет запросы:

  • пользовательский запрос идет на API Gateway;
  • файл загружается в хранилище S3;
  • запрос в реестр сертификатов отправляется в сервис взаимодействия с удостоверяющими центрами.

За балансировщиком настроен WAF, проверяющий трафик на уровне L7.

Для организации туннелей с ГОСТ-шифрованием развернули сертифицированные СКЗИ (средства криптографической защиты информации). Решение позволяет безопасно взаимодействовать с внешними сервисами, в том числе с государственными. Также оно обеспечивает надежную защиту данных тех клиентов, которые развертывают сервис HRlink на своих серверах. 

Ко всей IT-инфраструктуре подключен коммерческий SOC, через который происходит круглосуточный мониторинг ИБ-событий.

Инфраструктура Selectel соответствует требованиям 152-ФЗ и подходит для обработки персональных данных до первого (максимального) уровня защищенности.

Результаты

  • >1,5 млн

    уникальных пользователей сервиса HRlink.

  • >230 ТБ

    данных хранится в объектном хранилище.

  • 70 000

    документов в среднем подписывают пользователи ежедневно.

  • <6

    секунд занимает подписание документа.

«HRlink растет быстрыми темпами: только за последние два года рост трафика составил 1600% — это увеличение в 4 раза за год. Рост продолжается, поэтому планируем наращивать потребление ресурсов и внедрять новые решения. В этом плане Selectel полностью удовлетворяет наши запросы».

Александр Ноздрин технический директор HRlink