This slide deck explores how WSO2’s API management and enterprise integration technologies were used to address the integration aspect of Bank ZENIT to achieve their business targets successfully.
3. IT as business value
IT moved from cost center (supporting business) to business
enabler, capable to generate revenue.
Examples are:
- UBER, AIRBNB, Flixbus,...
- Blockchain
- Open Banking, Payment
systems
- ….
The value is in IT Digital Assets:
- Enterprise Data
- Applications
- Workflow processes
- System based on proprietary
protocols
- ….
4. API as a product
API products enable enterprise data sources and processes (IT
digital assets) to be monetized
But API is a middleware!
APIs are products, and they are the mechanism through which value is exchange in
modern businesses
10. Bottom up approach: digitalise your assets
Functional
backends
External and internal
client apps
API
Manager
Integration
Layer
Employee
API
Employee
API
Employee
1
2
13. • Банк учрежден в 1994 г.
• Уставный капитал 33 545 млн руб.
Основной акционер – ПАО «Татнефть»
им. В. Д. Шашина (71,12%).
• В сентябре 2018 года был запущен
поэтапный процесс интеграции дочерних
банков. В объединенный банк вошли:
• Банк ЗЕНИТ
• Девон-Кредит (ноябрь 2019)
• Липецккомбанк (ноябрь 2019)
• Спиритбанк (май 2020 года)
• Банк ЗЕНИТ Сочи (май 2020 года)
• Сеть подразделений:
• головной офис (Москва);
• 5 филиалов (Санкт-Петербург, Ростов-на-
Дону, Казань, Новосибирск, Екатеринбург);
• 61 дополнительный офис;
• 48 операционных касс вне кассового узла;
• 16 операционных офисов.
2
Онас
Банк ЗЕНИТ –
банк группы компаний «Татнефть»
15. Большое
количество систем
Внедряются новые
системы, медленно
угасают унаследованные
системы, включая
системы дочерних
банков.
Системы
меняются
Новые системы
приходят на смену
старым, некоторые
исчезают или
объединяются с
другими системами.
Повторное
использование API
Часто одна и та же
информация или
функциональность
требуется разным
системам.
Разделение
доступа
Доступ различных
систем к различным
подмножествам
имеющихся API.
Стандартизация
и учет
Унификация способов
взаимодействия для
каждой системы,
создание реестра API.
4
ТежезадачивпереводенаязыкIT
16. 5
WSO2!
Нопочему?
• Проверенное решение
• Гартнер плохого не посоветует
• Комплексное решение на единой
платформе.
• Open Source
• Можно было использовать
бесплатно без функциональных
ограничений.
• Есть партнеры в России.
17. Micro Integrator
• Интеграция API, сервисов, СУБД, систем обработки
сообщений (ActiveMQ, RabbitMQ, Kafka), различных
приложений.
• Варианты использования
• Microservices
• ESB –style
• Графическая среда разработки (Integration Studio)
• Дружит с Docker и Kubernetes
• Локальное, облачное и гибридное развертывание.
• Интеграция с ELK, Prometheus и Jaeger, собственная
аналитика.
• Поддержка отладки, unit тестов и CICD (Jenkins,
Travis).
• Самая быстрая среда выполнения интеграции,
проверенная временем на миллиардах транзакций
в тысячах развертываний.
Streaming Integrator
WSO2 Streaming Integrator включает конструктор
потоков и механизм потоковой обработки с
мощными функциями мониторинга и аналитики.
Возможности среды выполнения потоковой
передачи позволяют пользователям обрабатывать
все источники данных как потоки данных, применять
операции обработки потока (Siddhi Streaming SQL) и
публиковать в одном или нескольких местах
назначения. Он также имеет расширенные
возможности обработки и исправления ошибок.
WSO2 Streaming Integrator позволяет реализовать
потоковую передачу ETL, сбор измененных данных
(CDC), а также обрабатывать большие файлы и API-
интерфейсы в реальном времени.
Вы можете подключать и реализовывать
управляемые событиями архитектуры с системами
распределенной потоковой передачи, такими как
Kafka, Amazon SQS и другими.
ПродуктыWSO2:EnterpriseIntegrator7.x
6
18. API Manager 3.2
WSO2 API Manager - это решение корпоративного класса с открытым
исходным кодом, которое поддерживает публикацию API, управление
жизненным циклом, разработку приложений, контроль доступа,
ограничение скорости и аналитику в одной четко интегрированной
системе.
• API Gateway и Microgateway – централизованный и
децентрализованный API-шлюзы, обеспечивающие безопасный и
быстрый доступ к сервисам и микросервисам.
• Вопросы безопасности API – аутентификация и авторизация доступа к
сервисам в традиционной и микросервисной архитектурах
• Мониторинг поведения системы и использования API
• Возможность создания из API продуктов и их монетизации
• Магазин API (он же Developer Portal)
• API Operator for Kubernetes, API Controller – инструменты для
развертывания API в Kubernetes, объединения групп микросервисов
в отдельные API, обеспечения большей гибкости для создания
конвейеров CI / CD для API.
• Интеграция с Istio для обеспечения безопасного доступа и
управления API-интерфейсами сервисной сети.
• Поддержка жизненного цикла API
• Представление GraphQL сервисов как управляемых API-интерфейсов
• Гибридное решение по управлению API (облака + on-premise
microgateway)
Identity Server
Расширяемая удобная для разработчиков платформа для
федерации, аутентификации и управления удостоверениями
(identities) как в корпоративной, так и в облачной среде.
• Единый вход (SSO) в корпоративную / облачную среду и
федерация
• Надежная аутентификация, в том числе многофакторная
• Управление учетными записями и предоставление
удостоверений
• Контроль доступа
• Безопасность API и микросервисов
• Мониторинг, отчетность и аудит
• Соответствие GDPR
• Гибкость развертывания
• Подключаемая, расширяемая, с настраиваемым
интерфейсом (темы).
ПродуктыWSO2:APIManagerи IdentityServer
7
19. WSO2APIManager
8
API Publisher – разработка и управление API:
• Создание с нуля или импорт готовых описаний
API или веб-сервисов
• Назначение прав доступа (доступ по ролям к
API в целом и к областям (scope) внутри API
• Возможность прототипирования или
назначение URL существующего API или
сервиса
• Возможность дополнительной обработки
сообщений
• Определение других свойств API
• Возможность версионирования и назначения
версии API по умолчанию
• Публикация API (поддержка жизненного
цикла)
API Publisher – разработка и управление API:
• Создание с нуля или импорт готовых описаний
API или веб-сервисов
• Назначение прав доступа (доступ по ролям к
API в целом и к областям (scope) внутри API
• Возможность прототипирования или
назначение URL существующего API или
сервиса
• Возможность дополнительной обработки
сообщений
• Определение других свойств API
• Возможность версионирования и назначения
версии API по умолчанию
• Публикация API (поддержка жизненного
цикла)
API Store (Depeloper Portal):
• Создание приложений, в рамках которых
будут использованы API
• Подписки на доступные API
• Генерация ключевой информации (токены)
для доступа к API
API Store (Depeloper Portal):
• Создание приложений, в рамках которых
будут использованы API
• Подписки на доступные API
• Генерация ключевой информации (токены)
для доступа к API
20. ESB profile
На базе Apache Synapse
• Маршрутизация сообщений
• Фильтрация сообщений
• Преобразование сообщений
• Обогащение содержания
сообщений
• Переключение протоколов
• Цепочки вызовов сервисов
• Сохранение и пересылка
сообщений
• Балансировка нагрузки
• Потоковая передача данных
• Data services
Message Broker profile
На базе Apache Qpid
• JMS v1.0 и v1.1 API
• Протоколы AMQP 0.91, MQTT
• Поддержка AMQP клиентов
на Java, .Net, C, C++, PHP,
Ruby, Erlang и т. д.
• Гибкая масштабируемая
архитектура
• Поддержка распределенных
очередей
• Поддержка модели
Publish/Subscribe
• Консоль управления
• Контроль доступа
• Средства мониторинга
Business Process profile
Длительные процессы
интеграции (бизнес-процессы)
создаются с использованием
следующих стандартов:
• подмножество BPMN 2.0
• WS-BPEL 2.0
• BPEL4People
• WS-Human Tasks.
Используются движки:
• BPMN на базе Activiti 5.21.0
• BPEL на базе Apache ODE
Analitycs profile
Является экземпляром WSO2
Stream Processor. Настроен по
умолчанию для мониторинга
статистики передачи
сообщений в профиле ESB.
Состоит из двух компонентов:
Worker и Dashboard. Worker
обрабатывает потоки данных,
отправляемые из профиля ESB,
и публикует статистику в базе
данных. Dashboard читает
статистику, опубликованную
Worker'ом, и отображает
статистику на дашборде.
Worker и Dashboard - два
отдельных экхемпляра WSO2
EI, связанные через базу
данных.
WSO2EnterpriseIntegrator6.x
9ESB
Business Process
22. КакмыиспользуемAPIManager
11
• Одна система – один пользователь
• «Вечные» токены
• Роли и области (scope)
Управление доступом
систем к API
Управление доступом
систем к API
• Используем «Песочницу» для dev контура
• Используем «Production» для test контура
• Один пользователь – разные токены
Разделение
непроизводственных
контуров
Разделение
непроизводственных
контуров
• Извне зоны PCS DSS доступ к ESB только через API Manager (кроме ДБО ФЛ)
• API Manager находится в PCI DSS, но не обрабатывает номера карт
Промежуточный сервер в
зоне PCI DSS
Промежуточный сервер в
зоне PCI DSS
• Используем JavaScript для быстрого создания «заглушек»Прототипирование APIПрототипирование API
• С помощью механизма Message Mediation Policies добавляем информацию
о контексте вызова (имя пользователя, API, …) для обработки в ESB.
• Также можно удалять «лишнюю» информацию из ответа ESB.
Обогащение/фильтрация
данных
Обогащение/фильтрация
данных
23. КакмыиспользуемEnterpriseIntegrator
12
Маршрутизация сообщенийМаршрутизация сообщений
Построение цепочек вызовов
сервисов и объединение
полученных данных
Построение цепочек вызовов
сервисов и объединение
полученных данных
Работа с СУБД
(Data Services)
Oracle, MS SQL
Работа с СУБД
(Data Services)
Oracle, MS SQL
Изменение форматов
сообщений
•XML/JSON/CSV..
•Маскировка форматов вызовов при
смене API
Изменение форматов
сообщений
•XML/JSON/CSV..
•Маскировка форматов вызовов при
смене API
Гарантированная доставка
сообщений
(Message Store)
Гарантированная доставка
сообщений
(Message Store)
Балансировка нагрузки и
непрерывность работы (кластер)
Балансировка нагрузки и
непрерывность работы (кластер)
Горячая замена кода и части
настроек
Горячая замена кода и части
настроек
Возможности мониторинга с
помощью JMX
Возможности мониторинга с
помощью JMX
Потоковая передача больших
объемов данных
Потоковая передача больших
объемов данных
Бизнес-процессы
(в ограниченном объеме)
Бизнес-процессы
(в ограниченном объеме)
Использование/преобразование
транспортных протоколов
•HTTP (SOAP, REST)
•Файлы на диске
•SMTP
•AMQP (RabbitMQ)
•FTP
Использование/преобразование
транспортных протоколов
•HTTP (SOAP, REST)
•Файлы на диске
•SMTP
•AMQP (RabbitMQ)
•FTP
24. КонцепцияDataserviceвWSO2
13
Dataservice позволяет получить доступ к
источникам данных через REST или SOAP
вызовы.
Основные возможности:
• Поддержка любых баз данных: MSSQL,
DB2, Oracle, MySQL,
PostgreSQL/EnterpriseDB, H2 или любая
другая база через JDBC драйвер;
• Поддержка протоколов: HTTP, HTTPS;
• Комбинирование данных из различных
источников;
• Полный набор команд для работы с
данными: INSERT, UPDATE, DELETE, SELECT,
CALL, ...
• Представление данных в виде JSON, XML
или OData форматов
<Result xmlns="http://ws.wso2.org/dataservice">
<ResultRow>
<C_CODE>19</C_CODE>
<C_NAME>Собственность потребительской кооперации</C_NAME>
</ResultRow>
<ResultRow>
<C_CODE>51</C_CODE>
<C_NAME>Собственность политических общественных объединений</C_NAME>
</ResultRow>
</Result>
DS – является самым важным компонентом интеграции в нашей системе. Он позволяет обращаться к объектам
баз данных.
27. СобытийнаямодельдляДБОФЛ(оперативноехранилищеданных)
16
Card
processing
Card
processing
Сервер
лояльности
(бонусы)
Сервер
лояльности
(бонусы)
АБС ЦФТАБС ЦФТ
BridgeBridge
Оперативное
хранилище
данных
ДБО ФЛ
Оперативное
хранилище
данных
ДБО ФЛ
SOAP XMLSOAP XML
Message
store
Message
store
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
processor
Message
processor
APIAPI
ProxyProxy
ProxyProxy
ProxyProxy
APIAPI
ProxyProxy
Data
Service
Data
Service
Message
store
Message
store
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
processor
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
store
Message
processor
Message
processor
APIAPI
28. MessageStore
17
Временное хранилище сообщений внутри шины. Используется для регулирования скорости обработки
сообщений на стороне вызываемой системы или для гарантированной доставки, когда вызываемая система
может быть временно недоступна.
Хранилище может располагаться в:
• ОЗУ сервера WSO2;
• Внешней базе данных (через jdbc);
• JMS;
• Rabbit MQ;
• Собственной реализации пользователем.
29. MessageProcessor
18
Обработчик сообщений, загруженных в хранилище Message Store. Забирает сообщения с заданной частотой и
отправляет их на обработку. В зависимости от настроек может использоваться для гарантированной доставки
сообщений.
30. MessageProcessor
19
Существует 2 типа процессоров:
• Scheduled Message Forwarding Processor;
• Message Sampling Processor.
Первый читает сообщение из очереди и отдаёт его в Endpoint. Если сообщение успешно доставляется в Endpoint,
сообщение считается обработанным и удаляется из очереди. Если происходит ошибка, сообщение будет
переотправлено позднее.
Второй читает сообщение и отдаёт его в Sequence (последовательность медиаторов). При этом не
подразумевается гарантированная успешная обработка сообщения, «отправил и забыл».
31. ЗадачапередачиданныхизпроцессингавАБС
20
Существует необходимость пакетной передачи сообщений из процессинга в АБС. Каждый пакет - csv-файлы с
различными данными клиентов (перс. данные, счета, адреса, …). Файлы связаны между собой: есть основой
файл, содержащий информацию о клиенте и подчинённые, которые должны загрузиться после основного.
Для решения этой задачи мы воспользовались технологией Smooks и пакетной загрузкой данных внутри Data
Service. Использовали следующие компоненты шины:
• Inbound Endpoint;
• Smooks Mediator;
• Data Service
ПроцессингПроцессинг SequenceSequence АБСАБС
Inbound
Endpoint
Inbound
Endpoint
SmooksSmooks
Data
Service
Data
Service
32. Smooks
21
Smooks - это платформа для обработки структурированных данных, таких как XML или CSV. Она предоставляет как
API, так и модель конфигурации, которая позволяет нам определять преобразования между предопределенными
форматами (например, XML в CSV, XML в JSON и т. д.).
<body>
<p:InsertToPhone_batch_req xmlns:p="http://ws.wso2.org/dataservice">
<p:InsertToPhone>
<p:LOAD_ID>OW-14916019-20200727000000</p:LOAD_ID>
<p:CLIENT_ID>8992894</p:CLIENT_ID>
<p:PHONE_ID></p:PHONE_ID>
<p:TYPE>1</p:TYPE>
<p:CODE></p:CODE>
<p:NUM>7904690****</p:NUM>
</p:InsertToPhone>
<p:InsertToPhone>
<p:LOAD_ID>OW-14916079-20200727000000</p:LOAD_ID>
<p:CLIENT_ID>8430737</p:CLIENT_ID>
<p:PHONE_ID></p:PHONE_ID>
<p:TYPE>1</p:TYPE>
<p:CODE></p:CODE>
<p:NUM>7952591****</p:NUM>
</p:InsertToPhone>
</p:InsertToPhone_batch_req>
</body>
33. Smooks
22
Для преобразования CSV-> XML был написан конфигурационный файл
Форматирование
XML по умолчанию
Форматирование
XML по умолчанию
Цикл по элементам
строк
Цикл по элементам
строк
Корректное
осормление пустых
элементов (nil)
Корректное
осормление пустых
элементов (nil)
34. Задачагарантированнойдвунаправленнойдоставкисообщений
23
Существует необходимость гарантированной двунаправленной доставки сообщений из АБС в другие системы
банка. Для решения этой задачи мы использовали следующие компоненты WSO2 EI:
• Inbound Endpoint;
• Proxy Service;
• Message Store;
• Message Processor;
• File Connector.
Была предложена и внедрена такая архитектура
Message
Store 1
Message
Store 1
Message
Store 2
Message
Store 2
Message
Processor
1
Message
Processor
1
Message
Processor
2
Message
Processor
2
File
Connector
1
File
Connector
1
Data
Service 2
Data
Service 2
АБСАБС
Процес
синг
Процес
синг
Процес
синг
Процес
синг
Sequen
ce 2
Sequen
ce 2
Proxy
Service
2
Proxy
Service
2
АБСАБС
Proxy
Service
1
Proxy
Service
1
Sequen
ce 1
Sequen
ce 1
DB
InbEP
DB
InbEP
File
InbEP
File
InbEP
35. InboundEndpoint
24
Позволяют получать сообщения из внешних систем и передавать его на обработку (Sequence).
По типу реализации могут быть:
• "Слушателями". Ожидают вызова внешней стороной. Например, HTTP или WebSocket.
• "Опрашивателями". Периодически опрашивают источник данных, например БД или папка с файлами.
• "Событийные". Подключаются единожды к внешнему источнику и далее ждут от него сообщений, например
очереди RabbitMQ.
36. ФайловыйInboundEndpoint
25
Позволяет читать файлы из папки, формировать их них
сообщения и дальше обрабатывать это сообщение
логикой на шине. В зависимости от результата
обработки, файл перемещается в одну из двух папок.
37. ПередачакредитныхзаявоксвнешнихсайтоввCRM
26
Для передачи данных с внешних сайтов необходимо было реализовать чтение XML-файлов определённого
формата с помощью SFTP протокола из внешнего, по отношению к шине, ресурса. Прочитанные файлы
необходимо с помощью REST-вызовов загрузить в CRM. Взаимодействие было организовано с помощью:
• Дополнения к шине под названием File Connector (search, read, delete);
• Scheduled Task.
Внешний
сайт
Внешний
сайт
Proxy
Service
Proxy
Service
SequenceSequence
File
Connector
sftp://
File
Connector
sftp://
Scheduled
Task
Scheduled
Task
CRMCRM
38. FileConnector
27
Connectors - набор расширений для шины, позволяющих обращаться к внешним системам через их API. Их можно
скачать из магазина: https://store.wso2.com/
Мы использовали File connector, позволяющий создавать,
удалять, архивировать, читать файлы как расположенные
локально, так и ftp ресурсах. Для каждого существует
понятная документация
39. ПреобразованиеDatabaseViewвпотокпочтовыхсообщений
28
Задача рассылки почтовых уведомлений из таблиц.
Рассылка состоит из двух фаз.
Первая фаза - подготовка данных для отправки. Происходит чтение данных из нескольких таблиц и формируются
данные для загрузку в промежуточную таблицу (адресная часть и форматированное тело письма).
Вторая фаза - Чтение по одной записи из промежуточной таблицы и рассылка писем.
Отправка осуществляется с помощью Inbound Endpoint и настроенного mailTo Траспорта:
40. В задаче онлайн покупки валюты мы использовали механизм распределённых транзакций.
• Из внешнего сервиса приходит заявка на покупку валюты;
• Шина принимает заявку и сразу отвечает сервису, что заявка принята;
• Шина начинает распределённую транзакцию и вызывает процедуру по покупке валюты в АБС (долго);
• Шина дожидается завершения процедуры в АБС и вызывает внешний сервис, сообщая ему результат
выполнения процедуры в АБС;
• Внешний сервис отвечает подтверждением сделки или отказом;
• В зависимости от ответа сервиса шина завершает распределённую транзакцию или откатывает её.
Для механизма распределённых транзакций нужен специальный источник данных:
Онлайнконвертациявалюты.Распределенныетранзакции.
29
42. «Маркетплейс» — онлайн-сервис, позволяющий гражданам приобретать финансовые продукты от разных
организаций на одной платформе в круглосуточном режиме.
Для обеспечения юридически значимого документооборота необходимо использование ЭЦП, основанной на
алгоритмах ГОСТ. Для их реализации используется отдельная java-машина со встроенной КриптоПро JCP и
отдельный сервер Micro Integrator.
ИспользованиеMicroIntegrator.
31
43. Используя продукты WSO2 мы смогли:
• Проинтегрировать новую единую
систему ДБО физлиц с АБС и
карточными процессингами 3-х
Банков группы (2 разные АБС, 2
разных процессинга, 3 схемы работы с
пластиковыми картами), частично
переиспользуя при этом API от двух
унаследованных систем ДБО.
• Поддержать процесс слияния
дочерних банков
• Переиспользовать часть созданного
API в разных проектах (ДБО физлиц,
CRM).
• Создать «витрину» API для
дальнейшего переиспользования в
других проектах.
• Переинтегрировать различные
системы банка со старой на новую
АБС.
• Проинтегрировать между собой
системы различных банков группы.
32
Чтомы
получили?
Как нам помогли
продукты WSO2?
44. Что мы еще не успели, но очень хотим сделать.
Планыпоразвитию
33