Observability: Memahami Apa yang Terjadi di Balik Sebuah Sistem Digital

Sebuah aplikasi yang terlihat berjalan dengan normal bagi pengguna belum tentu benar-benar berada dalam kondisi yang baik. Di balik tampilan website atau aplikasi, terdapat berbagai proses yang berlangsung secara terus-menerus, mulai dari komunikasi dengan server, pemrosesan database, penggunaan sumber daya komputer, hingga pertukaran data antar layanan.

Ketika terjadi masalah, pengguna biasanya hanya melihat dampaknya. Misalnya, halaman menjadi lambat, transaksi gagal, atau aplikasi tidak dapat diakses. Sementara itu, developer perlu mengetahui apa yang sebenarnya terjadi di dalam sistem agar masalah dapat segera ditemukan dan diperbaiki.

Untuk membantu memahami kondisi tersebut, terdapat sebuah konsep yang semakin penting dalam pengelolaan sistem modern, yaitu Observability.

Apa Itu Observability?

Observability adalah kemampuan untuk memahami kondisi internal sebuah sistem berdasarkan data yang dihasilkan oleh sistem tersebut.

Dengan observability, tim pengembang tidak hanya mengetahui bahwa sebuah aplikasi mengalami masalah, tetapi juga dapat mencari tahu penyebab dari masalah tersebut.

Sebagai contoh, pengguna mengeluhkan bahwa sebuah website membutuhkan waktu lama untuk membuka halaman tertentu. Tanpa observability, developer mungkin hanya mengetahui bahwa website sedang mengalami perlambatan.

Dengan observability, developer dapat memperoleh informasi yang lebih mendalam. Mereka dapat mengetahui apakah masalah berasal dari proses tertentu, database yang lambat, penggunaan sumber daya server yang meningkat, atau layanan lain yang mengalami gangguan.

Informasi tersebut membuat proses pencarian masalah menjadi lebih terarah dan berdasarkan data.

Mengapa Observability Penting?

Aplikasi modern semakin kompleks. Sebuah aplikasi tidak selalu hanya terdiri dari satu server dan satu database. Sistem dapat memiliki frontend, backend, API, database, cache, layanan eksternal, serta berbagai komponen lainnya.

Ketika salah satu komponen mengalami masalah, dampaknya dapat dirasakan oleh bagian sistem lainnya.

Sebagai contoh, sebuah website dapat terlihat lambat bagi pengguna. Penyebabnya belum tentu berasal dari tampilan website. Bisa saja masalah terjadi pada server, database, jaringan, atau layanan tertentu yang digunakan oleh aplikasi.

Observability membantu tim pengembang melihat kondisi berbagai komponen tersebut sehingga hubungan antara satu masalah dengan masalah lainnya dapat dipahami.

Perbedaan Monitoring dan Observability

Monitoring dan observability memiliki hubungan yang erat, tetapi keduanya bukanlah hal yang sama.

Monitoring berfokus pada pemantauan kondisi sistem berdasarkan indikator tertentu. Misalnya, sistem monitoring menunjukkan bahwa penggunaan CPU server telah mencapai 90 persen.

Informasi tersebut menunjukkan bahwa terdapat kondisi yang perlu diperhatikan. Namun, monitoring belum tentu langsung memberikan jawaban mengenai penyebabnya.

Sementara itu, observability membantu tim mencari informasi yang lebih mendalam. Developer dapat mencari tahu proses apa yang menyebabkan penggunaan CPU meningkat, apakah peningkatan tersebut berkaitan dengan request tertentu, dan apakah pengguna mengalami dampak dari kondisi tersebut.

Dengan demikian, monitoring dapat menjadi salah satu bagian dari penerapan observability.

Tiga Pilar Observability

Observability umumnya menggunakan tiga jenis data utama, yaitu logs, metrics, dan traces. Ketiganya memberikan sudut pandang yang berbeda mengenai kondisi sebuah sistem.

Logs

Log merupakan catatan mengenai berbagai kejadian yang terjadi di dalam sistem.

Contohnya adalah informasi ketika pengguna berhasil login, ketika terjadi kesalahan koneksi database, atau ketika sebuah proses tertentu gagal dijalankan.

Log dapat membantu developer mengetahui peristiwa yang terjadi pada aplikasi pada waktu tertentu.

Log yang baik sebaiknya memiliki informasi yang relevan, seperti waktu kejadian, jenis aktivitas, dan konteks yang diperlukan untuk melakukan pemeriksaan.

Metrics

Metrics merupakan data numerik yang menggambarkan kondisi sistem.

Beberapa contoh metrics antara lain penggunaan CPU, penggunaan RAM, jumlah request, waktu respons, jumlah error, dan jumlah pengguna aktif.

Metrics dapat membantu developer melihat perubahan kondisi sistem dari waktu ke waktu.

Misalnya, sebuah aplikasi biasanya memiliki waktu respons sekitar 200 milidetik. Namun, pada suatu waktu waktu respons meningkat menjadi dua detik. Perubahan tersebut dapat menjadi indikasi bahwa terdapat masalah yang perlu diperiksa.

