Огляд iPaaS платформи MuleSoft Anypoint

Всім привіт! Мене звуть Іван, я System Integration Architect у SoftServe, і в цій статті я хочу зробити огляд iPaaS (Integration Platforms as a Service) рішення від MuleSoft: AnyPoint Platform . Це одна з декількох платформ, які ми впроваджуємо для замовників, а також використовуємо для власних потреб компанії для інтеграції десятків внутрішніх облікових систем.

Історично ESB-like-продукти з'явилися раніше iPaaS, і основним їх завданням була інтеграція систем і сервісів в рамках однієї організації.

ESB, повністю перебуваючи у внутрішній інфраструктурі підприємства, стає дуже важливою її частиною в аспектах надійності, масштабованості і гнучкості. Якщо велика кількість комунікацій між системами обробляється шиною, з'являється сильна зав'язка на неї та внесення змін стає досить важким завданням.

З часом, завдяки розвитку хмарних технологій і всіляких рішень (IaaS, PaaS, SaaS, DaaS та ін), з'явилися організації, які використовують хмари для зберігання та обробки інформації. Багато системи мігрують в хмари або мають виключно локальний версію. Нерідкі випадки, коли компанії взагалі не мають своєї домашньої (on-premises) інфраструктури, а використовують тільки cloud-рішення.

Якщо, наприклад, у вас є системи E-commerce і Product intelligence , які виконуються в хмарі, то немає ніякого резону створювати on-premises-рішення, вимагає додаткові ресурси (сервери, адміністратори тощо)

Систем стає все більше і більше, а завдання забезпечення обміну даними між ними — все актуальнішою. Кількість можливих комбінацій зростає з величезною швидкістю. Багато системи, наприклад SAP , вже «з коробки» пропонують всілякі інструменти для інтеграції у вигляді інтерфейсів або навіть вузькоспеціалізованих конекторів, але дуже часто цих можливостей вистачає лише для типових завдань або ж все одно передбачається, що інтеграція буде виконана за рамками системи.

Ще один частий питання — Build vs Buy. Навіщо купувати те, що можна розробити самому? У випадку з iPaaS і початковою орієнтацією на хмарні середовища виконання і контейнеризацію, питання масштабування (і, отже, ціни) вирішується набагато легше, і побудувати свою інфраструктуру з iPaaS можна набагато швидше і якісніше, ніж починати все з нуля.

У цій статті я опишу ті інструменти, які входять до складу платформи MuleSoft AnyPoint Platform, використовуються для реалізації завдань інтеграції і дозволяють скоротити трудовитрати на виконання робіт.

Підхід до розробки

Будь-який продукт при створенні несе певну ідею і конкретний підхід до того, як його правильно використовувати.

Компанія MuleSoft пропонує так званий API-led Connectivity approach . API-led (він же Interface First) — це методологія, яка описує спосіб передачі даних до додатків через повторно використовуються і спеціалізовані API. Ці API розробляються для того, щоб грати певну роль: агрегація даних з різних систем, об'єднання даних у процеси або надання кінцевого сервісу.

Функціонально всі API платформи можна організувати в 3 шари. Така декомпозиція (System, Process, Experience API) дає гнучкість в побудові нових інтерфейсів із того набору, що вже є в портфоліо, і за рахунок кількох рівнів абстракції для кінцевого користувача (Experience API) не настільки важливо, яка система надає ці дані.

Для прикладу:

Наприклад, у нас є база даних з таблицями, які ми хочемо обробляти.

Тоді інтерфейс з CRUD-операціями буде з шару System API. Далі з цих та інших інтерфейсів ми розробляємо більш складну логіку у вигляді функції з Process API: наприклад, отримати дані з черги, завантажити список записів у базу і відповісти про виконання. На рівні Experience API цю операцію завантаження даних ми можемо надати в JSON-вигляді через HTTP POST метод або XML-файл, який отримано через FTP. Логіка Process API при цьому не змінюється.

