Обеспечивает связывание и взаимодействие всех элементов платформы. Предоставляет множество сервисов работающих в едином пространстве авторизации, едином формате обмена данными и с единым языком запросов. Реализована на сервисной и микросервисной архитектуре.
Шина интеграции AUTO3N
Решает следующие задачи:
- Управление организационной структурой
- Сервис подписки и уведомлений об изменениях бизнес объектов в различных системах
- Управление прайс-листами, системой загрузки прайс-листов, наценками и расчетом доставки
- Управление заказами и контрактами, их условиями, платежами и поставками
- Расчет параметров доставки «последней мили», предоставление адресно-справочной информации
- Управление информацией о клиентах, их активности, запросах и результатах их обработки, «гаражами» пользователей
- Обеспечение интеграции с множеством внешних сервисов платежей, заказов, каталогов
- Обеспечение идентификации товаров, предоставление каталогизированной информации о товарах с развитыми средствами полнотекстового и контекстного поиска
- Предоставление внутренних административных интерфейсов
- Аналитические задачи
Активно использует системы кластеризации, оркестрации и виртуализации (Docker, Docker Compose, Kubernetes).
Реализована но основе следующих технологий:
- Java, Java Enterprise Edition, Spring
- Kotlin
- Spring.io, WildFly
- PHP/Symphony/Doctrine
- Angular, JavaScript
- Swagger
- Openresty/Lua
- Postgres, MongoDB, Elasticsearch, ClickHouse
- RabbitMQ, Tarantool
Шина интеграции представляет собой набор сервисов для обеспечения взаимодействия всех систем платформы «Авто3Н»: интернет магазин, мобильные приложения, 1С, CRM и различные внешние сервисы. Для взаимодействия с шиной используется REST API с унифицированным языком запросов.
Все сервисы шины работают в едином пространстве авторизации, за авторизацию отвечает сервис интеграции, при этом поддерживается авторизация с использованием как HTTP Basic Auth, так и auth token. Основные сервисы шины реализованы под управлением серверов WildFly (ранее JBoss Application Server) на Java EE 8. Все новые сервисы разрабатываются по микросервисной архитектуре на основе SpringBoot и Java(Java SE 11-16)/Kotlin, с использованием контейнерной виртуализации — Docker, Docker Copmose.
В качестве основной БД используется PostgreSQL и соответственно Hibernate O/R mapping для работы с сущностями и Java Persistence Query Language (JPQL) для запросов, также допустимо использование стандартного SQL при необходимости. Для различных вспомогательных целей используются также нереляционные базы данных — MongoDB и ClickHouse.
Для оперативной синхронизации данных и оповещения всех сервисов «Авто3Н» о различных событиях, используется обмен сообщениями на основе RabbitMQ (программный брокер сообщений на основе стандарта AMQP).
Для обеспечения масштабирования и высокой доступности (high availability) все сервисы шины изначально разрабатываются с возможностью работы в кластере. При этом маршрутизация запросов между нодами кластера осуществляется при помощи OpenResty (nginx), что позволяет легко добавлять или отключать ноды, а также балансировать нагрузку.
Административные интерфейсы разработаны двух языках: на PHP с использованием Symphony/Doctrine, Angular с Java backend для разработки всего нового функционала административного интерфейса.
Для полнотекстового поиска товаров и предложений используется Elasticsearch. Для тестирования разрабатываемого кода (модульные и интеграционные тесты) используется Junit framework. В качестве реестра для Docker-контейнеров используется Harbor.
В качестве системы управления проектами и релизами (постановка задач, отметки о затраченном времени, собирание задач в релизы, и т.д.) используется Jira.
Для удобства разработки на Java/Kotlin используется IntelliJ IDEA (компания оплачивает лицензии для разработчиков).
Для комфортной разработки в нашем распоряжении есть необходимое кол-во тестовых комплексов, имитирующих продакшен. В качестве системы контроля версий используем git, а для удобства у нас развёрнут локальный gitLab. Документация на сервисы шины обмена данных (описание REST API) предоставляется в виде Swagger (OpenAPI) документации и/или страницы wiki в Confluence.
Каждый разработчик может принимать участие в разработке различных сервисов, в зависимости от текущих приоритетов. При разработке новых сервисов у нас нет жестких ограничений на использование определенных технологий и библиотек, таким образом разработчик может экспериментировать и пробовать новые подходы и технологии, соответственно прокачивая свои знания и навыки.