Skip to content

15 Go microservices + the Python triage agent powering Olly.

Updated Jul 12, 2026

Services

Every Olly capability lives behind a thin, JWT-protected REST API. Each service owns its own PostgreSQL schema, publishes domain events to Kafka via the outbox pattern, and emits OpenTelemetry traces. The Go services share a single binary skeleton (handler / repo / outbox / migrations); the triage agent is Python (PydanticAI) but follows the same external contract.


Cross-cutting

Capabilities that don't live in a single service - they're libraries or planned components consumed across the platform.

Common patterns

Every service follows the same startup sequence and internal layout. See Architecture → Service Structure for full details.

  • Authentication. All externally accessible routes require a Keycloak Bearer token validated against the JWKS endpoint. Routes prefixed /internal/ bypass JWT and are protected at the APISIX gateway level.
  • Kafka / outbox. Services publish domain events transactionally via an outbox table. A background poller reads undelivered rows, publishes to Kafka, then deletes them. This guarantees at-least-once delivery without distributed transactions.
  • Migrations. Each service runs Goose SQL migrations on startup against its dedicated database schema.
  • Observability. All services emit OpenTelemetry traces and structured JSON logs. Health endpoints at /healthz (liveness) and /readyz (readiness + DB ping) are standard.

Olly Health Insurance Platform