Стек Технологий
Frontend
- React 18
- Next.js 14
- TanStack React Query 5
- Greensight GDS 4 и
@ensi-platform/core-components - Storybook 7
- Emotion (CSS-in-JS)
- TypeScript 5
- Yarn 1
- Node.js 22
Backend
- PHP 8.4
- Laravel 11
- Laravel Octane + Swoole
- Go 1.25+
- Goravel 1.18
- PostgreSQL 17 (+ PostGIS)
- Redis 8
- Elasticsearch 8
- Apache Kafka 4
- OpenAPI Specification + Stoplight; генерация кода: openapi-generator (PHP) и ensi-gog (Go)
Инфраструктура
- Kubernetes + Helm
- Jenkins/GitlabCI
- Prometheus + Grafana
- Elasticsearch + Kibana, Vector
Как это складывается вместе
Ensi устроена как набор относительно независимых backend-сервисов и тонких GUI/BFF-слоёв над ними. Пользовательские и административные интерфейсы живут на Next.js и React.
Сами сервисы пишутся на PHP (Laravel + Octane/Swoole) или на Go (Goravel). Выбор языка зависит от сервиса, но модель одна: контракт API описывается в OpenAPI, по нему генерируются серверный каркас и клиенты к соседям, а устойчивое состояние лежит в PostgreSQL. Redis нужен для кешей и внутренних очередей задач внутри сервиса. Для быстрого и гибкого поиска по каталогу товаров используется в Elasticsearch. События между сервисами — изменение сущностей, команды на пересчёт — идут через Kafka.
В проде сервисы работают в k8s. Jenkins или GitlabCI собирает образ, гоняет тесты и вызывает helm upgrade для перезапуска приложения с обновлённым образом и настройками.