Lewati ke konten utama
menjadi.dev
Chapter 10.5 Architecture Spesialisasi

Distributed Tracing & Monitoring

Observability dalam sistem terdistribusi

Tujuan Pembelajaran

  • Memahami distributed tracing
  • Bisa menggunakan Jaeger atau Zipkin

Analogi

Diagram

      Detective Story:

Request masuk → Service A → Service B → Service C → DB

Tracing = CCTV di setiap pintu
Bisa lihat kemana request pergi dan berapa lama
    

Distributed tracing seperti CCTV — melacak request melewati service-service

Penjelasan Konsep

Observability

Observability adalah kemampuan untuk memahami apa yang terjadi di sistem dari luar. Tiga pilar observability:

  1. Logging — Catatan event per service. Aggregated dengan ELK stack atau Grafana Loki.
  2. Metrics — Data numerik: request rate, latency, error rate, CPU/memory.
  3. Tracing — Melacak satu request melewati banyak service. Trace terdiri dari spans.

Distributed Tracing Tools

  • Jaeger — Open source, inspired by Google’s Dapper.
  • Zipkin — Open source dari Twitter.
  • Tempo — Dari Grafana Labs, lightweight.

OpenTelemetry

OpenTelemetry adalah standar observability universal. Instrumentasi sekali, bisa export ke berbagai backend (Jaeger, Zipkin, Prometheus, dll).

Inti yang Perlu Dipahami

Bagian ini berfokus pada memahami distributed tracing., dan bisa menggunakan Jaeger atau Zipkin. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.

Saat membaca Distributed Tracing & Monitoring, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.

Cara Membayangkannya

Distributed tracing seperti CCTV — melacak request melewati service-service. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.

Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.

Saat Melihat Contoh Kode

Contoh kode pada chapter ini memakai bahasa typescript. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. OpenTelemetry otomatis instrumentasi. Trace tunjukkan waktu tiap service.

Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.

Konteks dalam Perjalanan Belajar

Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.

Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.

Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.

Contoh Kode

typescript
// OPENTELEMETRY IN NODE.JS
import { NodeSDK } from '@opentelemetry/sdk-node';
import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';

const sdk = new NodeSDK({
  traceExporter: new JaegerExporter({
    endpoint: 'http://jaeger:14268/api/traces'
  }),
  instrumentations: [getNodeAutoInstrumentations()]
});

sdk.start();

// TRACE EXAMPLE
// GET /orders → 45ms total
//   ├── gateway       : 2ms
//   ├── auth-service  : 8ms
//   ├── order-service : 25ms
//   │     ├── db-query: 15ms
//   │     └── cache   : 5ms
//   └── notification  : 10ms

Penjelasan Kode

OpenTelemetry otomatis instrumentasi. Trace tunjukkan waktu tiap service.

Prompt AI

Apa bedanya logging, metrics, dan tracing dalam observability?

Pertanyaan Reflektif

Setup distributed tracing dengan Jaeger atau Zipkin untuk 2 service.