Services runbook (gateway + gRPC)
Каноническая модель
- Внешний ingress: только
gateway (http://127.0.0.1:3000).
- Frontend (
microfrontend/host) ходит только в /api (Vite proxy -> gateway).
- JWT проверяется только на gateway.
- Вызовы gateway -> сервисы идут только по gRPC, с
x-service-api-key и контекстными metadata.
Актуальный набор сервисов и порты
| Сервис |
HTTP (health/admin) |
gRPC |
Статус интеграции в gateway |
| gateway |
3000 |
- |
ingress |
| auth |
3001 |
5001 |
подключен |
| control |
3002 |
5002 |
подключен |
| contact |
3003 |
5003 |
подключен |
| company |
3004 |
5004 |
подключен |
| pipe |
3005 |
5005 |
подключен |
| orders |
3006 |
5006 |
подключен |
| product |
3007 |
5007 |
подключен |
| activity |
3008 |
5008 |
подключен |
| platform |
3009 |
5009 |
подключен |
| documents |
3010 |
5010 |
подключен |
| reports |
3011 |
5011 |
подключен |
| automation |
3012 |
5012 |
подключен |
| search |
3013 |
5013 |
подключен |
| audit |
3014 |
5014 |
подключен |
| notification |
3015 |
5015 |
подключен |
| billing |
3016 |
5016 |
подключен |
Обязательные переменные окружения
| Где |
Переменные |
| gateway |
GATEWAY_SERVICE_API_KEY, GATEWAY_API_KEY_ID, JWT_SECRET, AUTH_GRPC_URL..PLATFORM_GRPC_URL, DATABASE_URL |
| доменные сервисы |
AUTH_GRPC_URL для валидации service API key через ApiKeyGrpc.ValidateServiceApiKey |
| новые сервисы (B-пакет) |
собственные GRPC_*_PORT/HTTP_PORT, storage/queue vars по домену |
Локальный порядок запуска
cd fairflow/services
- Infra:
npm run start:infra
- Seed gateway key: задать
SEED_GATEWAY_SERVICE_API_KEY, выполнить npm run db:seed:auth, скопировать GATEWAY_SERVICE_API_KEY и GATEWAY_API_KEY_ID в gateway/.env
- DB (если нужно):
npm run db:provision
- Core chain:
auth -> control -> contact -> company -> pipe -> orders -> product -> activity -> platform -> gateway
- Дополнительно поднимать
documents/reports/automation/search/audit/notification/billing по необходимости
JWT_SECRET должен совпадать как минимум между auth и gateway.
Reflection и proto
GRPC_REFLECTION_ENABLED=true включает reflection на сервисе (только dev).
- В production reflection держать выключенным.
- После изменений в
.proto: npm run proto:descriptors.
Smoke-check
GET /healthz на gateway и на HTTP health-портах сервисов -> 200.
- Прямые бизнес-запросы в сервисы (мимо gateway) не используются клиентом.
- В gateway логах видны outbound gRPC вызовы с
x-request-id/traceparent.
Примечание по migration-state
crm-grpc как агрегирующий сервис выведен из канонического runbook.
- Gateway уже содержит gRPC-клиентов и REST BFF endpoints для
documents, reports, automation, search, audit, notification, billing.