Интеграция информационных систем

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

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

Кто поддерживал и внедрял системы, а уж тем более, занимался доработкой, реинженерингом и интеграцией, тот знает, что более двух третей всех усилий в ИТ (внимания, времени и денег) уходит на «склейку» несовместимого и попытки «подружить» модули, написанные разными людьми, в разное время, на разных языках и технологиях, под разные платформы.

Давайте перечислим и проанализируем факторы, влияющие на интеграцию:

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

Общая задача у нас теперь выглядит так: необходимо интегрировать N информационных систем, характеризуемых описанными выше факторами, с минимизацией количества прослоек, конвертеров, брокеров и интерфейсов между ними. Если решать задачу в лоб, то между N системами будет N(N-1)/2 связей, то есть, при двухстороннем взаимодействии N(N-1) интерфейсов. Если учесть, что под интерфейсом мы тут можем понимать все что угодно, от веб-сервиса до оффлайнового процесса, запускаемого, например раз в сутки и делающего целый ряд сложных операций по синхронизации баз (запросы, обработку, экспорт, закачку по FTP, передачу сигнала другой части системы, чтобы та приняла переданные данные и выполнила свою часть работы, а потом уведомила о результатах и передала необходимые данных обратно). В общем от таких вариантов никогда не удастся избавиться полностью, вопрос только в грамотной их реализации.

Но приведу весь арсенал средств по решению поставленной задачи, из тех, которым научился от других, использовал сам и наблюдал на практике: