Задача

AXIOMA создает и развивает свой продукт – крипто процессинг, который поставляет в виде коробочного продукта.
Так же этот продукт является платформой, на базе которой можно собирать криптовалютные сервисы, предоставляющие клиентам финансовые услуги в разных конфигурациях. Это модульная система, содержащая в себе компоненты крипто банка.
Эту платформу мы используем для создания кастомных проектов на заказ для наших клиентов, а также для запуска собственных проектов совместно с бизнес партнерами.

Сайт продукта: whiteflo.com

Результат

WhiteFlo представляет собой набор модулей на Symfony 5, многократно используемых в различных проектах.

whiteflo_B2B

Модули

В настоящий момент имеется более 20 модулей, реализующих функциональность продукта на различных уровнях:

  • Работа с валютами и курсами
  • Работа с пользователями и ролями
  • Бизнес-функции: криптокошелька, криптопроцессинга, криптообменника, криптоэквайринга
  • API для мерчанта; фронтенда и интеграции в стороннюю систему
  • Веб-кабинеты: мерчанта, пользователя, администратора, онбординга
  • Веб-интерфейс и виджеты для оплаты
  • Интеграция: с биржами, с эквайрингами, с платежными системами, с блокчейнами, с KYC провайдерами
  • Управление настройками
  • Редактирование текстов
  • Общие компоненты и абстракции

Зависимости между модулями организованы таким образом, чтобы можно было подключить нужные части функциональности на нужном уровне, а остальное реализовать самостоятельно. Например, подключить только бизнес-логику криптопроцессинга и api, затем интегрировать в свой продукт.

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

Высокоуровневый код и бизнес-логика покрыты тестами.

Масштабирование

Большинство команд и событий могут обрабатываться в асинхронном режиме. Для высоконагруженной распределенной системы можно использовать любой message broker, который поддерживается Symfony Messenger, например, Amazon SQS, RabbitMQ. В стандартной поставке обычно используется очередь в СУБД, это упрощает архитектуру и снижает затраты.

Запуск проекта

Для запуска конкретного проекта необходимые модули включаются в проект, построенный обычно как веб-приложение с монолитной архитектурой, то есть один проект Symfony на публичную часть сайта, клиентскую часть, админку и REST API.

Создание нового проекта состоит из следующих шагов:

  • 1) в существующий или новый пустой проект на Symfony 5 подключаются необходимые модули через зависимости Сomposer;
  • 2) добавляется конфигурация модулей;
  • 3) выполняется миграция схемы и данных;
  • 4) проверяется функциональность, чтобы убедиться, что проект работоспособен.

Стек

  • PHP 7.4
  • MariaDB10/MySQL8
  • Redis 7
  • Symfony framework 5
  • Sonata admin 4
  • Vue.js 3
  • Docker
  • Интеграция с блокчейнами производится через API блок-экплореров и Infura.

Deployment

Проекты на модулях CryptoPSP мы деплоим на AWS. Создаем площадку через Terraform. На Gitlab CI происходит сборка проекта в docker images, проводится автоматическое тестирование. Нужная версия по команде деплоится на площадку, применяется blue/green deployment.

Use cases

4-1product

С подробным описанием бизнес процессов и use cases продукта можно ознакомиться на сайте продукта: whiteflo.com