Огляд 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) не настільки важливо, яка система надає ці дані.
Для прикладу:
- System API — інтерфейс отримання даних системи управління базами даних, файлів, будь-яких облікових систем. Реалізувавши його, ми надаємо споживачам цього інтерфейсу дані і звільняємо користувача сервісу від необхідності вирішувати інфраструктурні завдання або глибоко розбиратися в специфіці конкретного джерела даних.
- Process API — інтерфейс для виконання якої-небудь бізнес-значимої операції: обробки замовлення, реєстрації користувача розподіленої транзакції, яка зачіпає кілька систем або їх функцій.
- Experience API — інтерфейс, зручний для споживача. Одну і ту ж бізнес-функцію може знадобитися надати різним системам, клієнтам з мобільних або веб-додатків, в B2B-сценарії і т. д.
Наприклад, у нас є база даних з таблицями, які ми хочемо обробляти.
Тоді інтерфейс з 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 — браузерна середовище розробки. За її допомогою можна:
- розробляти специфікацію API мовою RAML (RESTful API Modeling Language);
- розробляти Mule-додатки для CloudHub.
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 рік