«Росагролизинг»: перевод аналитической системы на Postgres Pro
АО «Росагролизинг» перевел аналитическую систему (6 ТБ) с Microsoft SQL Server на Postgres Professional
Причина проекта
Чтобы повысить устойчивость аналитической системы предприятия, было решено перенести БД в российскую Postgres Pro и заместить службу интеграции MS SSIS.
Задачи проекта
С августа до конца 2022 года выполнить импортозамещение СУБД Microsoft SQL Server и Microsoft SSIS на российскую Postgres Pro и Apache Airflow для аналитической системы предприятия АО «Росагролизинг».
Postgres Pro — российская система управления базами данных, глубоко переработанная версия СУБД с открытым исходным кодом PostgreSQL. Позволяет решать сложные промышленные задачи на предприятиях с высоконагруженными системами. Входит в реестр отечественного ПО и имеет сертификат ФСТЭК.
В рамках масштабного проекта по переносу аналитической системы АО «Росагролизинг» с иностранной платформы на российскую СУБД Postgres Pro наша команда реализовала четкий, последовательный план действий. Процесс миграции включал в себя несколько ключевых фаз, каждая из которых требовала тщательной проработки и специализированных решений:
- Глубокий анализ исходной инфраструктуры (MS SQL Server):
- На первом этапе был проведен всеобъемлющий аудит существующей базы данных. Объектом анализа стали 341 таблица, совокупный объем данных в которых превышал 6 Терабайт, а количество записей в отдельных таблицах достигало 4 миллиардов строк.
- Особое внимание уделялось процессам извлечения, преобразования и загрузки данных (ETL). Были идентифицированы и детально изучены 15 ключевых ETL-пакетов, разработанных на платформе SQL Server Integration Services (SSIS). Эти пакеты содержали критически важную бизнес-логику, реализованную в 131 хранимой процедуре. Объем кода в отдельных процедурах был значительным, доходя до 12 000 строк.
- Результатом аудита стало выявление основных зон риска и сложностей: наличие унаследованного (legacy) кода со сложной, не всегда документированной логикой; исключительная важность точности вычислений, от которых напрямую зависели ключевые бизнес-процессы компании; а также недостаточная полнота и актуальность технической документации, что усложняло понимание всех нюансов работы системы.
- Проектирование целевой архитектуры на Postgres Pro:
- На основе результатов анализа была спроектирована новая архитектура системы, ориентированная на использование возможностей Postgres Pro. Разработка включала детальное проектирование структур хранения данных, схем взаимодействия компонентов и потоков обработки информации.
- Ключевыми задачами проектирования являлись обеспечение функциональной эквивалентности новой системы старой в условиях перехода. Принимались стратегические решения по поддержке необходимого уровня совместимости со старыми процессами (там, где это требовалось), гарантированию воспроизводимости результатов расчетов и закладке фундамента для будущего масштабирования системы в соответствии с растущими потребностями бизнеса.
- Разработка специализированных утилит автоматизации:
- Осознавая объем и сложность миграции, а также необходимость минимизации ручного труда и связанных с ним ошибок (человеческого фактора), команда разработала комплекс собственных инструментов и скриптов:
- Конвертер SQL-кода: интеллектуальный инструмент для трансляции синтаксиса T-SQL (MS SQL Server) в PL/pgSQL (Postgres Pro) с максимальным сохранением исходного форматирования и комментариев, что существенно упрощало последующую отладку и понимание кода.
- Инструмент миграции данных: надежное решение для переноса массивов информации (6+ Тб) между разнородными СУБД с учетом специфики типов данных, индексов и ограничений таблиц в Postgres Pro.
- Модуль верификации данных: механизм для тщательного сравнения содержимого таблиц и результатов запросов в старой и новой системах после миграции, позволяющий выявлять расхождения на уровне отдельных записей.
- Генератор DAG-файлов: утилита для автоматического преобразования логики выполнения шагов в SSIS-пакетах в Directed Acyclic Graphs (DAG), понятные современным оркестраторам задач, планируемым к использованию в новой среде.
- Система сверки бизнес-логики: комплексный инструмент для автоматического прогона ключевых хранимых процедур на идентичных наборах входных данных в обеих СУБД (MS SQL и Postgres Pro) и сравнения выходных результатов, что являлось основой для подтверждения корректности миграции сложных вычислений.
- Осознавая объем и сложность миграции, а также необходимость минимизации ручного труда и связанных с ним ошибок (человеческого фактора), команда разработала комплекс собственных инструментов и скриптов:
- Стратегия параллельной разработки:
- Принята уникальная стратегия: новая система на Postgres Pro разрабатывалась и отлаживалась параллельно с процессом модернизации и поддержки существующей легаси-системы на MS SQL Server. Этот подход обеспечил следующие ключевые преимущества:
- Возможность использовать работающую старую систему как абсолютный эталон для непрерывной проверки результатов работы мигрированных алгоритмов и процедур на Postgres Pro.
- Выявление и учет скрытых, неформализованных зависимостей и особенностей обработки данных, которые могли быть упущены при первоначальном анализе документации, но проявлялись в реальной работе старой системы.
- Принята уникальная стратегия: новая система на Postgres Pro разрабатывалась и отлаживалась параллельно с процессом модернизации и поддержки существующей легаси-системы на MS SQL Server. Этот подход обеспечил следующие ключевые преимущества:
- Основная фаза миграции и интенсивной отладки:
- Непосредственный процесс переноса всего объема кода (хранимые процедуры, функции, скрипты) и данных был выполнен в сжатые сроки — за 2 месяца. Это стало возможным благодаря использованию разработанных инструментов автоматизации.
- Последующий этап занял 3 месяца и был посвящен кропотливой пошаговой отладке, комплексной сверке результатов и всестороннему тестированию всех бизнес-процедур и расчетных модулей. На этом этапе активно использовалась система сверки бизнес-логики и модуль верификации данных, а также проводилось ручное тестирование пограничных случаев.
- Период параллельной эксплуатации (Фаза Dual-Run):
- Для окончательной проверки стабильности, производительности и, главное, корректности работы новой системы под реальной нагрузкой был организован период параллельной эксплуатации длительностью 4 месяца. В течение этого времени:
- Обе СУБД (MS SQL Server и Postgres Pro) функционировали одновременно, обрабатывая идентичные потоки рабочих данных.
- Непрерывно осуществлялась автоматическая и ручная верификация результатов, выдаваемых обеими системами.
- Проводился мониторинг и сравнение производительности, стабильности работы и потребления ресурсов новой системой в условиях реальной, а не тестовой, эксплуатационной нагрузки.
- Для окончательной проверки стабильности, производительности и, главное, корректности работы новой системы под реальной нагрузкой был организован период параллельной эксплуатации длительностью 4 месяца. В течение этого времени:
- Финальный переход и вывод старой системы из эксплуатации:
- Только после успешного завершения этапа параллельной эксплуатации, накопления достаточной статистики безошибочной работы и достижения полной уверенности команды и заказчика в корректности всех аспектов функционирования новой системы на Postgres Pro, было принято решение о финальном переходе.
- Старая система на базе MS SQL Server была окончательно остановлена, ее ресурсы освобождены, а вся аналитическая нагрузка АО «Росагролизинг» переведена на российскую СУБД Postgres Pro. Проект миграции был успешно завершен.
- Осуществлена масштабная миграция критически важной аналитической системы:
перенесена база данных объемом более 6 Тб, включающая 341 таблицу с числом строк до 4 миллиардов. - Адаптированы и перенесены:
- 15 ETL-пакетов с множеством взаимосвязанных процессов;
- 131 хранимая процедура, каждая — от 500 до 12 000 строк кода.
- Полностью сохранена бизнес-логика и функциональность:
система на Postgres Pro воспроизводит расчеты и отчеты с точностью до строки, обеспечивая непрерывность бизнес-процессов. - Обеспечена бесперебойная работа предприятия на всех этапах проекта: за счет параллельной эксплуатации и многоступенчатой проверки система осталась доступной для пользователей без перерывов и рисков.
- Внедрена отечественная СУБД Postgres Pro без потери производительности и качества аналитики — важный шаг в обеспечении технологического суверенитета компании.