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

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

Система учета, анализа и принятия решений по финансовому состоянию клиентов и абонентов

Бизнес составляющая проекта

МФД (Многофункциональный финансовый диспетчер) — это продукт, который входит в группу биллинг и финансы. Эта группа обеспечивает бизнес процессы по расчету услуг, информированию клиентов, формированию нотификаций клиентов для телеком компаний, мобильных операторов и прочих крупных заказчиков в телекоммуникационной сфере.

Продукт МФД предназначен для принятия решений о формировании управляющих воздействий на внешние системы на основании анализа финансовых данных и ключевых характеристик клиентов, полученных из различных источников данных.

Функции МФД:

  • управление дебиторской задолженностью;
  • управление жизненным циклом абонента;
  • принятие решений: управление услугами, управление нотификациями;
  • обеспечение быстрого доступа к данным.

МФД — это система для отслеживания и анализа биллинговой и финансовой информации по клиентам и абонентам и реагирование на эту информацию путем взаимодействия со сторонними отправителями/получателями (продуктами или внешними системами).

Конкретные задачи, которые решает продукт в реализованной конфигурации (конфигурация может расширяться):

  1. контроль и принятие решений о подключении/отключении различных фич/услуг для абонентов в крупной биллинговой системе;
  2. принятие решений о нотификации B2C и B2B клиентов в случае возникновения самых разнообразных условий, таких как: просрочка счетов, дебиторская задолженность, срок оплаты кредита подходит к концу, плановое оповещение через определенные промежутки времени.

Техническое описание проекта

Проект включает в себя три приложения:

  1. HTTP-server c RESTful API сервисами;
  2. сервер, принимающий/отправляющий RabbitMQ сообщения;
  3. приложение для восстановления/актуализации NoSQL локальной базы данных.

В реализованной конфигурации МФД получает RabbitMQ сообщения от многочисленных отправителей в крупной биллинговой системе.

Происходит анализ поступившей информации от внешних отправителей с помощью бизнес-правил, написанных на фреймворке Drools. Далее, в соответствии с реализованной бизнес-логикой, МФД приступает к управлению фичами/услугами абонентов, а также отправкой заявок на создание/удаление различных нотификаций (sms сообщения, e-mail, fax, phone).

После принятия решений МФД отправляет ответные RabbitMQ сообщения в соответствующие внешние продукты. На следующем этапе продукт сохраняет измененные бизнес-объекты (абонентов) в локальную NoSQL базу данных Couchbase, которая служит для быстрого доступа к абонентам.

Также у МФД есть специальный инструмент для восстановления/актуализации NoSQL базы в случае, например, запуска в новом окружении и/или восстановления после аварий.

Какие работы выполнялись командой в части разработки

  • Разработка технических спецификаций исходя из требований функциональных спецификаций, плотная работа с представителями заказчика (бизнес аналитик, представитель владельца продукта) и непосредственно с заказчиком.
  • Активное и регулярное взаимодействие с командой технической поддержки, совместный анализ проблем и поиска возможных решений.
  • Реализация внутренней бизнес-логики в виде открытых и доступных для изменений правил Drools.
  • Работа с удаленной БД — Oracle, загрузка данных из Oracle в локальное NoSQL хранилище — Couchbase.
  • Интеграция многих смежных продуктов с помощью брокера сообщений RabbitMQ, т.к. продукт ориентирован на обработку событий от смежных систем.
  • Работа с Akka, выстраивание цепочек из акторов (потоков), каждый из которых нацелен на свой вид работ.
  • Использование Zookeeper для хранения и управления конфигурации окружения.
  • Участие в грумингах, митингах, архитектурных встречах по продукту.

Какие работы выполнялись командой в части тестирования

За время работы на проекте QA командой было создано более 3000 автотестов.
Технологии, которые использовались для создания и запуска авто-тестов:
Java SE + JDBC, Spring, XML, JSON и др., Robot Framework, PostgreSQL, Oracle, TestNG, Allure Framework, CI (Jenkins, TeamCity, VRA), Maven, Git.

  • Создание авто-тестов на различную новую функциональность, в особенности:
  • управление жизненным циклом абонентов;
  • управление долгами клиента;
  • нотификация B2B клиентов по различным каналам связи;
  • получение статистики по продукту с использованием технологии Java.
  • Management Extension (JMX).
  • Создание test cases, test suites, test runs в TestRail.
  • Актуализация и рефакторинг авто-тестов по ранее созданной функциональности.
  • Участие в грумингах, митингах, архитектурных встречах по продукту.
  • Тестирование различной функциональности:
  • запуск авто-тестов и анализ результатов их прогона;
  • оформление выявленных дефектов в JIRA, тестирование исправлений;
  • мануальное тестирование функциональности, где не было возможности;
  • провести покрытие авто-тестами;
  • интеграционное тестирование продукта совместно с другими продуктами на клонах промышленных стендов заказчика;
  • тестирование документации к продукту, а также функциональных и технических спецификаций на полноту, точность, однозначность, непротиворечивость;
  • осуществление контроля при отгрузке продукта заказчику.

Технологии, используемые на проекте

