Implementasi Distributed Tracing dan Observability pada Microservices Menggunakan OpenTelemetry
1. Konteks Industri & Analisis Akar Masalah
Dalam lanskap arsitektur perangkat lunak modern, pergeseran dari monolit monolitik ke ekosistem microservices mendistribusikan beban komputasi lintas kontainer, server, bahkan zona ketersediaan (availability zones) yang berbeda. Meskipun transisi ini memberikan skalabilitas dan independensi deployment yang luar biasa, kompleksitas operasional melonjak secara eksponensial. Ketika sebuah permintaan HTTP dari klien masuk melalui lapisan Edge Caching (seperti Cloudflare) dan Web Server (seperti Nginx), permintaan tersebut melewati WAF, memicu otentikasi JWT, memanggil layanan backend berbasis Go, mengambil data dari Redis caching layer, berinteraksi dengan basis data MySQL/MariaDB, serta melepaskan pesan ke antrean (Queue) melalui Supervisor.
Masalah krusial muncul ketika latensi membengkak atau terjadi kegagalan (error 500). Pada arsitektur tradisional, pencatatan log (logging) berbasis teks terisolasi di setiap node layanan. SRE dan Backend Developer harus menyatukan timestamp secara manual dari berbagai file log Nginx, PHP-FPM, Go service, hingga database query. Proses ini memakan waktu berjam-jam bahkan berhari-hari (MTTR - Mean Time to Resolution yang tinggi), sementara akar masalah (root cause) sering kali tersembunyi di balik antarmuka jaringan internal.
Sebelum penerapan Distributed Tracing berbasis standar industri seperti OpenTelemetry (OTel), investigasi masalah performa bersifat reaktif dan spekulatif. Tim sering kali menebak-nebak layanan mana yang mengalami bottleneck. Setelah penerapan OpenTelemetry yang dikombinasikan dengan OpenTelemetry Collector dan Grafana Tempo, setiap permintaan diberi pengenal unik (Trace ID) saat menyentuh edge, dan pengenal ini dipropagasi melintasi batas protokol jaringan (HTTP Headers, gRPC metadata, pesan AMQP). Hasilnya adalah visibilitas end-to-end secara real-time, di mana metrik latensi, jejak eksekusi (spans), dan log berkorelasi penuh dalam satu papan instrumen terpadu.