Traces

Trace digunakan untuk mengikuti perjalanan sebuah request ketika melewati berbagai komponen sistem.

Sebagai contoh, ketika pengguna melakukan checkout pada sebuah aplikasi toko online, proses tersebut mungkin melibatkan frontend, API, layanan pesanan, layanan pembayaran, dan database.

Trace dapat membantu developer mengetahui bagian mana yang membutuhkan waktu paling lama atau mengalami kegagalan.

Dengan informasi tersebut, developer dapat mempersempit area pencarian masalah.

Contoh Penerapan Observability

Bayangkan sebuah website toko online tiba-tiba menjadi lambat.

Developer kemudian memeriksa metrics dan menemukan bahwa waktu respons aplikasi meningkat. Setelah itu, developer memeriksa trace dan menemukan bahwa sebagian besar waktu pemrosesan digunakan ketika aplikasi mengakses database.

Selanjutnya, developer memeriksa log dan menemukan bahwa terdapat query tertentu yang membutuhkan waktu sangat lama.

Dari pemeriksaan tersebut, developer akhirnya dapat mengetahui bahwa masalah bukan sekadar website yang lambat, tetapi terdapat proses database tertentu yang menyebabkan perlambatan.

Contoh tersebut menunjukkan bagaimana berbagai data observability dapat digunakan secara bersama-sama untuk menemukan penyebab suatu masalah.

Observability dalam Aplikasi Web

Dalam aplikasi web, observability dapat diterapkan pada berbagai bagian sistem.

Misalnya sebuah aplikasi memiliki fitur login. Sistem dapat mencatat jumlah percobaan login, jumlah login yang gagal, waktu yang dibutuhkan untuk memproses login, serta error yang terjadi ketika aplikasi berkomunikasi dengan database.

Data tersebut dapat membantu developer memahami kondisi fitur login secara lebih menyeluruh.

Jika jumlah kegagalan login tiba-tiba meningkat, tim dapat melakukan pemeriksaan lebih lanjut untuk mengetahui apakah masalah berasal dari aplikasi, database, konfigurasi, atau faktor lainnya.

Observability dalam Sistem Berskala Besar

Pada aplikasi sederhana, pencarian masalah biasanya relatif mudah karena jumlah komponennya terbatas.

Namun, pada sistem berskala besar, satu permintaan pengguna dapat melewati banyak layanan.

Misalnya, sebuah transaksi dapat melibatkan sistem autentikasi, layanan produk, layanan pesanan, layanan pembayaran, dan database.

Jika transaksi gagal, developer harus mengetahui komponen mana yang menyebabkan kegagalan.

Tanpa informasi yang cukup, proses pencarian masalah dapat memakan waktu cukup lama. Observability membantu menyediakan informasi mengenai perjalanan request dan kondisi setiap komponen yang terlibat.

Manfaat Observability

Penerapan observability dapat memberikan berbagai manfaat bagi pengelolaan sistem digital.

Mempercepat Pencarian Masalah

Developer dapat menemukan sumber masalah dengan lebih cepat karena memiliki data yang dapat digunakan sebagai dasar pemeriksaan.

Meningkatkan Keandalan Sistem

Masalah dapat dideteksi dan ditangani dengan lebih cepat sehingga risiko gangguan terhadap pengguna dapat dikurangi.

Memahami Performa Aplikasi

Tim dapat mengetahui bagian sistem yang mengalami perlambatan dan menentukan bagian mana yang membutuhkan optimasi.

Membantu Pengambilan Keputusan

Data historis mengenai penggunaan sistem dapat membantu menentukan kebutuhan peningkatan kapasitas maupun perubahan infrastruktur.

Meningkatkan Pengalaman Pengguna

Ketika masalah dapat ditemukan dan diperbaiki dengan lebih cepat, pengguna dapat memperoleh layanan yang lebih stabil.

Observability dan Developer

Observability dapat mengubah cara developer melihat sebuah aplikasi.

Developer tidak hanya perlu memikirkan apakah kode dapat berjalan, tetapi juga perlu memahami apa yang terjadi ketika kode tersebut dijalankan.

Developer perlu mengetahui bagaimana performa aplikasi, apa yang terjadi ketika error muncul, serta bagaimana cara mengetahui bahwa pengguna sedang mengalami masalah.

Pola pikir tersebut menjadi semakin penting ketika aplikasi digunakan oleh banyak orang dan memiliki banyak komponen.

Observability dan DevOps

Observability memiliki hubungan yang erat dengan praktik DevOps.

Dalam pengembangan software modern, proses membuat, menguji, dan menjalankan aplikasi dilakukan secara berkelanjutan. Setelah aplikasi dirilis, tim tetap perlu mengetahui apakah sistem bekerja sesuai dengan yang diharapkan.

Observability membantu memberikan informasi mengenai kondisi aplikasi ketika berada di lingkungan produksi.

Dengan informasi tersebut, developer dan tim operasional dapat melakukan pemeriksaan berdasarkan data ketika terjadi gangguan.

Observability Bukan Sekadar Mengumpulkan Data