Stack: Groovy, Java SE 7, Java SE 8, Spring, Apache Maven, Apache Tomcat.
Infrastructure: Jenkins, Git, IntelliJ IDEA,Teamcity, Stash, TestRail, Jira, Confluence.
Frameworks: RabbitMQ, Drools, Akka, Apache Karaf, Apache Zookeeper, Apache CXF.
Test Automation libraries: Robot Framework, JUnit + Mockito, TestNG, Allure Framework.
DB: PL/SQL (Oracle database), Couchbase.
Other libraries: Apache HTTP Client, Logback, Slf4j, Jackson, Xstream, Fiddler.

Скриншоты

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

Работа над продуктом в составе сложной многокомпонентной системы велась с участием нашей команды на протяжении более двух лет.

Хочется отметить ряд особенностей, которые сопровождали нашу работу на данном проекте:

  • гибкая разработка по Agile методологии Scrum;
  • регулярные поставки продукта заказчику (Potentially Shippable Product Increment);
  • работа команды в формате Feature team:
  • выделенные роли scrum master-а и тимлида в команде;
  • планирование с помощью planning poker;
  • проведение грумингов при анализе новой функциональности;
  • проведение ежедневных статус-митингов;
  • демонстрация выполненных работ на демо днях и Sprint review;
  • итерационный подход — работа по двухнедельным спринтам;
  • регулярное проведение ретроспектив по завершению спринтов либо по внештатным ситуациям или проблемам;
  • подготовка и отгрузка патчей/релизов согласно регламентам.
  • обязательное выполнение cross-review кода;
  • обязательное соблюдение Code style;
  • высокие требования к качеству поставляемого продукта, выдвигаемые к команде выпускающим инженером при подготовке и поставке релизов заказчику;
  • соблюдение требования по покрытию всей новой функциональности тест-кейсами;
  • работа с территориально распределенными командами и подразделениями заказчика.

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

  • система полностью разработана и используется у нескольких заказчиков, среди которых один из крупнейших мобильных операторов России, мобильный оператор Грузии;
  • на данном этапе ведутся работы по развитию новой функциональности;
  • выполняется поддержка текущей функциональности;
  • выполняются работы по кастомизации решения для других заказчиков (мобильных операторов);
  • продукт работает с абонентскими базами 24/7. Размер баз данных хранит порядка десятков миллионов уникальных абонентов.

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

  • за 2 года численность команды увеличили с 1 тестировщика до 7 человек;
  • успешно реализовали себя как команда в формате работы Feature team;
  • обеспечивали полный цикл итеративной разработки: ежедневные stand up, grooming, sprint review, ретроспектива, еженедельное демо заказчику;
  • анализ, разработка, тестирование, регрессионное и интеграционное тестирование, подготовка и отгрузка релизов или патчей;
  • проанализировали и реализовали большое количество новых бизнес-кейсов;
  • проявляли и поддерживали высокий уровень ответственности, самоорганизованности и самообучаемости;
  • изучили новые технологии (Drools, RobotFramework, ELOG);
  • выполняли поддержку качества продукта на высоком уровне путем увеличения покрытия кода (Unit-tests), бизнес-кейсов (Autotests), проведения интеграционного тестирования для проверки комплексных работ с набором смежных продуктов;
  • создали 3312 автотестов за два года, актуализировали большое количество тестов;
  • выполняли стабилизацию всех тестов в рамках работ по оптимизации регрессионного тестирования;
  • принимали участие в разработке новой тестовой архитектуры;
  • принимали участие в переходе на продуктовую дистрибуцию;
  • выступали инициаторами улучшений в процессах проекта;
  • принимали участие в сообществе скрам-мастеров;
  • разработали программу по вводу нового человека в проект;
  • спустя более чем два года, на момент выхода статьи в свет, наше сотрудничество с заказчиком в рамках данного проекта продолжается.

Отзывы клиентов

Александр Золотарев, начальник лаборатории Биллинг и финансы, Peter-Service Inc, Компания-разработчик программного обеспечения для телекоммуникационной отрасли, Санкт — Петербург, Россия

С компанией ДжазТим мы работаем уже много лет. За это время команда ДжазТим стала для нас не только исключительными разработчиками и тестировщиками, но и верными партнерами, друзьями.
Способность выявлять скрытые проблемы и тут же устранять их максимально оперативно и качественно — мне кажется, это естественная составляющая любого проекта, в которых принимает участие ДжазТим.
Стабильная и уверенная работа команды, обдуманные действия, четко поставленные вопросы — это то, что делает ДжазТим профессионалами своего дела.
Отдельно хочется выделить менеджмент команды, который установил высокую планку ответственности и с каждым днем лишь повышает её: наши требования не только слышали, но и слушали, и, что главное, реализовывали именно в том виде, который нам необходим.
Сотрудничество с ДжазТим — это удовольствие, безграничное доверие, которое ребята заработали не словом, а делом и крепкая дружба. Искренне верю, что наше плодотворное сотрудничество продолжится и будет лишь совершенствоваться. Хочу поблагодарить каждого участника команды и пожелать удачи и дальнейших профессиональных успехов!

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

    Имя *

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

    Email *

    Телефон

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

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