ДжазТим — надежный технологический партнер

Agile разработка ПО на Java

Mule-приложение по сбору и обработке информации о звонках и передаче данных с сервиса Webbing

Введение

Mule SoftЕсли вы часто путешествуете (по работе или в личных целях) по разным странам и уголкам нашей планеты, то наверняка сталкивались с такой проблемой, как необходимость постоянного контроля за тем, в сети какого мобильного оператора вы находитесь в данный момент. И вам нужно либо вручную выбрать подходящего оператора роуминга, либо приобретать дополнительные SIM-карты для каждой страны. Любой из этих вариантов доставляет дискомфорт.

Для того, чтобы избежать неудобства использования нескольких SIM-карт, были специально разработаны устройства Webbing — особые SIM-карты, которые просто устанавливаются в телефон и не требуют дополнительных настроек. Такая SIM-карта может использоваться как единая корпоративная SIM-карта сотрудника. Эти SIM-карты работают в мобильных сетях большинства мировых операторов и позволяют пользователям не задумываться о смене SIM-карт при перемещении между странами, а просто совершать звонки и пользоваться мобильным интернетом.

Карты Webbing особенно актуальны для международных компаний, сотрудники которых регулярно перемещаются между офисами. Один из наших заказчиков предоставляет сервисы по цифровому учету расходов в сфере телекоммуникаций. В том числе такие услуги предоставляются одному из крупных международных агентств с более чем сотней офисов по всему миру. Сотрудники агентства активно используют SIM-карты Webbing. Учет расходов по картам Webbing необходимо было добавить в набор существующих сервисов заказчика.

Краткое описание проекта

Эту задачу предстояло решить нашей команде. Одним из требований заказчика была разработка решения на Mule, т.к. в его инфраструктуре уже имеются Mule-приложения. Извлекать информацию о звонках из raw-данных от центров мобильных операторов (а их множество) проблематично, поэтому данные необходимо получать из веб-сервисов Webbing. Нами было предложено решение, суть которого заключается в том, чтобы извлеченную детализацию из сервисов Webbing преобразовывать в необходимый формат и сохранять в базу данных, чтобы клиент в дальнейшем мог работать с этими данными. Схема интеграции решения с существующей инфраструктурой заказчика приведена на рисунке 1.

Схема работы приложения с Webbing и клиентской базой данных

Рисунок. Схема работы приложения с Webbing и БД заказчика.

Разработанное решение представляет собой Mule приложение, которое работает следующим образом:

Ezwim Webbing основной поток

Рисунок. Ezwim Webbing основной поток.

1. Запрос к Webbing каждые nn секунд (через Quartz)

Вызов Webbing и сохранение результатов

Рисунок. Вызов Webbing и сохранение результатов

2. XML ответ от Webbing сервисов десериализуется во внутреннее представление Mule.

3. Фильтруем данные: отсекаем уже обработанные, дополнительно фильтруем по заданному префиксу.

Сохранение данных ответа

Рисунок. Сохранение данных ответа.

Сохранить сообщение лог журнала

Рисунок. Сохранение сообщение в лог журнал.

4. Преобразуем в xml.

Записать в Oracle

Рисунок. Преобразование в xml.

5. Сохраняем данные и лог в систему заказчика.

После этого службы заказчика, например, бухгалтерия, могут обращаться к данным о расходах в удобном для них виде. Таким образом, теперь сотрудникам нет необходимости обрабатывать большие объемы данных вручную и вносить их в бухгалтерское ПО.

Приложение взаимодействует с веб-сервисами Webbing посредством SOAP-запросов, что дает возможность реализации любой клиентской части в дальнейшем.

Кроме того, в целях сокращения времени на развертывание и тестирование, и большей концентрации разработчиков непосредственно на разработке программного продукта, заказчик поставил дополнительную задачу: для использования в этом и будущих проектах внедрить процесс Continuous Integration, Continuous Delivery (CI/CD), который бы позволял максимально автоматизировать сборку, тестирование и развертывание. Что нами и было реализовано.

Для этого мы развернули и настроили Jenkins, с помощью которого выполняются следующие задачи:

  • При каждом коммите в систему контроля версий запускается сборка проекта. В случае успешной компиляции также выполняются юнит-тесты. Если все тесты пройдены, то сборка считается успешной.
  • Периодически Jenkins проверяет на наличие новой успешной сборки. Если таковая имеется, то производится ее публикация на сервер.

Таким образом, с помощью развертывания Jenkins мы сократили время разработчиков, которое они тратили на сборку, тестирование и развертку новых версий вручную.

Технологии

Stack: Mule ESB, Java, Apache Maven, XML, XSLT.
Infrastructure: Jenkins, Git, Anypoint Studio.
Test Automation Libraries: MUnit.
DB: Oracle.
Protocols: HTTPS, JDBC, SOAP.

Особенности проекта

  • Многоплатформенный, гетерогенный проект.
  • Зависимость от сервисов нескольких провайдеров/поставщиков услуг одновременно.
  • Оптимизация под большие объемы данных. Плотная работа с нагрузочными тестами.
  • Необходимость CI/CD.

Результат проекта

  • Реализована система, позволяющая в автоматическом режиме собирать и обрабатывать детализированную информацию о звонках по каждому из устройств Webbing.
  • Применена концепция CI/CD.
  • На данный момент система успешно используется.

Достижения компании на проекте

  • Применили нагрузочное тестирование для гарантированного обеспечения требуемых параметров производительности.
  • Использовалось профилирование для оптимизации потребления ресурсов.
  • Основной функционал покрыт юнит-тестами.
  • Для каждого потока в Mule реализованы свои стратегии обработки исключений.

Многие из наших наработок по реализации Mule-решений на этом проекте вошли вошли в документ “Best Practices in Mule ESB”. В дальнейшем этот документ послужил основой для создания статьи Лучшие практики использования Mule ESB.

Свяжитесь с нами, чтобы обсудить Ваш IT-проект

    Имя *

    Название компании

    Email *

    Телефон

    Чем мы можем Вам помочь? *

    * – Обязательные поля для заполнения