Система учета, анализа и принятия решений по финансовому состоянию клиентов и абонентов
Бизнес составляющая проекта
МФД (Многофункциональный финансовый диспетчер) — это продукт, который входит в группу биллинг и финансы. Эта группа обеспечивает бизнес процессы по расчету услуг, информированию клиентов, формированию нотификаций клиентов для телеком компаний, мобильных операторов и прочих крупных заказчиков в телекоммуникационной сфере.
Продукт МФД предназначен для принятия решений о формировании управляющих воздействий на внешние системы на основании анализа финансовых данных и ключевых характеристик клиентов, полученных из различных источников данных.
Функции МФД:
- управление дебиторской задолженностью;
- управление жизненным циклом абонента;
- принятие решений: управление услугами, управление нотификациями;
- обеспечение быстрого доступа к данным.
МФД — это система для отслеживания и анализа биллинговой и финансовой информации по клиентам и абонентам и реагирование на эту информацию путем взаимодействия со сторонними отправителями/получателями (продуктами или внешними системами).
Конкретные задачи, которые решает продукт в реализованной конфигурации (конфигурация может расширяться):
- контроль и принятие решений о подключении/отключении различных фич/услуг для абонентов в крупной биллинговой системе;
- принятие решений о нотификации 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 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-проект