1.4 KiB
1.4 KiB
Technical Design: Service Mesh Interop
Architecture
Client --Bearer token--> Chat-svc --POST /validate--> Auth-svc
|
+--Enqueue(chat_task)--> PostgreSQL jobs table --> Worker-svc
Component Changes
1. Auth-svc: /validate Endpoint
- New handler:
handlers/validate.go- accepts POST with Bearer token, validates via existing JWT validator, returns user info - Route:
POST /api/auth-svc/validate(public endpoint, token is in the request body/header) - OpenAPI: Document in
spec.go
2. Chat-svc: Auth Client + Queue Producer
- New adapter:
internal/adapter/authclient/client.go- wrapssvc.Clientto call auth-svc /validate - New port:
internal/port/auth.go-AuthValidatorinterface - New adapter:
internal/adapter/jobqueue/producer.go- wrapsqueue.Producer - New port:
internal/port/queue.go-TaskProducerinterface - Wire into routes: Protected routes validate via auth-svc, handlers can enqueue tasks
3. Worker-svc: Chat Task Handler
- New handler:
internal/handlers/chat_task.go- processeschat_taskjobs - Register: In
main.go, register the handler
Patterns
- Use
pkg/svc.NewClient("auth-svc")for service discovery - Use
pkg/queue.Producerinterface for enqueuing - Follow hexagonal architecture (ports + adapters)
- All handlers return
error, wrapped withapp.Wrap()