Для великих організацій з великою IT-відділом і різними бізнес-підрозділами/командами даний підхід дозволить зменшити залежність один від одного. Пропонується наступний сценарій поділу ролей: Central IT — підрозділ, який створює фундамент, — API до кінцевих систем. Це дозволяє користувачам платформи використовувати функції System API для побудови більш складних операцій. Line of Business (LoB) може використовувати їх для опису процесів або функцій. В даному випадку ми говоримо не про бізнес-користувачів, а про розробників, які реалізують проект для конкретного бізнес-проекту. І на рівні Experience API ці процеси/бізнес-функції надаються клієнтським програмам у тому вигляді, в якому вони того вимагають.

Для невеликих проектів або організацій це може бути надлишковим, але сама можливість реалізувати такий системний підхід за допомогою платформи показує її придатність для проектів будь-якого рівня.

При такому підході виникає велика кількість різних типів API і зон відповідальності, і без відповідного інструментарію їх організації не обійтися. Далі ми розглянемо, що ж є в MuleSoft Anypoint.

Що входить в платформу

При розробці інтеграційних програм, як і інших додатків, виникають завдання управління їх життєвим циклом (дизайн, розробка, тестування, установка, моніторинг, аналіз проблем), а також організаційні аспекти (спільна розробка, документування, безпека, розділення прав).

У MuleSoft Anypoint Platform є готовий набір інструментів, які допомагають вирішувати ці завдання.

Умовно всі складові платформи можна розділити на 4 основних блоки:

Репозитарій — Anypoint Exchange

Anypoint Exchange призначений для того, щоб вести каталог, шукати та ділитись різними артефактами — API, фрагментами коду, шаблонами, прикладами, коннекторами і т. д.

Всі ці артефакти можуть бути надані публічно або в рамках вашої організації. Таким чином, для початку роботи може бути дуже корисно досліджувати публічний Exchange і знайти багато заготовок у відкритому доступі, якщо ви перебуваєте на початковому етапі впровадження платформи в своїх проектах. Подивитися, що зараз є в публічному доступі, можна на сторінці Anypoint Exchange .

Якщо ви розробили специфікацію інтерфейсу, її можна опублікувати в Exchange і зробити доступною для інших. Тоді ця специфікація отримає свій власний portal — сторінку з описом сервісу та можливістю отримати і викликати його mock-endpoint. Реальна реалізація інтерфейсу не обов'язкова. Дуже часто в задачах інтеграції ми працюємо з іншими командами, і API-специфікація — це наш з ними «контракт» взаємодії. І чим раніше він буде доступний, тим менше часу буде витрачено на погодження, реєстрацію та постановку завдань.

Що зручно при роботі з іншими командами: немає необхідності чекати реалізації готової API і можна почати роботу з інтеграції сервісу зі свого боку незалежно від інших. Головне — наявність контракту, по якому буде виконуватися інтеграція.

У своїй практиці я стикався з організаціями, які намагалися вести ці специфікації у вигляді звичайних документів, але найчастіше це виливалося в те, що документ ставав неактуальним. Прості Word-документи пересилаються поштою, і легко можна було отримати застарілу або неповну версію. Exchange полегшує роботу по документуванню, версионированию і публікації специфікацій.

Середовище розробки

Design Center

Design Center — браузерна середовище розробки. За її допомогою можна:

RAML для платформи AnyPoint прийнятий як основний спосіб по документуванню та розробці інтерфейсів.

IDE

Anypoint Studio — основний інструмент розробки Mule-додатків, побудований на основі Eclipse зі своїм набором для візуального моделювання та створення трансформацій, каталогом готових компонент і доступом до Anypoint Exchange. Для тих, хто знайомий з розробкою на Java, все дуже схоже. Основа програми — Flow — опис того, як події, які надходять в додаток, їм обробляються.

