Перейти к основному содержимому

Обзор

📄️ Работа с Kafka

В Go-сервисах Ensi Kafka используется для обмена событиями между сервисами. Типичные сценарии такие: мастер-система опубликовала оффер или изменила бренд, маркетинговый сервис отправил команду пересчитать скидки, ваш сервис должен подхватить изменение и обновить локальный кэш или индекс. Вы либо публикуете сообщение в топик, либо подписываетесь на топик и обрабатываете входящий поток, либо делаете и то и другое.

📄️ Работа с очередями

Очереди нужны, когда работу не стоит выполнять в том же HTTP-запросе или artisan-команде, в которых она возникла. Типичные случаи — долгий пересчёт, пакетная миграция данных из мастер-сервисов, тяжёлое обращение к внешнему API, индексация пачки сущностей. Вы кладёте задачу в очередь и сразу возвращаете управление вызывающему коду; отдельный воркер позже подхватывает задачу и выполняет её в своём процессе.

📄️ Prometheus-метрики

Go-сервисы Ensi отдают метрики производительности в формате Prometheus, в той же идеологии, что и PHP-сервисы на пакетах laravel-metrics / laravel-prometheus. Имена основных HTTP-метрик совместимы с платформенным дашбордом, поэтому один и тот же scrape и те же запросы в Grafana в целом применимы и к Go.

📄️ Логирование

Go-сервисы Ensi пишут логи через штатный Log-фасад Goravel (facades.Log()), а доставку в Elasticsearch и формат документов, совместимый с индексами платформы, обеспечивает адаптер в app/adapters/logging. По смыслу это тот же стек, что и в PHP (каналы, уровни, файлы + централизованный поиск), только без Monolog: каналы описаны в config/logging.go, а custom-драйвер elastic / elastic_access буферизует документы и отправляет их bulk-запросом.

📄️ Настройка GoLand

Обычный elc start поднимает контейнер, внутри которого работает air: он перекомпилирует и перезапускает сервис при изменении кода. В таком режиме удобно жить день за днём, но отладчик GoLand к процессу не подключить. Ниже — как завести отдельные конфигурации Run/Debug через Docker Compose, гонять тесты и при необходимости возвращаться к elc start одной кнопкой.