Проблемы интеграции данных в проекте

Любой информационный продукт глобально несет в себе общую цель — работать с информацией. Под этим подразумевается как изучение информации и применение ее где-либо, так и хранение, накопление, удаление, редактирование и т.д. Если рассматривать процесс накопления информации в каком-либо информационном проекте, то сама информация вносится либо вручную, путем заполнения форм пользователями, либо с помощью интеграции с другими системами.

Проблемы

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

Высокая пиковая нагрузка на сервер

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

Если записей немного, нагрузка на сервер низкая, а сам обмен происходит быстро, но если в каталоге несколько тысяч наименований, то такие интеграции расходуют огромный объем операционной памяти, и время такого обмена занимает уже десятки минут или даже часов. То есть сервер работает под существенной нагрузкой почти постоянно, осуществляя обмен данными.

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

Не существует «универсальной» интеграции

Многие разработчики программного обеспечения, веб-сервисов заявляют о том, что их информационная система обладает универсальным модулем для интеграции данных из их системы в другие. 

На самом деле слово «универсальная» читается как «у нас есть определенный „стандарт“, к которому можно подстроиться, при разработке своего ресурса». Нужно понимать, что этот «универсальный» формат выгрузки может отличаться у разных клиентов, и маловероятно, что можно использовать один и тот же программный код без какой либо доработки.

Использование «неправильного» формата для интеграции данных

Идеальный вариант это наличие API (то есть программного интерфейса по которому можно взаимодействовать со сторонней системой), а что делать если его нет?

Мы обычно используем выгрузку данных в файл какого-либо типа. Проблема может возникнуть из-за неопытности разработчика или из-за недостатков ПО, с помощью которого он пытается обработать файл для интеграции данных в систему. 

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

Данную ошибку можно избежать только после получения опыта работы с большими файлами разных типов.

Постоянная доработка формата данных для интеграции данных

Эта встречается достаточно редко. Она возникает, если неожиданно меняется формат, структура данных для выгрузки, а обработчик этих данных на стороне приема не способен обработать новый формат корректно. Помогает справится доработка программного кода модуля обработки интегрируемых данных.

Необходимость оптимизации выгрузки данных по мере роста интегрируемых данных

Проблема возникает в проектах, где часто происходит выгрузка большого объема данных, который увеличивается со временем, например расширяется ассортиментный ряд у продавца, а разработать сразу без «узких мест» программный код не всегда удается. 

Специфические особенности интеграции

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

Проблема с документаций по интеграции

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

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

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

Немного советов

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

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