Система учета, анализа и принятия решений по финансовому состоянию клиентов и абонентов
МФД (Многофункциональный финансовый диспетчер) - это продукт, который входит в группу биллинг и финансы. Эта группа обеспечивает бизнес процессы по расчету услуг, информированию клиентов, формированию нотификаций клиентов для телеком компаний, мобильных операторов и прочих крупных заказчиков в телекоммуникационной сфере.
Продукт МФД предназначен для принятия решений о формировании управляющих воздействий на внешние системы на основании анализа финансовых данных и ключевых характеристик клиентов, полученных из различных источников данных.
Функции МФД:
- управление дебиторской задолженностью,
- управление жизненным циклом абонента,
- принятие решений: управление услугами, управление нотификациями,
- обеспечение быстрого доступа к данным.
МФД - это система для отслеживания и анализа биллинговой и финансовой информации по клиентам и абонентам и реагирование на эту информацию путем взаимодействия со сторонними отправителями/получателями (продуктами или внешними системами).
Конкретные задачи, которые решает продукт в реализованной конфигурации (конфигурация может расширяться):
- контроль и принятие решений о подключении/отключении различных фич/услуг для абонентов в крупной биллинговой системе,
- принятие решений о нотификации B2C и B2B клиентов в случае возникновения самых разнообразных условий, таких как: просрочка счетов, дебиторская задолженность, срок оплаты кредита подходит к концу, плановое оповещение через определенные промежутки времени.
Техническое описание проекта
Проект включает в себя три приложения:
- HTTP-server c RESTful API сервисами,
- сервер, принимающий/отправляющий RabbitMQ сообщения,
- приложение для восстановления/актуализации 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 сases, 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, Компания-разработчик программного обеспечения для телекоммуникационной отрасли, Санкт - Петербург, Россия
С компанией JazzTeam мы работаем уже много лет. За это время команда JazzTeam стала для нас не только исключительными разработчиками и тестировщиками, но и верными партнерами, друзьями.
Способность выявлять скрытые проблемы и тут же устранять их максимально оперативно и качественно - мне кажется, это естественная составляющая любого проекта, в которых принимает участие JazzTeam.
Стабильная и уверенная работа команды, обдуманные действия, четко поставленные вопросы - это то, что делает JazzTeam профессионалами своего дела.
Отдельно хочется выделить менеджмент команды, который установил высокую планку ответственности и с каждым днем лишь повышает её: наши требования не только слышали, но и слушали, и, что главное, реализовывали именно в том виде, который нам необходим.
Сотрудничество с JazzTeam - это удовольствие, безграничное доверие, которое ребята заработали не словом, а делом и крепкая дружба. Искренне верю, что наше плодотворное сотрудничество продолжится и будет лишь совершенствоваться. Хочу поблагодарить каждого участника команды и пожелать удачи и дальнейших профессиональных успехов!