Aplikasi berbasis microservices membagi fungsi sistem ke dalam beberapa layanan yang saling berkomunikasi. Arsitektur ini memudahkan pengembangan aplikasi, tetapi juga membuat proses pencarian masalah lebih kompleks. Ketika satu request mengalami keterlambatan, penyebabnya bisa berasal dari layanan pemesanan, pembayaran, database, atau komunikasi antar layanan.
Distributed tracing membantu Anda menelusuri perjalanan request tersebut dari awal hingga selesai. Dengan melihat urutan aktivitas dan durasi pemrosesan setiap layanan, Anda dapat menemukan sumber masalah dengan lebih terarah.
Apa Itu Distributed Tracing?
Distributed tracing adalah teknik observabilitas untuk melacak perjalanan satu request melalui beberapa layanan dalam sebuah sistem terdistribusi. Teknik ini merekam aktivitas yang terjadi selama pemrosesan request sehingga pengembang dapat memahami hubungan antar layanan dan mengetahui bagian sistem yang mengalami kendala.
Pada arsitektur microservices, satu tindakan pengguna dapat memicu beberapa proses sekaligus. Contohnya, ketika pengguna melakukan checkout, aplikasi mungkin perlu memanggil layanan pemesanan, memeriksa persediaan barang, memproses pembayaran, dan menyimpan data ke database.
Distributed tracing menggunakan dua konsep utama, yaitu trace dan span. Trace merupakan rangkaian aktivitas yang berkaitan dengan satu request, sedangkan span mencatat satu unit pekerjaan dalam rangkaian tersebut. Sebagai contoh, satu trace checkout dapat terdiri dari beberapa span yang mencatat pemanggilan layanan pemesanan, pemeriksaan stok, pemrosesan pembayaran, hingga penyimpanan transaksi.
Setiap layanan dalam microservices dapat memiliki log dan metrik masing-masing. Namun, data tersebut belum tentu langsung menunjukkan hubungan antara satu request dan aktivitas di layanan lain. Distributed tracing menghubungkan aktivitas yang berkaitan sehingga pengembang dapat menelusuri alur request, membandingkan durasi pemrosesan, dan mempersempit sumber masalah tanpa harus memeriksa setiap layanan secara terpisah.
Baca juga: Mengenal Container dan Cara Kerja – IDCloudHost
Cara Melacak Request pada Microservices
Untuk melacak request, Anda perlu mengumpulkan data tracing dari layanan yang terlibat, kemudian menelusuri urutan aktivitasnya. Proses ini dapat dilakukan melalui platform tracing seperti Jaeger dengan data yang dikumpulkan menggunakan OpenTelemetry. Berikut langkah-langkah yang dapat diterapkan.
1. Identifikasi Trace dari Request Bermasalah
Langkah pertama adalah menemukan trace yang berkaitan dengan request yang mengalami keterlambatan atau kegagalan. Anda dapat memulainya dari informasi waktu kejadian, endpoint yang diakses, status error, atau trace ID jika tersedia.
Trace ID merupakan identitas unik yang digunakan untuk menghubungkan span dalam satu rangkaian trace. Dengan identitas ini, Anda dapat mencari aktivitas dari request yang sama meskipun pemrosesannya melibatkan beberapa layanan.
Misalnya, pengguna melaporkan bahwa proses checkout membutuhkan waktu lebih lama dari biasanya. Anda dapat mencari trace berdasarkan waktu transaksi atau informasi request yang tercatat, kemudian membuka detail trace untuk memeriksa aktivitas yang berlangsung. Pastikan setiap layanan meneruskan konteks tracing dengan benar agar aktivitas dari request yang sama tetap terhubung.
2. Telusuri Urutan Pemanggilan Antar Service
Setelah menemukan trace yang sesuai, periksa urutan pemanggilan layanan. Tampilan trace biasanya memperlihatkan hubungan antara span sehingga Anda dapat mengetahui layanan mana yang memanggil layanan lain dan bagaimana request bergerak di dalam sistem. Sebagai contoh, alur checkout dapat melibatkan layanan berikut:
- Layanan pemesanan menerima request checkout dari pengguna.
- Layanan inventaris memeriksa ketersediaan barang.
- Layanan pembayaran memproses transaksi.
- Layanan pemesanan menyimpan status transaksi dan mengirimkan respons.
Urutan sebenarnya bergantung pada arsitektur aplikasi. Beberapa layanan juga dapat bekerja secara paralel atau menggunakan komunikasi asinkron. Dengan memahami alur tersebut, Anda dapat menentukan bagian sistem yang perlu diperiksa lebih lanjut.
Jika layanan pemesanan menunggu respons dari layanan pembayaran, misalnya, pemeriksaan dapat difokuskan pada pemrosesan pembayaran dan komunikasi di antara keduanya.
3. Periksa Durasi Setiap Span
Durasi span membantu Anda mengetahui berapa lama setiap aktivitas berlangsung. Bandingkan durasi antar span untuk menemukan proses yang menyumbang latensi paling besar.
Misalnya, sebuah request checkout membutuhkan waktu total 2,5 detik. Data tracing menunjukkan bahwa layanan inventaris memproses request selama 100 milidetik, layanan pembayaran membutuhkan 1,8 detik, dan aktivitas lainnya menghabiskan waktu yang lebih singkat.
Dalam kondisi tersebut, layanan pembayaran layak diperiksa lebih dahulu karena memiliki durasi pemrosesan yang paling besar. Namun, durasi panjang tidak selalu berarti layanan tersebut mengalami kesalahan. Anda tetap perlu memeriksa detail pemrosesan, panggilan eksternal, dan metrik pendukung untuk menemukan penyebabnya.
Perhatikan pula perbedaan antara durasi total request dan durasi setiap span. Pada proses paralel atau span yang saling bertumpang tindih, durasi span tidak bisa dijumlahkan begitu saja untuk memperoleh waktu respons keseluruhan.
4. Identifikasi Error dan Sumber Masalah
Selain durasi, periksa status dan informasi error yang tercatat pada span. Data tersebut dapat menunjukkan kegagalan pemanggilan layanan, timeout, atau masalah komunikasi antar komponen.
Contohnya, trace checkout menunjukkan bahwa layanan pemesanan berhasil menerima request, tetapi pemanggilan ke layanan pembayaran berakhir dengan timeout. Informasi ini membantu mempersempit pemeriksaan ke layanan pembayaran, koneksi jaringan, atau konfigurasi batas waktu komunikasi.
Jika data tracing belum cukup menjelaskan penyebabnya, lanjutkan pemeriksaan menggunakan log aplikasi dan metrik sistem. Distributed tracing menunjukkan lokasi dan urutan aktivitas yang bermasalah, sedangkan log dapat memberikan detail kejadian dan metrik membantu melihat kondisi sistem secara lebih luas.
Dengan menggabungkan ketiga sumber informasi tersebut, Anda dapat menentukan penyebab masalah dengan lebih akurat sebelum melakukan perbaikan.
Baca juga: Apa Itu Load Balancing? Metode dan Manfaatnya – IDCloudHost
Manfaat Distributed Tracing untuk Microservices