Для цього будується ланцюжок з обробників, кожен з яких відповідає за свою функцію: трансформацію, серіалізацію, логування, доступ до БД і т. д. Палітра містить набір готових обробників, які можна вбудувати в потік і налаштувати відповідно завданню.

Дуже частою завданням буває трансформація даних. Одна система може передати у вигляді запиту масив в XML-форматі, в той час як інша очікує JSON зовсім в іншій структурі. Для полегшення процесу написання цієї трансформації в Anypoint Studio є візуальні засоби розробки.

Для тестування додатків є MUnit фреймворк, в якому тими самими інструментами, що й при розробці, можна писати юніт-тести і отримувати результати по покриттю потоків тестами. А підтримка Maven дає можливість побудувати CI/CD-процеси як для звичайних Java-додатків.

Насправді тема розробки додатків досить обширна і заслуговує окремої статті.

Інструменти управління

API Manager

API Manager — компонент платформи, який відповідає за управління тими API, які вже розгорнуті і використовуються. Тут ми можемо застосовувати політики і обмежувати частоту використання або накладати обмеження щодо безпеки. Політики можуть бути застосовані до різних середовищ виконання, і розробники звільняються від цих питань.

Runtime Manager

Runtime Manager — це компонент для управління середовищами виконання та додатками, які на цих середовищах встановлені. Середовища виконання можуть знаходиться в хмарі, on-premise або в private cloud. Тут можна стежити за станом, запускати/зупиняти сервери і додатки, відслідковувати активність запущених додатків.

Anypoint Visualizer

Anypoint Visualizer допомагає відобразити інформацію про ваших API і Mule-додатках, які виконуються. Visualizer збирає дані від додатків, проксі-додатків, які виконуються на CloudHub або в інших середовищах через вбудований компонент моніторингу середовища. Visualizer дає зрозуміти, як ваш додаток залежить від інших сервісів, і проводить аналіз проблем, пов'язаних з помилками або продуктивністю.

Anypoint Monitoring

Тут ми зможемо спостерігати статистику виконання. З метрик, які платформа збирає, є можливість налаштувати власні dashboards з тими показниками, які найбільш актуальні для вас.

Access Management

Access Management — це консоль управління доступом та правами в рамках вашої організації. Як адміністратор організації або однієї з бізнес-груп, ви можете працювати з обліковими записами користувачів і їх привілеями.

Secret Manager

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

А як на практиці

Виходячи з особистого досвіду, можу сказати, що платформа досить дружелюбна для новачків. В одному з останніх проектів команда з 3-5 новачків змогла успішно реалізувати інтеграцію SAP і ще 3 облікових систем. Більша частина завдань, які потрібно реалізувати, вирішувалася за рахунок готових компонент з Anypoint Exchange.

При розробці є своя специфіка, до якої потрібно звикнути. Наприклад, спільна робота і merge коду. Так як вся реалізація зберігається у вигляді XML-файлу, то перегляд змін стає складніше. Вирішили ми це за рахунок поділу завдань на різні програми, над якими команда працювала з мінімальними перетинами.

Як почати

Реєструйтеся і отримуйте безкоштовний тріал 30 днів з доступом до CloudHub.

Що почитати

Якщо ви цікавитеся напрямком системних інтеграцій, то почати ознайомлення з iPaaS-додатками, як і з професією System Integration Engineer в цілому, варто c оглядового матеріалу щодо інтеграційних платформ , опублікованого раніше моїм колегою.

Опубліковано: 24/01/20 @ 11:00
Розділ Різне

Рекомендуємо:

Як створити і утримати команду в IT-компанії
Як працювати з Угандою: африканський менталітет, бізнес, технології
Здоров'я ІТ-спеціаліста: психосоматика, депресія й емоційне вигорання
AI & ML дайджест #16: data project чек-лист, наукові статті, що нас чекає в 2020
Підбірка фан-відео від айтішників за 2019 рік