#Project Overview
Express Open Telemetry adalah sebuah aplikasi contoh berbasis Node.js (Express) yang di-instrument menggunakan OpenTelemetry untuk mendemonstrasikan distributed tracing pada sistem backend modern. Project ini mengintegrasikan OpenTelemetry SDK, Grafana Tempo, Grafana, dan PostgreSQL, yang seluruhnya dijalankan dalam lingkungan Docker Compose.
Fokus utama project ini adalah observability, khususnya distributed tracing, yang merupakan salah satu dari tiga pilar utama observability:
- Metrics
- Logs
- Traces
#Latar Belakang & Motivasi
Project ini dibuat berangkat dari rasa penasaran saya terhadap praktik observability modern, terutama bagaimana distributed tracing bekerja pada sistem backend di dunia nyata.
Sebelum mengerjakan project ini, saya sudah memiliki pengalaman praktik dalam mengimplementasikan dua pilar observability lainnya:
#Metrics
-
Menggunakan berbagai exporter (Node, MySQL, PostgreSQL, dan lainnya)
-
Prometheus sebagai metrics server
-
Melakukan riset dan implementasi Thanos untuk:
- Clustering Prometheus
- High availability (HA)
- Load balancing antar instance Prometheus
- Long-term storage menggunakan backend S3-compatible (MinIO)
#Logs
- Menggunakan Grafana Alloy sebagai agent
- Centralized logging menggunakan Grafana Loki
- Mengimplementasikan mekanisme remote write ke centralized log server
Namun, saya belum mengeksplorasi trace-based observability secara mendalam. Hal ini memunculkan pertanyaan utama:
Bagaimana cara kerja distributed tracing secara end-to-end, mulai dari instrumentation di aplikasi hingga visualisasi trace di Grafana?
#Problem Statement
Melalui project ini, saya bertujuan untuk memahami:
- Bagaimana OpenTelemetry instrumentation bekerja pada aplikasi Express.js
- Bagaimana data trace dikumpulkan dari aplikasi
- Bagaimana trace dikirim dari agent ke tracing backend
- Bagaimana Trace ID dihasilkan dan dipropagasikan antar request
- Bagaimana melakukan query trace menggunakan TraceQL di Grafana Tempo
- Bagaimana distributed tracing membantu proses analisis performa dan debugging
#Pendekatan Solusi
Untuk menjawab pertanyaan-pertanyaan tersebut, saya membangun sebuah pipeline distributed tracing end-to-end dengan pendekatan berikut:
#1. Instrumentasi Aplikasi
-
Meng-instrument aplikasi Express.js menggunakan OpenTelemetry SDK
-
Mengaktifkan manual instrumentation untuk:
- HTTP request
- Query database PostgreSQL
-
Propagasi trace context dilakukan secara manual antar request
#2. Tracing Backend
- Menggunakan Grafana Tempo sebagai tracing backend
- Bertanggung jawab untuk menerima, menyimpan, dan mengelola data trace
- Mendukung query trace yang fleksibel menggunakan TraceQL
#3. Visualisasi & Analisis
-
Grafana berperan sebagai layer visualisasi utama
-
Trace dapat:
- Dicari berdasarkan Trace ID
- Difilter dan dianalisis menggunakan TraceQL
- Divisualisasikan untuk melihat alur request, latency, dan dependensi antar service
#4. Lingkungan Pengembangan Lokal
- Seluruh service dijalankan menggunakan Docker Compose
- Memudahkan proses setup, testing, dan eksplorasi distributed tracing secara lokal
#What I Learned
Dari project ini, saya mendapatkan pemahaman praktikal terkait:
-
Konsep dasar distributed tracing
-
Cara kerja OpenTelemetry sebagai standar observability yang bersifat vendor-neutral
-
Alur lengkap data tracing:
Observability Flow -
Peran tracing dalam:
- Debugging masalah latency
- Mengidentifikasi bottleneck performa
- Memahami alur request antar service
-
Penggunaan TraceQL untuk melakukan query dan analisis trace secara efisien
#Mengapa Project Ini Penting
Project ini bukan sekadar contoh implementasi, tetapi merupakan eksplorasi praktis terhadap distributed tracing pada sistem backend.
Dengan distributed tracing:
- Proses debugging tidak lagi hanya bergantung pada log
- Root cause analysis menjadi lebih cepat dan akurat
- Dependensi antar service dapat dipahami secara visual
#Kesimpulan
Express Open Telemetry merepresentasikan eksplorasi langsung saya terhadap distributed tracing dan tooling observability modern. Project ini melengkapi pemahaman saya terhadap tiga pilar observability serta memperkuat skill saya di bidang Backend Engineering, DevOps, dan SRE.



