Decision record
The applications speak OTLP; the platform chooses the backend
I instrumented the Go services to emit metrics and traces through OTLP to the OpenTelemetry Collector instead of coupling application code directly to Prometheus or Jaeger. The Collector exposes metrics for Prometheus and forwards traces to Jaeger, while Fluent Bit keeps Kubernetes log collection on a separate path into Elasticsearch. Elasticsearch also persists Jaeger traces beyond the lifetime of the pods that produced them. That boundary makes an observability backend replaceable through platform configuration rather than application changes, but it makes the Collector and Elasticsearch shared dependencies that need high availability, capacity planning, retention controls and security before production.