Шина интеграции 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.

Каждый разработчик может принимать участие в разработке различных сервисов, в зависимости от текущих приоритетов. При разработке новых сервисов у нас нет жестких ограничений на использование определенных технологий и библиотек, таким образом разработчик может экспериментировать и пробовать новые подходы и технологии, соответственно прокачивая свои знания и навыки.