Penerapan distributed tracing memberikan beberapa manfaat bagi pengelolaan aplikasi microservices, terutama ketika jumlah layanan dan kompleksitas komunikasi terus bertambah.
1. Menemukan Bottleneck Performa
Distributed tracing membantu menemukan layanan atau aktivitas yang paling banyak menyumbang latensi. Informasi ini memudahkan tim menentukan bagian yang perlu dioptimalkan, seperti query database, pemanggilan API eksternal, atau proses internal yang memerlukan waktu terlalu lama.
Dengan demikian, optimasi dapat difokuskan pada sumber keterlambatan yang teridentifikasi, bukan berdasarkan perkiraan semata.
2. Mempercepat Troubleshooting
Ketika aplikasi mengalami error, tim pengembang dapat menggunakan trace untuk mengikuti perjalanan request dan melihat titik terjadinya kegagalan. Cara ini membantu mempersempit area pemeriksaan, terutama ketika satu request melewati banyak layanan.
Meskipun demikian, tracing tidak selalu memberikan penyebab akhir secara otomatis. Pengembang tetap perlu menganalisis data trace bersama log, metrik, dan informasi konfigurasi sistem.
3. Memahami Ketergantungan Antar Service
Trace memperlihatkan hubungan pemanggilan antar service sehingga tim dapat memahami komponen yang terlibat dalam suatu proses bisnis. Informasi ini berguna saat mengembangkan fitur baru, mengevaluasi perubahan arsitektur, atau mencari dampak gangguan pada layanan yang saling bergantung.
Tools Distributed Tracing yang Bisa Digunakan
Ada beberapa tools yang dapat membantu Anda mengumpulkan dan menganalisis data tracing. Pemilihannya perlu disesuaikan dengan bahasa pemrograman, arsitektur aplikasi, serta kebutuhan pemantauan.
OpenTelemetry
OpenTelemetry merupakan proyek open source yang menyediakan standar dan perangkat untuk menghasilkan, mengumpulkan, serta mengekspor data telemetry, termasuk traces, metrics, dan logs.
OpenTelemetry mendukung instrumentasi aplikasi melalui API, SDK, dan berbagai integrasi. Data tracing yang dihasilkan dapat diteruskan ke backend observabilitas untuk disimpan dan dianalisis. Dengan pendekatan ini, Anda dapat membangun instrumentasi tracing tanpa harus bergantung pada satu platform analisis tertentu.]
Jaeger
Jaeger merupakan platform open source untuk distributed tracing. Tool ini membantu mengumpulkan, menyimpan, menampilkan, dan menganalisis trace dari aplikasi terdistribusi.
Melalui antarmuka Jaeger, Anda dapat mencari trace, melihat urutan span, membandingkan durasi aktivitas, dan memeriksa informasi error yang tersedia. Kemampuan tersebut membantu pengembang menelusuri request dan mengidentifikasi bagian sistem yang membutuhkan pemeriksaan lebih lanjut.
OpenTelemetry dan Jaeger dapat digunakan bersama: OpenTelemetry membantu menghasilkan dan mengekspor data tracing, sedangkan Jaeger menyediakan fasilitas untuk menyimpan serta menganalisis trace sesuai konfigurasi penerapannya.
Hal yang Perlu Diperhatikan saat Menerapkan Distributed Tracing
Agar distributed tracing memberikan informasi yang berguna, penerapannya perlu memperhatikan beberapa aspek teknis dan operasional.
1. Instrumentasi dan Context Propagation
Instrumentasi diperlukan agar aplikasi dapat merekam aktivitas yang relevan. Anda dapat menggunakan instrumentasi otomatis atau menambahkan instrumentasi manual pada proses tertentu yang membutuhkan detail lebih lanjut.
Selain itu, context propagation memastikan informasi tracing diteruskan ketika request berpindah antar layanan. Jika konteks tidak diteruskan dengan benar, trace dapat terputus dan menyulitkan analisis.
2. Sampling, Privasi, dan Biaya Penyimpanan
Aplikasi dengan trafik tinggi dapat menghasilkan data trace dalam jumlah besar. Sampling membantu mengatur jumlah trace yang dikumpulkan agar kebutuhan penyimpanan dan pemrosesan tetap terkendali.
Namun, konfigurasi sampling perlu mempertimbangkan kebutuhan investigasi. Jika jumlah trace yang disimpan terlalu sedikit, aktivitas yang relevan saat terjadi gangguan mungkin tidak tersedia.
Perhatikan juga informasi yang dicatat dalam span. Hindari menyimpan data sensitif, seperti kredensial, token autentikasi, atau informasi pribadi yang tidak diperlukan. Tetapkan kebijakan retensi dan akses data agar tracing tetap aman serta efisien.
Baca juga: Apa Itu High Availability dan Kenapa Penting untuk Website Bisnis? – IDCloudHost
Penutup
Distributed tracing membantu Anda melacak perjalanan request pada microservices dengan menghubungkan aktivitas dari berbagai layanan dalam satu trace. Dengan memeriksa urutan pemanggilan, durasi span, dan informasi error, pengembang dapat mempersempit sumber keterlambatan maupun kegagalan aplikasi.
Agar penerapannya efektif, pastikan instrumentasi dan context propagation berjalan dengan benar serta gunakan data tracing bersama log dan metrik. Jika membutuhkan infrastruktur untuk menjalankan aplikasi dan tools observabilitas pendukung, Server VPS NVMe IDCloudHost dapat dipertimbangkan sesuai kebutuhan komputasi dan penyimpanan aplikasi Anda.