Memiliki banyak log, metrics, dan traces belum tentu berarti sebuah sistem sudah memiliki observability yang baik.

Jika data terlalu banyak tetapi sulit dicari atau tidak memiliki konteks yang jelas, developer justru dapat kesulitan menemukan informasi yang dibutuhkan.

Karena itu, data observability perlu dirancang dengan baik.

Log harus berisi informasi yang relevan dan mudah ditelusuri. Metrics juga perlu dipilih berdasarkan indikator yang benar-benar membantu memahami kondisi sistem.

Dengan kata lain, banyaknya data bukanlah satu-satunya ukuran keberhasilan observability. Yang lebih penting adalah apakah data tersebut dapat membantu tim memahami kondisi dan penyebab masalah dalam sistem.

Tantangan dalam Menerapkan Observability

Meskipun memiliki banyak manfaat, penerapan observability juga memiliki beberapa tantangan.

Volume Data

Aplikasi berskala besar dapat menghasilkan log, metrics, dan traces dalam jumlah yang sangat banyak.

Biaya Penyimpanan

Semakin banyak data yang disimpan, semakin besar pula kebutuhan penyimpanan dan infrastruktur.

Kompleksitas Sistem

Sistem yang terdiri dari banyak layanan membutuhkan strategi observability yang lebih terstruktur.

Keamanan dan Privasi

Data yang dikumpulkan harus dikelola dengan baik agar tidak menyimpan atau mengekspos informasi sensitif pengguna.

Membutuhkan Pemahaman Sistem

Developer perlu memahami arsitektur aplikasi agar dapat menentukan data apa yang benar-benar penting untuk diamati.

Observability dalam Proyek Mahasiswa

Konsep observability tidak hanya berlaku pada perusahaan teknologi besar. Mahasiswa Informatika juga dapat menerapkannya pada proyek sederhana.

Misalnya ketika membuat aplikasi website, mahasiswa dapat mencatat waktu respons, error yang terjadi, status koneksi database, serta aktivitas penting pada aplikasi.

Data tersebut dapat digunakan untuk memahami bagaimana aplikasi bekerja setelah dijalankan.

Dengan menerapkan konsep ini, mahasiswa tidak hanya belajar membuat fitur, tetapi juga belajar memperhatikan kondisi sistem secara keseluruhan.

Mengapa Mahasiswa Informatika Perlu Mempelajarinya?

Observability berkaitan dengan berbagai bidang dalam Informatika, seperti Software Engineering, Backend Development, Database, Cloud Computing, DevOps, Distributed Systems, dan System Administration.

Pemahaman mengenai observability juga dapat membantu mahasiswa mengembangkan pola pikir yang lebih sistematis ketika melakukan debugging.

Daripada hanya mencoba mengubah kode secara acak ketika terjadi masalah, developer dapat menggunakan data yang tersedia untuk mencari kemungkinan penyebabnya.

Kemampuan tersebut akan sangat berguna ketika mahasiswa mulai mengembangkan aplikasi dengan struktur dan jumlah pengguna yang lebih besar.

Peluang Karier

Pengetahuan mengenai observability dapat mendukung berbagai profesi di bidang teknologi, seperti Software Engineer, Backend Developer, DevOps Engineer, Site Reliability Engineer, Cloud Engineer, System Engineer, dan Platform Engineer.

Semakin kompleks sebuah sistem, semakin penting kemampuan untuk memahami kondisi sistem tersebut secara menyeluruh.

Masa Depan Observability

Perkembangan cloud computing, microservices, aplikasi real-time, dan sistem terdistribusi membuat kebutuhan terhadap observability semakin besar.

Ketika jumlah komponen dalam sebuah sistem meningkat, kemampuan untuk mengetahui apa yang terjadi di dalam sistem menjadi semakin penting.

Artificial Intelligence juga berpotensi membantu proses analisis data observability dengan menemukan pola tertentu dan memberikan indikasi terhadap kemungkinan masalah.

Namun, data tetap menjadi dasar utama. Sistem yang baik membutuhkan data yang tepat agar dapat dianalisis secara efektif.

Penutup

Observability merupakan kemampuan untuk memahami kondisi internal sebuah sistem berdasarkan data yang dihasilkan oleh sistem tersebut. Melalui logs, metrics, dan traces, developer dapat memperoleh gambaran yang lebih jelas mengenai performa, error, dan proses yang terjadi di dalam aplikasi.

Konsep ini menjadi semakin penting karena aplikasi modern semakin kompleks dan terdiri dari banyak komponen yang saling berhubungan.

Bagi mahasiswa Program Studi Informatika, mempelajari observability memberikan pemahaman bahwa membangun software tidak berhenti ketika aplikasi berhasil dibuat dan dijalankan.

Sebuah sistem juga perlu diamati, dipahami, dan terus diperbaiki agar dapat memberikan layanan yang stabil bagi penggunanya.

Pada akhirnya, developer yang baik bukan hanya mampu membuat sistem bekerja, tetapi juga mampu memahami apa yang sebenarnya terjadi di dalam sistem ketika sebuah masalah muncul.