Apa itu penelusuran terdistribusi?
Penelusuran terdistribusi mengamati permintaan data saat mereka mengalir melalui sistem terdistribusi. Arsitektur layanan mikro modern sering memiliki beberapa komponen independen kecil—komponen-komponen ini terus-menerus berkomunikasi dan bertukar data menggunakan API untuk melakukan pekerjaan yang kompleks. Dengan penelusuran terdistribusi, pengembang dapat melacak—atau mengikuti secara visual—jalur permintaan di berbagai layanan mikro. Visibilitas ini membantu memecahkan masalah kesalahan atau memperbaiki bug dan masalah kinerja.
Apa manfaat dari penelusuran terdistribusi?
Pengembang perangkat lunak dapat menerapkan sistem pelacakan terdistribusi di hampir semua lingkungan cloud-native, serta merekam jejak terdistribusi yang dihasilkan aplikasi cloud. Selain itu, alat pelacakan mendukung banyak bahasa pemrograman dan tumpukan perangkat lunak, memungkinkan tim perangkat lunak untuk memantau dan mengumpulkan data kinerja untuk aplikasi yang berbeda pada platform yang sama.
Tim pengembangan menggunakan pelacakan terdistribusi untuk meningkatkan observabilitas, serta memecahkan masalah kinerja yang tidak dapat membantu alat debugging dan pemantauan perangkat lunak konvensional.
Berikut ini adalah lebih banyak manfaat dari penelusuran terdistribusi.
Mempercepat pemecahan masalah perangkat lunak
Aplikasi modern bergantung pada banyak layanan mikro untuk bertukar data dan memenuhi permintaan layanan di seluruh sistem terdistribusi. Memecahkan masalah kinerja dalam arsitektur berbasis layanan mikro secara signifikan lebih menantang daripada dalam aplikasi perangkat lunak monolitik. Tidak seperti aplikasi monolitik, akar penyebab masalah perangkat lunak tertentu mungkin tidak terlihat - interaksi yang tumpang tindih dan kompleks antara beberapa modul perangkat lunak dapat membuat sulit untuk mendiagnosis masalah.
Dengan pelacakan terdistribusi, tim perangkat lunak dapat memantau data yang melewati jalur kompleks yang menghubungkan berbagai layanan mikro dan penyimpanan data. Menggunakan alat pelacakan terdistribusi, tim perangkat lunak melacak permintaan dan memvisualisasikan jalur propagasi data dengan presisi. Tim perangkat lunak dapat menyelesaikan masalah kinerja dengan segera dan meminimalkan gangguan layanan.
Meningkatkan kolaborasi pengembang
Beberapa pengembang sering terlibat dalam membangun aplikasi cloud, dengan masing-masing bertanggung jawab untuk satu atau beberapa layanan mikro. Proses pengembangan perangkat lunak melambat jika pengembang tidak dapat melacak data yang dipertukarkan oleh layanan mikro. Dengan sistem pelacakan terdistribusi, pengembang dapat berkolaborasi dengan menyediakan data telemetri, seperti log dan jejak, untuk setiap permintaan layanan yang dibuat oleh layanan mikro. Pengembang dapat secara akurat menanggapi bug dan masalah perangkat lunak lain yang ditemukan selama pengujian dan produksi.
Mengurangi waktu untuk memasarkan
Organisasi yang menerapkan platform pelacakan terdistribusi dapat merampingkan dan mempercepat upaya untuk merilis aplikasi perangkat lunak untuk pengguna akhir. Tim perangkat lunak meninjau jejak terdistribusi untuk mendapatkan wawasan yang mempercepat pengembangan perangkat lunak, meminimalkan biaya pengembangan, memahami perilaku pengguna, dan meningkatkan kesiapan pasar.
Apa saja jenis penelusuran terdistribusi?
Tim perangkat lunak menggunakan alat pelacakan terdistribusi untuk memantau, menganalisis, dan mengoptimalkan aplikasi.
Penelusuran kode
Penelusuran kode adalah proses perangkat lunak yang memeriksa aliran kode sumber dalam aplikasi saat melakukan fungsi tertentu. Ini membantu pengembang memahami aliran logis kode dan mengidentifikasi masalah yang tidak diketahui. Misalnya, pengembang menggunakan penelusuran kode untuk memvalidasi bahwa permintaan layanan telah menginvokasi langkah-langkah untuk menanyakan basis data. Jika beberapa fungsi perangkat lunak gagal membalas, sistem pelacakan akan mengumpulkan status kesalahan yang sesuai dan menarik perhatian pada waktu respons.
Penelusuran program
Pelacakan program adalah metode di mana pengembang dapat memeriksa alamat instruksi dan variabel yang dipanggil oleh aplikasi aktif. Ketika aplikasi perangkat lunak berjalan, ia memproses setiap baris kode yang berada di ruang memori tertentu yang dialokasikan. Aplikasi ini juga memproses variabel yang disimpan dalam memori mesin. Memeriksa perubahan dalam program dan memori data merupakan tantangan tanpa alat otomatis. Dengan pelacakan program, tim perangkat lunak dapat mendiagnosis masalah kinerja yang mengakar seperti meluap memori, konsumsi sumber daya yang berlebihan, dan pemblokiran operasi logika.
Pelacakan menyeluruh
Dengan pelacakan end-to-end tim pengembangan dapat melacak transformasi data di sepanjang jalur permintaan layanan. Ketika sebuah aplikasi memulai permintaan, ia mengirimkan data ke komponen perangkat lunak lain untuk diproses lebih lanjut. Pengembang menggunakan alat pelacakan untuk melacak dan mengkompilasi perubahan yang dialami data penting dari end-to-end. Ini memberikan tampilan aplikasi yang berpusat pada permintaan yang mengalir melalui aplikasi.
Bagaimana cara kerja pelacakan terdistribusi end-to-end dalam arsitektur layanan mikro?
Saat menggunakan aplikasi, pengguna memulai permintaan layanan dan komponen aplikasi yang berbeda memproses permintaan.
Pertimbangkan pengguna yang membuat pemesanan tiket di aplikasi pemesanan film online. Pengguna memasukkan detail kontak, detail film, dan informasi pembayaran mereka dan memilih Pesan Sekarang. Permintaan dibuat yang mengarah ke:
- Layanan mikro A yang memvalidasi data yang dimasukkan pengguna.
- Layanan mikro B yang mengambil data dari A dan membuat catatan dalam basis data pelanggan.
- Layanan mikro C yang mengambil data dari B dan memvalidasi pembayaran.
- Layanan mikro D yang mengambil data dari C, mengalokasikan kursi, dan menghasilkan data tiket film.
- Layanan mikro E yang mengambil data dari D dan membuat file PDF tiket yang diformat.
Respons yang berisi tiket PDF kemudian dikembalikan kembali ke rantai layanan mikro dari E ke D ke C ke B ke A, sampai akhirnya mencapai pengguna. Contoh di atas sederhana—permintaan sering melewati beberapa lusin layanan mikro dan bahkan rantai komponen perangkat lunak pihak ketiga di luar aplikasi. Hal ini membuat prosesnya semakin kompleks.
Sistem pelacakan terdistribusi melacak interaksi permintaan layanan ini dengan layanan mikro dan komponen perangkat lunak lainnya di lingkungan komputasi terdistribusi. Pelacakan terdistribusi mewakili garis waktu dan semua tindakan yang terjadi antara pembuatan permintaan dan penerimaan respons. Tim perangkat lunak menggunakan jejak untuk mengikuti pergerakan data melalui beberapa layanan mikro yang berinteraksi dengan permintaan awal.
Rentang
Saat memproses permintaan layanan, aplikasi mungkin mengambil beberapa tindakan. Tindakan ini direpresentasikan sebagai rentang dalam penelusuran terdistribusi. Misalnya, rentang mungkin berupa panggilan API, autentikasi pengguna, atau mengaktifkan akses penyimpanan. Jika permintaan tunggal menghasilkan beberapa tindakan, rentang awal (atau induk) dapat bercabang menjadi beberapa rentang cabang. Lapisan bersarang rentang induk dan anak ini membentuk representasi logis berkelanjutan dari langkah-langkah yang diambil untuk menyelesaikan permintaan layanan.
Melacak ID
Sistem pelacakan terdistribusi memberikan ID unik untuk setiap permintaan untuk melacaknya. Setiap rentang mewarisi ID jejak yang sama dari permintaan aslinya. Rentang juga ditandai dengan ID rentang unik yang membantu sistem pelacakan mengkonsolidasikan metadata, log, dan metrik yang dikumpulkan.
Koleksi metrik
Saat setiap rentang melewati layanan mikro yang berbeda, ia menambahkan metrik yang memberi pengembang wawasan mendalam dan tepat tentang perilaku perangkat lunak. Anda dapat mengumpulkan tingkat kesalahan, stempel waktu, waktu respons, dan metadata lainnya dengan rentang. Setelah pelacakan menyelesaikan seluruh siklus, alat pelacakan terdistribusi mengkonsolidasikan semua data yang dikumpulkan.
Misalnya, panggilan API dievaluasi dengan waktu respons, status kesalahan, dan rincian fungsi sekunder yang dipenuhi oleh beberapa layanan pihak ketiga. Alat pelacakan mengubah data menjadi bentuk visual, menyoroti indikator utama dan ringkasan kinerja. Dengan cara ini, teknisi keandalan situs dapat dengan cepat mengidentifikasi kesalahan, memeriksa elemen data penting, dan berkolaborasi dengan tim pengembangan untuk memperbaiki masalah kinerja dan memastikan kepatuhan dengan Perjanjian Tingkat Layanan (SLA).
Apa standar penelusuran terdistribusi?
Standar pelacakan terdistribusi menyediakan kerangka kerja umum dan alat perangkat lunak untuk pengembang. Standar ini memantau, memvisualisasikan, dan menganalisis permintaan layanan di lingkungan aplikasi modern. Dengan menstandardisasi alur kerja pelacakan terdistribusi, tim perangkat lunak dapat melakukan pelacakan permintaan tanpa mengalami penguncian vendor.
Bagian berikut menjelaskan standar yang diperkenalkan untuk memungkinkan interoperabilitas saat melakukan pelacakan terdistribusi.
OpenTracing
OpenTracing adalah standar penelusuran terdistribusi sumber terbuka yang dikembangkan oleh Cloud Native Computing Foundation (CNCF). OpenTracing berfokus pada memungkinkan pengembang untuk menghasilkan jejak dengan API instrumentasi. Hal ini memungkinkan pengembang untuk menghasilkan jejak terdistribusi dari berbagai bagian basis kode, perpustakaan, atau dependensi lainnya.
OpenCensus
OpenCensus terdiri dari pustaka multi-bahasa yang mampu mengekstraksi metrik perangkat lunak dan mengirimkannya ke sistem backend untuk analisis. Pengembang dapat menggunakan API yang disediakan untuk mengelola bagaimana jejak dibuat dan dikumpulkan. Tidak seperti OpenTracing, pengembang bekerja dengan OpenCensus dari repositori proyek tunggal alih-alih basis kode individu dan pustaka.
OpenTelemetry
OpenTelemetry menyatukan OpenTracing dan OpenCensus. Ini menggabungkan fitur terbaik dari kedua standar untuk menyediakan kerangka penelusuran terdistribusi yang komprehensif. OpenTelemetry menyediakan kit pengembangan perangkat lunak yang ekstensif, API, pustaka, dan alat instrumentasi lainnya untuk mengimplementasikan pelacakan terdistribusi dengan lebih mudah.
Apa perbedaan antara penelusuran terdistribusi dan logging?
Logging adalah praktik merekam peristiwa tertentu yang terjadi ketika aplikasi berjalan. Alat pencatatan mengumpulkan peristiwa dengan stempel waktu—seperti kesalahan sistem, interaksi pengguna, status komunikasi, dan metrik lainnya—untuk membantu tim pengembangan mendeteksi anomali sistem. Umumnya, ada dua jenis logging:
- Pencatatan terpusat mengumpulkan semua aktivitas yang direkam dan menyimpannya di satu lokasi.
- Logging terdistribusi menyimpan file log di lokasi terpisah di cloud.
Kedua metode logging memberikan gambaran statis tentang insiden yang menunjukkan kepada pengembang apa yang terjadi dalam aplikasi. Sebaliknya, pelacakan terdistribusi menyediakan jejak audit yang menjelaskan mengapa insiden terjadi dengan menghubungkan berbagai data telemetri yang dikumpulkan selama periode permintaan layanan. Penelusuran terdistribusi dapat menggunakan pencatatan dan metode pengumpulan data lainnya untuk melacak permintaan layanan tertentu.
Apa tantangan penelusuran terdistribusi?
Penelusuran terdistribusi telah menyederhanakan upaya pengembang dalam mendiagnosis, men-debug, dan memperbaiki masalah perangkat lunak. Meskipun demikian, tantangan berikut tetap yang harus diperhatikan oleh tim perangkat lunak ketika memilih alat pelacakan.
Instrumentasi manual
Beberapa alat pelacakan memerlukan tim perangkat lunak untuk secara manual instrumen kode mereka untuk menghasilkan jejak yang diperlukan. Ketika pengembang memodifikasi kode untuk melacak permintaan, ada risiko kesalahan pengkodean yang memengaruhi rilis produksi. Selain itu, kurangnya otomatisasi mempersulit penelusuran, mengakibatkan penundaan dan kemungkinan pengumpulan data yang tidak akurat.
Cakupan frontend terbatas
Pengembang mungkin tidak dapat memperoleh pengawasan penuh atas masalah kinerja jika alat pelacakan mereka terbatas pada analisis backend. Dalam beberapa kasus, sistem pelacakan terdistribusi hanya mulai mengumpulkan data ketika layanan backend pertama menerima permintaan. Ini berarti pengembang tidak dapat mendeteksi dan memeriksa masalah yang timbul dari layanan frontend selama sesi pengguna yang sesuai.
Pengambilan sampel acak
Beberapa alat tidak mengizinkan tim perangkat lunak memprioritaskan observabilitas, membatasi pengamatan pada jejak sampel acak. Dengan data sampel yang terbatas, organisasi memerlukan pendekatan pemecahan masalah perangkat lunak tambahan untuk menangkap masalah utama yang luput dari alat pelacakan.
Bagaimana AWS dapat membantu persyaratan pelacakan terdistribusi Anda?
AWS X-Ray adalah platform pelacakan terdistribusi yang membantu pengembang perangkat lunak melacak permintaan pengguna dan mengidentifikasi hambatan dalam aplikasi cloud mereka. Organisasi menggunakan X-Ray untuk memvisualisasikan metrik aplikasi dan meningkatkan ketersediaan beban kerja. Dengan AWS X-Ray Anda dapat:
- Integrasikan dengan semua aplikasi yang berjalan di Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda, dan AWS Elastic Beanstalk.
- Tetapkan laju pengambilan sampel yang sesuai untuk memberikan visibilitas end-to-end untuk jejak.
- Visualisasikan data agregat dengan peta layanan, menampilkan metrik utama seperti tingkat latensi dan kegagalan.
Mulailah dengan pelacakan terdistribusi di AWS dengan membuat akun hari ini.