Seri Meningkatkan Observabilitas API (Bagian 3): Tracing

March 19, 2024

Technology

Pendahuluan

Apa Itu Distributed Tracing?

Dalam lanskap arsitektur microservices dan sistem terdistribusi saat ini, satu permintaan sering kali melintasi beberapa layanan, masing-masing berisi berbagai langkah pemrosesan internal. Untuk memastikan operasi sistem yang efisien dan stabil, sangat penting untuk memahami jalur lengkap dan pemrosesan permintaan ini. Kebutuhan ini melahirkan teknologi distributed tracing. Ini memungkinkan kita untuk memahami dengan jelas seluruh perjalanan permintaan dari awal hingga selesai, termasuk setiap layanan yang dilaluinya, waktu pemrosesan setiap layanan, dan terjadinya anomali apa pun.

Proses Menggunakan Tracing dalam API

Awalnya, menerapkan agen tracing atau SDK untuk tracing di titik masuk setiap layanan sangat penting untuk menangkap semua permintaan. Melalui data tracing, kita dapat dengan jelas mengamati waktu pemrosesan permintaan di setiap layanan, sehingga mengidentifikasi kemungkinan hambatan kinerja. Distributed tracing tidak hanya mencatat pemrosesan permintaan normal tetapi juga menangkap setiap pengecualian dan kesalahan yang terjadi selama proses. Dengan memvisualisasikan data distributed tracing, kita dapat secara intuitif memahami aliran permintaan antara layanan dan komponen yang berbeda.

Tracing of API7 Enterprise

Meningkatkan Observabilitas - Distributed Tracing

Mengenai distributed tracing, berikut adalah beberapa metode untuk meningkatkan observabilitas API beserta contoh spesifik:

1. Memilih Alat dan Teknologi Distributed Tracing yang Tepat

Saat memilih alat distributed tracing, pertimbangan termasuk tumpukan teknologi Anda, kebutuhan bisnis, dan kompleksitas pemantauan. Zipkin, SkyWalking, dan OpenTelemetry adalah solusi distributed tracing populer, masing-masing dengan fitur uniknya.

2. Mengintegrasikan Distributed Tracing ke dalam Pengembangan API

Untuk Zipkin dan SkyWalking, integrasi ke dalam pengembangan API dapat dicapai dengan menambahkan dependensi dan konfigurasi yang sesuai. Namun, untuk OpenTelemetry, diperlukan pembuatan dan pengelolaan konteks tracing secara manual menggunakan API-nya.

3. Mengonfigurasi dan Mengoptimalkan Sistem Distributed Tracing

Zipkin, SkyWalking, dan OpenTelemetry semuanya dapat disesuaikan melalui file konfigurasi. Parameter seperti tingkat sampling, konfigurasi penyimpanan backend, dan optimasi transmisi data dapat diatur. Selain itu, menentukan aturan peringatan untuk merespons peristiwa luar biasa dengan cepat sangat penting.

4. Analisis dan Visualisasi Data

Zipkin, SkyWalking, dan OpenTelemetry menyediakan antarmuka visualisasi untuk menampilkan data distributed tracing dan metrik kinerja. Misalnya, di UI Zipkin, data trace spesifik dapat dicari dan dilihat untuk memahami aliran permintaan antara layanan yang berbeda. Dashboard SkyWalking menawarkan gambaran kinerja global dan grafik hubungan panggilan layanan. Data OpenTelemetry dapat diimpor ke berbagai alat visualisasi seperti Grafana untuk membuat dashboard dan grafik kustom.

5. API7 Enterprise Mengintegrasikan Plugin Distributed Tracing

API7 Enterprise mendukung beberapa plugin tracing, termasuk Zipkin, OpenTracing, dan SkyWalking. Plugin tracing ini perlu diikat ke aturan routing atau aturan global. Jika tidak ada persyaratan tingkat sampling, disarankan untuk mengikatnya ke aturan global untuk mencegah kelalaian.

API7 Enterprise Observability Plugins

Analisis Kasus Praktis: Meningkatkan Observabilitas API E-commerce

Selama proses menjelajahi dan membeli produk di platform e-commerce, beberapa panggilan API terlibat. Misalnya, pengguna awalnya memanggil API layanan produk untuk mengambil daftar produk, kemudian memilih produk tertentu dan memanggil API layanan pesanan untuk membuat pesanan, dan akhirnya memanggil API layanan pembayaran untuk menyelesaikan pembayaran.

Dalam skenario ini, terlihat bahwa API layanan pesanan sering mengalami penundaan dan timeout selama periode puncak, mengakibatkan penundaan dan kegagalan yang terlihat selama proses checkout. Untuk mengatasi masalah ini, tim memutuskan untuk memperkenalkan teknologi distributed tracing untuk mendiagnosis hambatan kinerja dan mengoptimalkan sistem.

  1. Memilih Alat Distributed Tracing: Tim memilih SkyWalking sebagai alat distributed tracing karena dukungannya untuk berbagai bahasa, kemudahan integrasi, dan kemampuan visualisasi yang kaya.

  2. Mengintegrasikan SkyWalking: Layanan pesanan dikembangkan dalam Java, dan tim mengintegrasikan Java Agent SkyWalking ke dalam kode layanan pesanan. Ini memungkinkan SkyWalking untuk secara otomatis mengumpulkan data tracing saat API layanan pesanan dipanggil.

  3. Mengonfigurasi SkyWalking: Tim mengonfigurasi penyimpanan backend SkyWalking ke Elasticsearch dan menetapkan tingkat sampling yang sesuai untuk menyeimbangkan tingkat detail data tracing dan biaya penyimpanan.

  4. Mengumpulkan dan Menganalisis Data Tracing: Selama periode puncak, tim mengamati rantai panggilan dan metrik kinerja API layanan pesanan melalui UI SkyWalking. Mereka menemukan bahwa panggilan tertentu ke API layanan inventaris produk memakan waktu lebih lama selama proses pembuatan pesanan, menjadi hambatan kinerja.

  5. Investigasi Mendalam: Tim lebih lanjut memeriksa data tracing detail dari API layanan inventaris produk, termasuk parameter panggilan, hasil kembali, dan informasi pengecualian. Mereka menemukan bahwa API menjalankan operasi kueri database yang kompleks saat memproses produk tertentu, menyebabkan peningkatan waktu pemrosesan.

  6. Tindakan Optimasi: Untuk mengatasi masalah ini, tim menerapkan dua tindakan optimasi. Pertama, mereka mengoptimalkan pernyataan kueri database untuk meningkatkan efisiensi kueri. Kedua, mereka menerapkan caching untuk API layanan inventaris produk, mengambil hasil langsung dari cache untuk produk yang sering dikueri dan jarang berubah, sehingga menghindari kueri database yang tidak perlu.

Kesimpulan

Teknologi distributed tracing memainkan peran penting dalam arsitektur microservices dan sistem terdistribusi. Dengan mencatat dan memvisualisasikan aliran permintaan di antara beberapa layanan, kita dapat dengan cepat mengidentifikasi dan mengatasi hambatan kinerja, meningkatkan stabilitas dan observabilitas sistem. Dengan memilih alat distributed tracing yang tepat dan mengintegrasikannya ke dalam pengembangan API, kita dapat mendapatkan wawasan yang lebih dalam tentang operasi sistem, sehingga meningkatkan pengalaman pengguna dan efisiensi sistem.

Blog Terkait

Tags: