Apa itu Jaeger?
Jaeger adalah perangkat lunak yang dapat Anda gunakan untuk memantau dan memecahkan masalah pada komponen perangkat lunak yang saling berhubungan, disebut layanan mikro. Beberapa layanan mikro berkomunikasi satu sama lain untuk menyelesaikan satu fungsi perangkat lunak. Developer menggunakan Jaeger untuk memvisualisasikan rantai peristiwa dalam interaksi layanan mikro ini guna mengisolasi masalah ketika terjadi kesalahan. Jaeger juga disebut Pelacakan Jaeger karena mengikuti, atau melacak, jalur permintaan melalui serangkaian interaksi layanan mikro.
Mengapa Jaeger penting?
Di masa lalu, desain perangkat lunak bersifat monolitik, dengan beberapa fungsi digabungkan bersama dalam satu basis kode. Misalnya, untuk mendesain aplikasi pemesanan makanan, menu makanan, restoran, dan sistem pembayaran semuanya digabungkan menjadi satu unit perangkat lunak. Tipe desain perangkat lunak ini membuat solusi lebih kompleks dan sulit untuk dipelihara. Saat developer membuat perubahan kode di satu area, itu memengaruhi seluruh sistem, membuat manajemen perubahan menjadi proses yang panjang dan membosankan. Untuk memecahkan masalah ini, desain arsitektur menjadi lebih modular.
Layanan mikro
Aplikasi modern berfungsi sebagai kumpulan unit independen yang lebih kecil yang disebut layanan mikro. Misalnya, aplikasi pemesanan makanan yang modern dapat terdiri dari beberapa bagian:
- Layanan geolokasi untuk mendeteksi lokasi pelanggan
- Layanan yang mengumpulkan dan mengirimkan pesanan ke restoran
- Gateway pembayaran dengan beberapa opsi pembayaran
Masing-masing layanan mikro bekerja sebagai aplikasi yang mandiri dan memiliki akses ke basis data dan logikanya sendiri. Layanan mikro berkomunikasi satu sama lain menggunakan permintaan dan respons, seperti aplikasi web. Sistem basis layanan mikro juga disebut sistem terdistribusi.
Pemecahan masalah arsitektur layanan mikro
Menyelidiki masalah pada sistem terdistribusi adalah hal yang menantang karena perilaku kompleks dari layanan mikro. Misalnya, memesan makanan pada aplikasi modular dapat memicu beberapa permintaan untuk berbagai ke layanan mikro yang berbeda. Permintaan ini dapat terjadi secara bersamaan dan mandiri, serta tidak perlu berurutan. Jika terjadi masalah pada pesanan makanan, developer perlu menentukan layanan mikro mana yang menyebabkannya. Pendekatan pada pelacakan masalah konvensional hanya memberikan sebagian gambaran dari permintaan, menjadikan pemecahan masalah layanan mikro sebagai hal yang melelahkan.
Jaeger adalah alat perangkat lunak yang digunakan oleh tim IT untuk mendapatkan visibilitas dan kejelasan di seluruh rantai peristiwa. Tim juga dapat memecahkan masalah dengan lebih cepat dan meningkatkan pengalaman pelanggan.
Apa kegunaan Jaeger?
Developer menggunakan Jaeger untuk meningkatkan performa sistem terdistribusi dengan beberapa cara yang berbeda. Kami memberikan beberapa contoh di bawah.
Pemantauan transaksi terdistribusi
Jaeger memiliki fitur untuk memantau pergerakan data di antara layanan mikro. Developer dapat mengambil pendekatan proaktif untuk mendeteksi dan menyelesaikan masalah sebelum mengganggu pengalaman pengguna.
Optimasi latensi
Analitik Jaeger dapat menemukan hambatan dalam layanan mikro yang memperlambat aplikasi. Developer menggunakan Jaeger untuk memeriksa perilaku layanan mikro dan menemukan cara untuk mempercepatnya.
Analisis akar penyebab
Dalam arsitektur layanan mikro, satu masalah dapat mengakibatkan masalah yang lain. Developer dapat menggunakan Jaeger untuk menemukan titik awal dari serangkaian masalah terkait dalam suatu aplikasi.
Analisis dependensi layanan
Dependensi layanan berarti aplikasi bergantung pada beberapa komponen untuk beroperasi. Misalnya, aplikasi navigasi bergantung pada layanan lokasi pada aplikasi seluler. Developer menggunakan Jaeger untuk memahami hubungan yang kompleks di antara layanan mikro.
Propagasi konteks terdistribusi
Propagasi konteks terdistribusi adalah cara aplikasi melewati informasi deskriptif bersama dengan data. Propagasi konteks terdistribusi membantu developer mengevaluasi performa layanan mikro secara keseluruhan. Misalnya, Jaeger menandai permintaan pesanan dengan nama pelanggan sehingga developer dapat mengaitkan jalur permintaan dengan pelanggan tertentu.
Bagaimana cara kerja Jaeger?
Jaeger bekerja berdasarkan prinsip pelacakan terdistribusi dan menggunakan kerangka kerja OpenTracing.
Pelacakan terdistribusi
Pelacakan terdistribusi adalah teknik perangkat lunak yang memantau urutan peristiwa di antara layanan mikro. Pelacakan terdistribusi melacak semua koneksi dan menyediakan bagan dan grafik untuk memvisualisasikan jalur permintaan dalam aplikasi. Sebagai alat pelacakan terdistribusi, Jaeger melacak pergerakan permintaan dengan menetapkan pengidentifikasi unik untuk setiap permintaan, dan mengumpulkan informasi saat layanan tertentu memproses permintaan tersebut.
OpenTracing
OpenTracing adalah kerangka kerja sumber terbuka, atau tersedia secara bebas, yang memberikan standar untuk membuat pelacakan terdistribusi turnkey yang akurat menjadi kenyataan di seluruh sistem perangkat lunak modern. Misalnya, OpenTracing memberikan standar umum untuk menentukan struktur informasi yang dipantau dan berjalan di antara layanan mikro. Jaeger menggunakan OpenTracing untuk memberikan solusi lengkap guna mengumpulkan, menyimpan, mengelola, menganalisis, dan memvisualisasikan data layanan mikro.
Model data OpenTracing
Model data OpenTracing memberikan ketentuan dasar untuk menghubungkan data dari komponen yang berbeda. Dua istilah utama yang digunakan adalah rentang danjejak.
Rentang
Rentang adalah unit logis tunggal dari pekerjaan yang dilakukan dalam sistem pelacakan terdistribusi. Masing-masing rentang memiliki komponen berikut:
- Nama operasi
- Waktu mulai dan waktu henti
- Tanda atau nilai yang membantu developer untuk menganalisis rentang
- Log yang menyimpan setiap pesan yang dihasilkan layanan mikro
- Konteks rentang atau deskripsi tambahan mengenai rentang
Jejak
Jejak adalah kumpulan dari satu atau beberapa rentang yang termasuk dalam proses yang sama. Jejak mewakili peristiwa yang terjadi selama waktu tertentu. Rentang yang termasuk dalam jejak yang sama berbagi ID Jejak yang sama. Misalnya, jejak yang dihasilkan saat pelanggan memesan makanan menghasilkan rentang berikut:
- Pelanggan memesan
- Pembayaran diproses
- Daftar pesanan dikirim ke restoran
- Makanan diambil
- Makanan diantar
Apa saja komponen Jaeger?
Platform pelacakan terdistribusi Jaeger terdiri dari komponen-komponen berikut.
Klien Jaeger
Klien Jaeger berisi implementasi khusus bahasa API OpenTracing dalam bahasa pemrograman seperti Go, JavaScript, Java, Python, Ruby, dan PHP.
Developer menggunakan API ini untuk membuat rentang Jaeger tanpa menulis kode sumber untuk pelacakan terdistribusi.
Agen Jaeger
Agen Jaeger adalah daemon jaringan atau proses yang berjalan terus menerus di latar belakang untuk melakukan fungsi yang diperlukan oleh proses lain. Agen Jaeger mendengarkan rentang yang dikirim klien melalui protokol datagram pengguna (UDP), yaitu tipe metode komunikasi yang memungkinkan aplikasi untuk bertukar pesan melalui jaringan.
Agen terhubung ke klien di lingkungan kontainer seperti Amazon Elastic Kubernetes Service. Grup agen membuat rentang dalam batch dan mengirimkannya ke kolektor. Tindakan ini memungkinkan aplikasi untuk berjalan tanpa secara aktif mengirimkan informasi jejak ke backend Jaeger.
Kolektor Jaeger
Kolektor Jaeger adalah komponen perangkat lunak yang mengambil jejak dari kolektor Jaeger. Jaeger memeriksa, memproses, dan menyimpan jejak dalam basis data.
Penyimpanan
Sistem pelacakan Jaeger menerima rentang dan menyimpannya di backend penyimpanan atau basis data persisten. Penyimpanan persisten menandakan data yang disimpan tetap utuh meskipun komputer dimatikan. Misalnya, developer menggunakan AWS OpenSearch Service sebagai penyimpanan persisten untuk menyimpan dan menerima rentang.
Ingester
Salah satu cara untuk melakukan deployment Jaeger adalah dengan mengirimkan data jejak ke Kafka, yaitu sebuah sistem terdistribusi untuk menyimpan dan mengambil aliran informasi. Ingester adalah modul yang membaca data jejak dari Kafka dan menyimpannya secara terpisah.
Kueri
Layanan kueri mengambil informasi jejak dari basis data. Developer menggunakan kueri untuk menemukan jejak dengan waktu, tanda, durasi, dan operasi tertentu.
Konsol Jaeger
Konsol Jaeger adalah program perangkat lunak dengan antarmuka pengguna yang dapat Anda gunakan untuk melihat dan menganalisis jejak. Konsol Jaeger menampilkan data jejak dalam grafik dan bagan.
Bagaimana cara developer menggunakan Jaeger?
Saat developer membuat aplikasi, mereka menggunakan pustaka klien Jaeger untuk membuat cakupan. Dengan menambahkan kode ke program untuk menghasilkan data jejak, mereka membuat apa yang dikenal sebagai aplikasi yang diinstrumentasi. Aplikasi yang diinstrumentasi secara otomatis menghasilkan yang berikut:
- Rentang yang berisi ID rentang, ID pelacakan, tanda, log, dan konteks rentang
- Jejak untuk setiap permintaan
Developer menggunakan Konsol Jaeger untuk mencari, memfilter, memvisualisasikan, dan menganalisis data pelacakan terdistribusi ini. Mereka dapat menggunakan perangkat lunak Jaeger UI untuk melihat informasi mendetail, seperti durasi proses, kesalahan, dan log dari layanan mikro.
Apa itu strategi pengambilan sampel Jaeger?
Aplikasi berinstrumen yang secara otomatis mentransmisikan data jejak setiap kali aplikasi berjalan. Anda dapat menggunakan data jejak ini untuk mengukur performa aplikasi. Data ini juga disebut data telemetri. Untuk mencegah backend Jaeger kewalahan karena data telemetri yang berlebihan, Anda dapat memfilter atau mengambil sampelnya dengan mengonfigurasi strategi pengambilan sampel dalam implementasi Jaeger Anda. Ada beberapa strategi pengambilan sampel:
- Pengambilan sampel konstan mengumpulkan jumlah sampel yang sama untuk semua tipe jejak.
- Pengambilan sampel probabilistik mengumpulkan sampel secara acak hingga mencapai persentase tertentu.
- Pengambilan sampel yang membatasi laju mengambil sejumlah sampel tertentu setiap detik.
- Pengambilan sampel adaptif secara otomatis menyesuaikan laju sampel untuk mencapai sejumlah jejak dalam durasi tertentu.
Apa itu AWS App Mesh?
AWS App Mesh adalah mesh layanan atau infrastruktur perangkat lunak yang melakukan tugas berat sehingga Anda dapat lebih mudah mengelola sistem terdistribusi berbasis layanan mikro. AWS App Mesh melakukan pekerjaan berikut:
- Memberikan visibilitas menyeluruh dan ketersediaan yang tinggi untuk aplikasi Anda.
- Mengonfigurasi setiap layanan untuk mengekspor data telemetri dan menerapkan logika kontrol komunikasi yang konsisten di seluruh aplikasi Anda.
- Menyediakan kontrol lalu lintas jaringan untuk membantu developer membuat aplikasi cloud yang aman.
Anda dapat menggunakan AWS App Mesh sebagai solusi mandiri untuk kebutuhan pelacakan terdistribusi Anda. AWS Apps Mesh juga mendukung beberapa alat pihak ketiga non-AWS, seperti Jaeger, yang dapat Anda gunakan untuk memantau, mencatat, atau melacak komunikasi layanan mikro.
Mulai Jaeger di App Mesh dengan membuat akun AWS sekarang juga.