Система биллинга обрабатывает большое количество непрерывно поступающих данных. Задачи — учет движения средств по счетам клиентов — вызовы, подписки, начисления, платежи и корректировки, учет предоставленных абонентам услуг.
В биллинге были узкие места. Сбор данных между дата центрами занимал значительную долю трафика. Это ограничивало объём принимаемых новых событий. При закрытии месяца биллинг занимал рабочий день и требовал привлечение к процессу инженеров.
«Billing» переводится как «выписывание счета».
Системы, вычисляющие стоимость услуг связи для каждого клиента и хранящие информацию обо всех тарифах и прочих стоимостных характеристиках.
Создать новую Биллинговую систему уровня Big Data/Fast Data, в виде “коробочного” решения для поставки разным компаниям и операторам
Новая система работает надёжно и легко справляется с нагрузками. Для ускорения сохранения данных использовали NoSQL-решение.
Это разгрузило сетевой трафик системы, отвечающей за приём событий. В результате увеличили порог нагрузки событиями с 0.5 миллиарда до 2 миллиардов в день.
Внедрили в биллинг MapReduce-алгоритмы, сократили время закрытия месяца с ~1 дня до ~10 минут. Автоматизировали настройку параметров. Теперь система не требует участия инженеров для выполнения плановых операций.
Реализовали механизм быстрого развёртывания на окружении заказчика. Новая система уровня Big Data/Fast Data отвечает предъявленными требованиям по отказоустойчивости и масштабированию.
Spring boot
Kafka
Spark 2.x
Cassandra 3.x
Zookeeper 3.x
Kubernetes
TeamCity
Akka
Это был непростой проект с нестандартными технологиями, в котором всё заточено под большие объёмы и высокую скорость обработки данных.
При каждом движении приходилось учитывать специфику NoSQL БД. Мы оперативно освоились и приложили руку к решению, которым ежедневно пользуются миллионы людей.
Дмитрий Нефедов
Java-разработчик