Інтеграція на рівні даних — особливості реалізації
Нерідко на проектах під час обговорення інтеграції CRM з третіми системами спочатку розглядають використання веб-сервісів, які добре підтримують міжплатформову взаємодію додатків. Але при наявності великих обсягів даних, як при первинному завантаженні, так і при періодичній синхронізації, цей метод інтеграції демонструє повну неспроможність. Найбільш доцільно в такій ситуації використовувати інтеграцію на рівні даних, яка в рази підвищує швидкість завантаження.
Багато постачальників додатків вказують інтеграцію на рівні даних серед стандартних методів інтеграції та вони частково мають рацію, але все-таки є певні нюанси, які я і хотів би сьогодні висвітлити.
Якщо не вдаватися в подробиці, то інтеграція на рівні даних, на перший погляд, не виглядає чимось складним: «беремо» необхідні дані з системи А і «переносимо» їх, наприклад, в БД Siebel CRM.
Але при більш уважному розгляді завдання з’ясовується, що моделі даних в цих системах сильно відрізняються, використовуються різні довідники значень і т.п.
Для коректної взаємодії подібних систем необхідно створювати складні SQL-процедури інтеграції, звані ETL-процедурами (Extract, Transform, Load). Зазвичай таких процедур створюється досить багато, а деякі з них можуть містити по кілька тисяч рядків коду.
Але і це ще не все. Як правило, в реальних проектах зазвичай розбивають процес передачі даних на два етапи.
Таке розбиття робить процес інтеграції більш «прозорим», а значить – керованим. Якщо конкретизувати, то можна виділити наступні переваги дворівневої процедури:
- розмежування відповідальності між консультантами/розробниками Siebel CRM та власниками/розробниками сторонніх систем (System A, B і ін.)
- прискорення процесу розробки інтеграції, оскільки різні команди розробників працюють паралельно над частинами однієї задачі
- спрощення налагодження та експлуатації, оскільки можна повністю контролювати передані та отримані дані на кожному етапі.
Друга частина даного процесу є особливо важливою, тому що являє собою завантаження безпосередньо в цільові таблиці, дані з яких будуть використовуватися CRM-системою, а, отже, безпосередньо впливає на ефективність роботи з клієнтами.
Ось тут і варто повернутися до стандартного методу інтеграції, який згадувався раніше. Це передбачає наявність стандартних механізмів, що спрощують процес інтеграції на рівні даних. При наявності складної структури логічної моделі даних цільової бази для належного функціонування обов’язковим є забезпечення цілісності даних, облік додаткових зв’язків і заповнення всіх необхідних атрибутів при перенесенні. Без наявності стандартного механізму якість інтеграції буде безпосередньо залежати від рівня кваліфікації розробника. При цьому згадані тисячі рядків SQL-коду тільки підвищують вплив «людського фактора» на кінцевий результат.
Наприклад, для Oracle Siebel CRM стандартним механізмом інтеграції на рівні даних є Enterprise Integration Manager (EIM). Даний механізм охоплює саме другу частину процесу передачі даних, підвищуючи швидкість і зменшуючи ймовірність виникнення помилок. Для імпорту даних в Siebel CRM використовуються стандартні таблиці, які автоматично враховують всі зв’язки та необхідні атрибути.
Siebel CRM має досить складну модель даних, тому при інтеграції на рівні даних Oracle настійно рекомендує використовувати саме Enterprise Integration Manager (EIM).
Інтеграційні можливості Oracle Siebel CRM завжди вигідно виділяли дану CRM-систему на тлі конкурентів, тому в наших проектах ми не обмежуємося лише двома методами інтеграції, а намагаємося використовувати найбільш підхожий метод в кожному конкретному випадку.
При первинному завантаженні та періодичній синхронізації даних у великих організаціях, обсяги даних яких можуть досягати десятків (іноді й сотень) мільйонів записів, в переважній більшості випадків перевага віддається інтеграції на рівні даних. На відміну від інтеграції на рівні бізнес-логіки, цей метод не потребує додаткових ресурсів на обробку даних і роботу додатків одночасно. Наявність же стандартних механізмів інтеграції підвищує коректність і повноту даних при завантаженні, а також істотно прискорює сам процес.