sp4-v2-1770499323/.sdlc/features/mesh-interop/design.md
rdev-worker 34f37a44b8
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
build: /implement-feature mesh-interop --requirements 'Chat Service must cal...
2026-02-07 21:49:45 +00:00

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 - wraps svc.Client to call auth-svc /validate
  • New port: internal/port/auth.go - AuthValidator interface
  • New adapter: internal/adapter/jobqueue/producer.go - wraps queue.Producer
  • New port: internal/port/queue.go - TaskProducer interface
  • 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 - processes chat_task jobs
  • Register: In main.go, register the handler

Patterns

  • Use pkg/svc.NewClient("auth-svc") for service discovery
  • Use pkg/queue.Producer interface for enqueuing
  • Follow hexagonal architecture (ports + adapters)
  • All handlers return error, wrapped with app.Wrap()