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

Разработка на Go / Goravel

Начните с первого запуска или портирования Laravel. Далее — структура и стиль Go-кода, практические руководства по поиску, изменению данных, HTTP-клиентам и файлам, тесты, фоновые процессы и диагностика.

📄️ HTTP-ответы и ошибки

JSON-операции Go-сервисов Ensi используют общий конверт ответа и хелперы из app/common/http (обычный alias — commonhttp). Статус, полезная нагрузка и ошибки должны соответствовать конкретной операции в resources/openapi/. Для файловых, бинарных и HTML-ответов используйте формат, заданный контрактом операции.

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

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

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

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

📄️ Prometheus-метрики

Go-сервисы Ensi отдают метрики в формате Prometheus. Основные имена HTTP-метрик близки к PHP-сервисам, но типы коллекторов, значения лейблов и набор фоновых метрик различаются. При подключении Go-сервиса проверьте запросы и переменные платформенного дашборда по описанию ниже.

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

Обычный elc start поднимает контейнер с Air, который пересобирает и перезапускает сервис при изменении кода. Для отладки через GoLand создайте отдельную конфигурацию Docker Compose, в которой процесс запускает IDE. Ниже описаны Run/Debug, запуск тестов и возврат к elc start одной кнопкой.