WhiteFlo - криптопроцессинг и универсальная платформа для операций с криптовалютой
Задача
AXIOMA создает и развивает свой продукт – крипто процессинг, который поставляет в виде коробочного продукта.
Так же этот продукт является платформой, на базе которой можно собирать криптовалютные сервисы, предоставляющие клиентам финансовые услуги в разных конфигурациях. Это модульная система, содержащая в себе компоненты крипто банка.
Эту платформу мы используем для создания кастомных проектов на заказ для наших клиентов, а также для запуска собственных проектов совместно с бизнес партнерами.
Сайт продукта: whiteflo.com
Результат
WhiteFlo представляет собой набор модулей на Symfony 5, многократно используемых в различных проектах.
<img-group>
Modules
В настоящий момент имеется более 20 модулей, реализующих функциональность продукта на различных уровнях:
- Работа с валютами и курсами
- Работа с пользователями и ролями
- Бизнес-функции: криптокошелька, криптопроцессинга, криптообменника, криптоэквайринга
- API для мерчанта; фронтенда и интеграции в стороннюю систему
- Веб-кабинеты: мерчанта, пользователя, администратора, онбординга
- Веб-интерфейс и виджеты для оплаты
- Интеграция: с биржами, с эквайрингами, с платежными системами, с блокчейнами, с KYC провайдерами
- Управление настройками
- Редактирование текстов
- Общие компоненты и абстракции
Зависимости между модулями организованы таким образом, чтобы можно было подключить нужные части функциональности на нужном уровне, а остальное реализовать самостоятельно. Например, подключить только бизнес-логику криптопроцессинга и api, затем интегрировать в свой продукт.
Можно конфигурировать каждый модуль и переопределять его функциональность различными способами: расширять модель, переопределять любой сервис, делать свои обработчики команд, запросов и событий.
Высокоуровневый код и бизнес-логика покрыты тестами.
Масштабирование
Большинство команд и событий могут обрабатываться в асинхронном режиме. Для высоконагруженной распределенной системы можно использовать любой message broker, который поддерживается Symfony Messenger, например, Amazon SQS, RabbitMQ. В стандартной поставке обычно используется очередь в СУБД, это упрощает архитектуру и снижает затраты.
Запуск проекта
Для запуска конкретного проекта необходимые модули включаются в проект, построенный обычно как веб-приложение с монолитной архитектурой, то есть один проект Symfony на публичную часть сайта, клиентскую часть, админку и REST API.
Создание нового проекта состоит из следующих шагов:
- в существующий или новый пустой проект на Symfony 5 подключаются необходимые модули через зависимости Сomposer;
- добавляется конфигурация модулей;
- выполняется миграция схемы и данных;
- проверяется функциональность, чтобы убедиться, что проект работоспособен.
Стек
- PHP 7.4
- MariaDB10/MySQL8
- Redis 7
- Symfony framework 5
- Sonata admin 4
- Vue.js 3
- Docker
- Integration with blockchains through the API of block explorers and Infura.
Deployment
Проекты на модулях CryptoPSP мы деплоим на AWS. Создаем площадку через Terraform. На Gitlab CI происходит сборка проекта в docker images, проводится автоматическое тестирование. Нужная версия по команде деплоится на площадку, применяется blue/green deployment.
С подробным описанием бизнес процессов и use cases продукта можно ознакомиться на сайте продукта: whiteflo.com