Bagian ini meninjau konsep indikator tingkat layanan (SLI), menentukan apa yang membuat SLI yang baik atau berguna, dan memberikan contoh implementasi SLI untuk layanan yang dipilih. Halaman ini ditujukan bagi orang-orang yang menginginkan contoh yang menerapkan SLI khusus layanan.
Pengantar SLI
Keandalan layanan adalah gagasan abstrak; arti keandalan bergantung pada layanan dan kebutuhan penggunanya. Indikator tingkat layanan (SLI) adalah ukuran keandalan tersebut yang akan digunakan untuk menyampaikan keandalan layanan dan mengelola layanan.
SLI diukur selama jangka waktu tertentu. Ukuran jendela biasanya tergantung pada keputusan yang dibuat terkait informasi yang digunakan. Misalnya, Anda dapat mengukur satu SLI dengan cara berikut:
- Selama satu jam terakhir, untuk membuat kebijakan pemberitahuan.
- Selama berminggu-minggu, untuk membuat keputusan taktis.
- Selama berbulan-bulan, untuk membuat keputusan strategis.
Kami merekomendasikan 28 hari sebagai titik awal untuk mengukur SLI Anda. Nilai ini memberikan keseimbangan yang baik antara kasus penggunaan strategis dan taktis.
Untuk informasi selengkapnya, lihat bagian Site Reliability Engineering Workbook berikut:
Properti SLI yang baik
Kami menganggap SLI "baik" sebagai ukuran yang memenuhi kriteria berikut:
SLI adalah ukuran proxy yang baik untuk kepuasan pengguna.
SLI yang baik berkorelasi kuat dengan kepuasan pengguna. Anda menggunakan SLI sebagai dasar untuk tujuan tingkat layanan (SLO), yaitu nilai minimum yang ditetapkan untuk SLI. Anda menetapkan SLO sehingga sebagian besar pengguna akan merasa puas saat SLI berada dalam rentang yang ditentukan. Agar hubungan ini dapat bertahan, SLI harus menjadi ukuran proxy yang baik untuk kepuasan pengguna.
Jika SLI merupakan proxy yang baik untuk kepuasan pengguna, maka saat ada peristiwa yang memengaruhi kepuasan pengguna, SLI akan berubah ke beberapa arah. Demikian pula, jika tidak ada peristiwa yang memengaruhi kepuasan pengguna, SLI tidak akan berubah.
SLI menskalakan secara monoton dan linier berdasarkan kepuasan pengguna.
SLI yang baik diskalakan secara monoton, dan linear, sesuai dengan kebahagiaan pengguna. Jika SLI meningkat, kepuasan pengguna juga meningkat. Demikian pula, jika SLI menurun, kepuasan pengguna menurun. Jumlah peningkatan nilai SLI yang baik sesuai dengan jumlah peningkatan kepuasan pengguna.
SLI menghasilkan pengukuran yang berkisar dari 0% hingga 100%.
SLI yang baik menghasilkan pengukuran performa yang berkisar dari 0% hingga 100%: rentang ini intuitif dan mudah digunakan. Misalnya, performa SLI 100% berarti semuanya berfungsi, dan performa SLI 0% berarti tidak ada yang berfungsi.
Dengan memiliki SLI yang berkisar antara 0% hingga 100%, penyetelan SLO pada SLI menjadi mudah dan jelas: tetapkan target persentase seperti 99,9%, dan performa SLI harus berada pada atau lebih tinggi dari target tersebut agar layanan dapat memenuhi SLO-nya.
Promise
Salah satu cara untuk menerapkan SLI yang memiliki properti ini adalah dengan memikirkan SLI dalam hal promise yang dibuat untuk pengguna Anda. Dengan menghitung promise yang Anda buat dan pertahankan selama jangka waktu tertentu, Anda dapat memperoleh angka yang berkisar dari 0% hingga 100%. SLI tersebut juga diterjemahkan dengan baik ke dalam anggaran error: untuk SLO tertentu, anggaran error Anda adalah jumlah promise yang dapat Anda gagal pertahankan selama jangka waktu tertentu sambil tetap memenuhi SLO Anda.
Contoh promise meliputi:
- Untuk menampilkan respons dengan kode status
200
HTTP ke permintaan pelanggan. - Untuk merespons permintaan gRPC dalam waktu kurang dari 100 milidetik.
- Untuk menyelesaikan alur kerja "Buat Virtual Machine" dengan sukses.
- Untuk menayangkan data yang telah diperbarui dalam 10 menit terakhir.
- Untuk mulai menjalankan tugas batch terjadwal dalam waktu satu menit dari waktu mulainya.
Spesifikasi dan penerapan SLI
Spesifikasi SLI adalah hal yang ingin Anda ukur. Spesifikasi ini tidak menyertakan detail teknis yang tepat mengenai cara Anda mengukurnya. Misalnya, berikut adalah spesifikasi SLI untuk waktu pemuatan halaman:
- Persentase permintaan halaman beranda yang dimuat dalam waktu kurang dari 100 milidetik.
Ada banyak cara untuk mengukur SLI, masing-masing memiliki konsekuensi dan manfaatnya. Cara mengukur SLI adalah Penerapan SLI. Misalnya, Anda dapat menerapkan spesifikasi pemuatan halaman sebagai salah satu dari berikut:
- Kolom latensi log permintaan server aplikasi.
- Metrik yang diekspor oleh server aplikasi.
- Metrik yang diekspor oleh load balancer di depan server aplikasi.
- Layanan pemantauan black-box yang mengirimkan permintaan buatan ke sistem dan mencatat waktu yang diperlukan untuk menerima respons yang valid.
- Kode khusus aplikasi yang dieksekusi di browser pelanggan yang mencatat informasi waktu dan mengirimkannya kembali ke layanan pengumpulan.
Masing-masing pilihan ini melibatkan kompromi antara karakteristik berikut:
- {i>Fidelity<i}: seberapa akurat model menggambarkan pengalaman pengguna.
- Cakupan: berapa proporsi interaksi pengguna yang diukur.
- Biaya: jumlah uang dan waktu engineering yang diperlukan untuk membangun dan memelihara solusi.
Fidelitas terhadap pengalaman pengguna biasanya meningkat saat SLI diukur lebih dekat dengan pengguna. Misalnya, penerapan yang menggunakan kode di browser pengguna menghasilkan pengukuran latensi yang lebih akurat daripada latensi yang dirasakan oleh pengguna atau oleh pilihan pengukuran lainnya.
Konsekuensinya, pengukuran berbasis browser juga mencakup latensi yang dihasilkan oleh koneksi pengguna ke layanan Anda. Misalnya, saat layanan digunakan melalui internet publik, latensi ini mungkin sangat bervariasi tergantung lokasi geografis atau kondisi jaringan.
Hasilnya, sinyal berbasis browser merupakan proxy yang baik untuk kepuasan pengguna. Namun, sinyal ini mungkin tidak memberikan informasi yang dapat ditindaklanjuti yang dapat Anda gunakan untuk meningkatkan keandalan layanan Anda.
Untuk informasi tentang menggabungkan beberapa pengukuran untuk menyeimbangkan keseimbangan ini, lihat postingan dari The Telegraph ini.
Pengelompokan
Anda mungkin memerlukan beberapa SLI untuk layanan saat layanan melakukan jenis pekerjaan yang berbeda untuk pengguna yang berbeda, atau saat melakukan tugas tertentu dengan kemungkinan hasil yang berbeda.
Tugas yang berbeda
Layanan yang melakukan beberapa jenis pekerjaan, untuk kategori pengguna yang berbeda, dan yang setiap jenis pekerjaan memengaruhi kepuasan pengguna secara berbeda mendapatkan manfaat dari beberapa SLI.
Misalnya, jika layanan Anda menangani permintaan baca dan tulis, pengguna yang melakukan tugas tersebut mungkin memiliki persyaratan yang berbeda:
- Permintaan baca harus cepat.
- Permintaan tulis harus berhasil.
Untuk memenuhi persyaratan yang berbeda ini, SLI Anda harus dapat membedakan antara kedua kasus ini. Biasanya, metrik SLI memiliki label yang dapat Anda gunakan untuk mengklasifikasikan nilai ke dalam salah satu dari beberapa bucket.
Satu tugas dengan hasil yang berbeda
Layanan yang menjalankan satu jenis pekerjaan, tetapi dengan ekspektasi pengguna yang berbeda berdasarkan respons akan mendapatkan manfaat dari beberapa SLI.
Misalnya, jika layanan Anda hanya menawarkan akses baca ke data, pengguna mungkin memiliki toleransi latensi yang berbeda, bergantung pada hasil permintaan:
- Pengguna mungkin toleran terhadap error yang ditampilkan dengan cepat, karena pengguna dapat langsung mencoba lagi permintaan tersebut.
- Pengguna mungkin menjadi kurang toleran terhadap permintaan berhasil yang membutuhkan waktu lama.
- Pengguna paling tidak toleran terhadap skenario terburuk: permintaan yang memerlukan waktu lama untuk menampilkan error.
Dalam hal ini, SLI latensi Anda harus dapat membedakan permintaan yang berhasil dan yang gagal.
Langkah selanjutnya
Untuk mengetahui informasi tentang cara mengimplementasikan SLI untuk layanan Google Cloud menggunakan metrik Google Cloud, lihat artikel berikut:
Untuk informasi tentang mengimplementasikan SLI khusus aplikasi, lihat referensi berikut:
Untuk contoh yang menggambarkan cara membuat SLI untuk layanan yang melaporkan metrik kustom, lihat Menetapkan SLO: kemampuan observasi menggunakan metrik kustom.