Данный проект представляет собой Big Data. Ключевая особенность системы – хранение и обработка огромного массива данных. Масштаб системы можно сравнить со Spotify, Яндекс.Музыка и т.д. В сутки система обрабатывает миллиарды файлов, а в секунду поступает примерно 600 тыс. записей.
В условиях такого объема, для хранения данных была использована распределен-
ная база данных Cassandra. Для обеспечения целостности данных и распределения нагрузки используются несколько ЦОДов (Центров Обработки Данных), географически расположенных в разных регионах.
Что касается биллинга, сама система не выставляет счета, но обрабатывает данные, которые потом используются для выставления счета. Для обработки и вычисления распределенных данных используется технология Apache Spark.
Система построена на основе микросервисной и распределенной архитектуры.
Помимо того, что все данные хранятся распределенно, обработка и сохранение данных происходит при помощи микросервисов. На данный момент в системе насчитывается порядка 20 микросервисов.
Для обеспечения безопасности системы используется SFTP протокол, технология единого входа SSO, шифрование данных и др.
Внедрение системы производилось поэтапно. Так как данная система разрабатывалась на замену старой и неактуальной, в процессе внедрения сверялись данные старой и новой систем, дополнялся функционал. Блок за блоком потоки событий переключались со старой системы на новую до тех пор, пока не отключили хранилище данных в старой системе и не перешли полностью на новую.
На начальном этапе разработка проекта велась по методологии Scrum с двух-недельными спринтами. В конце каждого спринта проводились презентации демоверсий внутри команды разработчиков с участием бизнес-аналитиков. Помимо подобных локальных презентаций, команда разработки раз в месяц проводила презентации демоверсий продукта непосредственно с заказчиком. Также, проводились ежедневные утренние онлайн-встречи всей команды разработки и бизнес аналитиков.
В течение проекта команда разрослась, и для удобства был создан специальный чат в Slack, где утром каждый сообщал о проделанной работе и планируемых задачах. Также, раз в неделю в Zoom проводилась общая онлайн-встреча всей команды, задействованной на проекте: на этих встречах обсуждалось не только текущее положение проекта, но и новости в сфере IT.
Когда начался этап активного внедрения продукта, команда разработки перешла на
методологию Kanban для оптимизации рабочих процессов.