Привет! Меня зовут Сергей Кривонос, я Solution Architect платформы WSO2 в Росбанке. Если вкратце, то WSO2 API Manager — это комплексная, интуитивно понятная и масштабируемая платформа, предназначенная для создания и управления API. Она примечательная тем, что является опенсорсной при сопоставимой с энтерпрайз-решениями функциональности. В статье я немного расскажу о самой платформе и поделюсь опытом Росбанка в работе с продуктами WSO2 — в целом, весьма позитивным. Росбанк столкнулся с потребностью развивать Open Banking и предоставить больше сервисов для своих партнеров. Сейчас мы активно работаем в направлении Bank-as-a-Service (BaaS). Под «BaaS» мы подразумеваем способность банка предоставлять свои продукты и услуги сторонним дистрибьюторам (финансовым игрокам или нет), чтобы они могли легко интегрировать их в свои собственные циклы взаимодействия с клиентами (B2B2B или B2B2C). Чтобы подобный проект стал возможен, необходим стандартизированный набор открытых банковских API (OpenAPI). Такие стандарты представил Банк России в октябре минувшего года, которые размещены на его портале. У нас уже есть большой набор устоявшихся в инфраструктуре API, и привести его к единому стандарту, а также обеспечить адекватную защиту — задача непростая. Само по себе управление зоопарком API усложняется из-за нескольких факторов: использования разных протоколов обмена, использования различных механизмов аутентификации, отсутствия документации, устаревшего кода. Чтобы решить все эти проблемы, необходим промежуточный middleware-слой — для управления взаимодействием между поставщиками и потребителями через API. Этот middleware-слой реализуется в виде отдельного компонента API Manager — класса софта, о котором мы будем подробно говорить. Здесь каждый провайдер (API) подключается к потребителям через управляемый интерфейс, а не напрямую. Middleware-слой ликвидирует все связи типа «точка-точка» между поставщиком и потребителем. Чем-то похоже на традиционную интеграционную шину (ESB) в SOA, правда? Но API Management — это совершенно другой компонент, который берет на себя такие важные функции, как: управление трафиком, обеспечение безопасности (аутентификация и авторизация), QoS, а именно приоритизация трафика, защита серверной части от внезапного всплеска запросов, мониторинг и аналитика, преобразование запросов и ответов. Командой информационной безопасности банка был выработан отдельный стандарт защиты API, который реализуется как при разработке API, так и при публикации их в интернет. Необходимо было также внедрить технологию по обеспечению безопасности API на протяжении всего их жизненного цикла. После сравнения лидеров рынка по возможностям, архитектурным особенностям и total cost of ownership решение было принято в пользу WSO2. После успешного тестирования MVP со стороны ИБ для решения конкретных задач в конкретном продукте для текущих партнеров мы начали масштабирование технологии, построение SLA и поддержки. Стали появляться новые API, созданные с использованием WSO2. При этом перенос существующих интеграций был непростым, часто приходилось работать по принципу «работает – не трогай». Но поскольку развивать новые сервисы для наших партнеров было необходимо, со временем система WSO2 превратилась у нас в полноценную платформу и вошла в состав платформенных решений банка. В Росбанке в качестве middleware-слоя мы выбрали и внедрили платформу WSO2 API Manager для управления API: проектирования, прототипирования и публикации, версионирования и управления жизненным циклом, анализа использования, контроля доступа и обеспечения безопасности, монетизации, подписки и управления ключами. Основные недостатки WSO2 API Manager сводятся к потенциальным рискам, связанным с появлением дополнительного слоя в инфраструктуре, а также к небольшому увеличению времени ожидания ответа. Список преимуществ гораздо внушительнее: единый каталог сервисов, единая точка входа в банк для всех запросов от внешних систем, простота контроля и ограничения доступов к API, возможность ограничения числа запросов (защита от DDoS), единый механизм авторизации через OAuth 2.0, контроль пользователей подписок, наличие статистики по использованию, возможность монетизации сервисов и внедрения дополнительной логики в целях контроля и логирования запросов. В архитектуру WSO2 API Manager входят следующие компоненты: Publisher, Developer Portal, Gateway, Key Manager и Traffic Manager. Функции многих понятны из названий, но для полноты картины вкратце перечислим их. API Publisher отвечает за: разработку и деплой API, публикацию API (регистрацию, проверку SLA, безопасности и производительности), мониторинг работы API, их пользователей, сбор обратной связи, управление жизненным циклом, версиями, политиками и ключами API. API Developer Portal – за: поиск и упорядочивание API по разным параметрам, рейтинги API, комментарии и запросы пользователей, сопроводительные материалы, возможность протестировать API онлайн, регистрацию приложений, покупку ключей, подписку на обновления. API Gateway в зависимости от места установки может работать как шлюз для сервисов внутри сети или для внешних партнеров/клиентов.  Эта часть платформы реализует: защиту от DDoS, валидацию в рамках политик безопасности, менеджмент вызовов API, кэширование данных, сбор статистики по использованию. Key Manager занимается доступами, а Traffic Manager отвечает за то, чтобы количество запросов к API на платформе соответствовало прописанным в соответствующих политиках. Кстати, в актуальном на сегодня отчете Forrester по решениям для API-менеджмента (3 квартал 2020 г.) WSO2 попала в категорию лидеров, наряду с такими гигантами, как IBM и Google. Среди пользователей платформы — Ebay, Schneider Electric, Всемирный банк, T-Systems и множество других компаний из разных отраслей. Сейчас в Росбанке в качестве интеграционной шины используется IBM Integration Bus. Как нетрудно догадаться, это масштабное энтрепрайз-решение, требующее отдельной строки в CAPEX, помимо регулярных расходов. А продукты компании WSO2 — WSO2 API Manager, WSO2 Enterprise Integrator и др. — это opensource-решения, которые можно просто скачать с гитхаба и пользоваться в свое удовольствие. Теоретически. На практике же бесплатно предоставляется только комьюнити-версия с мажорными апдейтами раз в полгода. Мы пользуемся услугами официальной поддержки WSO2, которая быстро делает патчи по нашим запросам. А если патчи не нужны, то саппорт отвечает еще оперативней. Об особенностях работы с поддержкой WSO2 API Manager поговорим далее; главное, что затраты на этот продукт гораздо меньше и предсказуемей. Учитывая opensource-происхождение, можно подумать, что WSO2 API Manager предлагает более скромные возможности, чем энтерпрайз-аналоги. Но в рамках наших задач — создание единой среды Bank-as-a-Service для партнеров банка — WSO2 API Manager по функциональности не уступает IBM API Connect. Подробное сравнение заслуживает отдельного материала — пишите в комментариях, если вам интересно. Если не вдаваться в детали, то WSO2 API Manager — это единственный opensource-продукт в своей нише, который может полноценно конкурировать с энтерпрайз-решениями. Есть маршрутизация, есть настройка протоколов обмена, композитные сервисы, оркестрация, энтерпрайз-паттерны, удобный тулкит. Вот полный список возможностей: дизайн и прототипирование API до реальной разработки (архитектура API First); реализация заглушек API c использованием JavaScript; публикация REST, JSON, SOAP, XML сервисов как API; публикация API как для внешних, так и для внутренних пользователей; тонкие настройки прав доступа к API; управление жизненным циклом API, версионирование; публикация как Production (производственной), так и Sandbox (тренировочной) версий API; ограничение доступа к API по домену и/или IP; поддержка протоколов OAuth2, Open ID Connect, SAML 2.0, XACL, JWT и многих других для обеспечения любых вариантов интеграции, аутентификации и авторизации; портал разработчика с удобным интерфейсом а-ля «магазин» для поиска и подписки на интересующие API; встроенная в портал разработчика консоль для тестирования API; возможность подписаться на различные уровни использования API, поддержка throttling (ограничение кол-ва запросов), монетизация API, отправка уведомлений при публикации новых версий API; мощная аналитика по различным аспектам использования API. Банк активно использует платформу WSO2 API Manager для предоставления сервиса финансовым институтам (BaaS). Интегрируясь с WSO2 API Manager, Росбанк сопровождает выдачу и обслуживание кредита для кэптивных банков. Так, в Росбанке разработан инструмент, который на основе данных со стороны партнера открывает текущий счет на балансе Росбанка. Далее через данный счет проходит выдача кредита партнера, взаиморасчеты с внешними получателями, погашение кредита. Взаимообмен данными реализован на платформе WSO2, что обеспечивает необходимый уровень защиты и безопасности. Банк готов предоставить данный сервис любому финансовому институту и оперативно подключить к процессу через API. Также с помощью платформы WSO2 API Manager мы уже осуществили интеграцию автоматизированных банковских систем с одним из партнеров Росбанка. Процесс выдачи автокредита выстроен таким образом, что ссудный счет открыт на балансе партнера, а счет погашения кредита — на балансе Росбанка. Мы с банком-партнером осуществили двустороннюю интеграцию автоматизированных банковских систем для более удобного доступа заемщиков партнера к информации об их счетах в Росбанке для обслуживания автокредитов. Благодаря интеграции, автовладельцам теперь доступна информация об остатках на счетах в Росбанке в личном кабинете интернет-банка и мобильного приложения партнера. Это позволяет повысить удобство обслуживания кредита, упростить контроль за средствами для обслуживания автокредита, избежать просрочки. Этот пример API-интеграции информационных систем двух банков является первым на российском рынке. В другом проекте — по слиянию Росбанка и Русфинанс Банка — все интеграции между информационными системами двух банков также были успешно и быстро реализованы через WSO2 Enterprise Integrator. В рамках пилота для интеграции наших внутренних информационных систем мы также используем WSO2 Enterprise Integrator вместо IBM Integration Bus в качестве интеграционной шины. Благодаря low-code среде разработки, упрощается реализация интеграционных сервисов. WSO2 предлагает простую IDE на базе Eclipse, где логические блоки накидываются драг-н-дропом и соединяются стрелками. Чтобы реализовать любой интеграционный сервис, не нужно ни одной строчки кода. Платформу WSO2 вместе с комплектом шаблонов мы предоставляем как сервис (PaaS) всем командам банка для создания необходимых им интеграционных сервисов. А перед деплоем просто проверяем через CI/CD, что всё работает нормально. В России у WSO2 есть официальный партнер, который помогает работать напрямую с техподдержкой разработчика. Для многих отечественных компаний это важно. Можно заключить договор на поддержку вендора (WSO2) и/или поддержку интегратора (официального партнера). Какие опции включает поддержка вендора: исправить баги и недочёты в продуктах; обновить функциональность; обновить настройки безопасности; проконсультировать по общим вопросам (несколько часов) — архитектура, использование продуктов и т.д. — это оценивается на основе общей стоимости договора. Какие опции включает поддержка интегратора: обеспечить бесперебойную работу решений, которые запускаются на вендорских продуктах; пообщаться с ТП вендора (по взаимному согласию). Если случится авария на проде, вендор не будет поднимать и перезапускать API Manager. А если обнаружится проблема в ядре API Manager, интегратор не полезет вносить исправления. Планы поддержки дополняют друг друга. У нас бесперебойную работу платформы обеспечивает отдельная команда в штате, поэтому мы пользуемся только поддержкой вендора. По нашему опыту специалисты компании быстро решают все проблемы, подсказывают, как лучше реализовать наши планы, по необходимости объясняют документацию. Все взаимодействие удобно реализовано через Jira. Если запрос требует лишь консультации, ее предоставляют за день. Если нужен патч, это занимает чуть дольше — 2–7 дней, но всё в рамках SLA. Патчи раскатывают для всех клиентов официальной техподдержки, так что некоторые проблемы решаются еще до того, как с ними столкнемся мы :) Команда из WSO2 выручала нас уже много раз: была улучшена работа с русскими символами в swagger-документации, исправлен ряд ошибок, связанных с XML, оказана помощь с настройкой деплоя приложений в Openshift 4, настройкой серверов, CI/CD и было сделано еще много чего полезного. Мы рады, что коллеги помогли добавить новые фичи в WSO2 Enterprise Integrator, например, создание API из swagger-файлов и reload конфигурационных файлов без рестарта сервера. Сейчас мы стремимся к тому, чтобы любой API в банке — в том числе и для внутреннего использования — сразу появлялся в среде WSO2 API Manager. Для этого мы разворачиваем WSO2 API Manager внутри сети банка. Это позволит значительно упростить как управление API, так и предоставление доступов к этим API.  Параллельно мы ведем пилотный проект по миграции WSO2 на OpenShift, что позволит нам получить автоматическое масштабирование, удобный мониторинг и при этом убрать даунтайм при деплое новых версий. В будущих материалах мы планируем более подробно рассказать о WSO2 API Manager и Enterprise Integrator, их развертывании и особенностях использования, которые открыли сами. Если вам интересно узнать что-нибудь конкретное об этих и других продуктах вендора, задавайте вопросы в комментариях. Будет интересно почитать и о вашем опыте работы с WSO2 :) IT Architect, WSO2, API Management, IBM WebShpere