Цифровая трансформация действующего бизнеса всегда предполагает работу с данными. Они могут храниться в нескольких источниках или легаси-системах. В новом решении, которое будет отвечать актуальным бизнес-требованиям, работа с данными тоже строится по-новому. Но прежде данные нужно безопасно извлечь. Что мы делаем, чтобы миграция данных прошла без потерь и искажений?
1. Оцениваем текущую инфраструктуру
Анализируем, как хранятся данные в старой системе, и готовимся к переносу, учитывания требования будущего решения.
- Анализ источника данных. Оцениваем структуру базы данных старого приложения, её объём, формат данных и типы (реляционные, неструктурированные, файлы и т.д.). Учитываем возможные зависимости и взаимосвязи между данными.
- Оценка целевой системы. Если новое решение уже готово, убедимся, что оно поддерживает соответствующие форматы и объём данных и имеет механизм для обработки всех типов данных из старого приложения. Если решение только планируется, то продумываем шаги для максимальной совместимости в будущем.
- Выявление потенциальных рисков. Это может быть потеря данных при конверсии форматов, несовместимости, проблемы с кодировкой символов или различиями в бизнес-логике старого и нового приложения.
Если данные переносятся в новую систему, цикл тестирования проходит и в ней.
- Проверка пограничных случаев: тестируем крайние значения и данные с особыми условиями: пустые поля, большие объёмы, различные кодировки.
- Проверка функциональности: корректно ли перенесены не только сами данные, но и их связи, зависимости и логические правила. Например, проверяем, как работают старые транзакции в новом интерфейсе.
2. Разрабатываем план миграции
Перед началом переноса данных создаем полные резервные копии всех данных и храним их в контуре заказчика. Это гарантия восстановления данных на случай непредвиденных проблем.
Далее определяем оптимальный метод миграции:
- Инкрементальная миграция – перенос данных поэтапно или пакетами. Применяем, чтобы уменьшить нагрузку и обеспечить детальный контроль за каждым этапом.
- ETL-процесс (Extract, Transform, Load) используем для извлечения данных из старого приложения, преобразования (если необходимо, например, для изменения форматов или структур) и загрузки в новое приложение.
3. Тестируем и верифицируем данные
Есть множество способов, как проверить корректность миграции данных. Обычно мы комбинируем несколько методов в зависимости от ситуации. В процессе миграции всегда проверяем соответствие данных на промежуточных этапах. После окончания миграции проводим полный аудит данных и тестирование функциональности.
Тестовая миграция на копии данных. Для снижения рисков сперва переносим часть данных (например, 10%) на тестовое окружение и проверяем их целостность и корректность в новой системе. Это позволяет выявить возможные ошибки без влияния на продуктивную среду.
Сравнение данных до и после переноса:
- С сохранением текущей структуры
Для каждого набора данных создаются хеши (например, с использованием функций MD5, SHA), которые потом сравниваются между исходной и целевой базами данных. Например, если у нас есть запись клиента со всеми его транзакциями, мы проверяем, что все данные соответствуют изначальной версии по каждому полю.
Инструментами для сравнения могут быть утилиты pg_dump и pg_restore для PostgreSQL с дальнейшим анализом дампов.
- С построением новой структуры
В зависимости от БД используем специальные инструменты (например, Apache NiFi, Talend) для миграции. Они позволяют настраивать трансформацию данных в новую структуру и имеют средства проверки целостности.
Проводим сравнение на уровне бизнес-логики. Составляем перечень ключевых запросов, чтобы проверить корректность ожидаемых итогов. Например, проверяем, что суммы транзакций и количество заказов совпадают в обеих структурах.
4. Обеспечиваем безопасность переноса
Во время переноса доступ к данным есть только для тех, кто непосредственно участвует в процессе. Зная структуру БД, также можем обезличить данные и свести к минимуму контакт сторонних специалистов с реальными данными. Копия БД всегда остается только у заказчика.
Что будет с данными дальше?
Если перенос данных был стартовой точкой в создании нового решения, то следующий этап – это запуск разработки. Проектирование новой системы, аналитика и разработка могут пойти разными путями в зависимости от обстоятельств.
Когда есть доступ к исходному коду старого приложения
Это упрощает работу над новым решением. Наша команда разберется в старом коде, по нему восстановит процессы, поймет требования к системе. Такой подход ускорит и аналитику, и разрабо
Когда нет доступа, то работа начинается с аналитики
Мы собираем требования с нуля, проектируем новое решение и переходим к разработке, параллельно создавая документацию и внося в нее все изменения, которые возникают в процессе исправления багов или по запросу заказчика.
Все артефакты нашей работы остаются у заказчика: исходный код, само работающее приложение и документация к нему – описание, как оно работает. Любая команда сможет продолжить развивать решение, если это нужно.