Bagikan melalui


Prinsip desain keandalan

Pemadaman dan kerusakan adalah kekhawatiran serius untuk semua beban kerja. Beban kerja yang andal harus bertahan dari peristiwa tersebut dan terus secara konsisten menyediakan fungsionalitas yang dimaksudkan. Ini harus tangguh sehingga dapat mendeteksi dan menahan kesalahan sambil terus beroperasi. Ini harus dapat dipulihkan sehingga, jika gangguan melebihi langkah-langkah ketahanan, beban kerja dapat dipulihkan dalam target pemulihan yang disepakati. Ini juga harus tersedia sehingga pengguna dapat mengakses beban kerja selama periode waktu yang dijanjikan pada tingkat kualitas yang dijanjikan.

Tidak realistis untuk mengasumsikan kegagalan tidak akan terjadi, terutama ketika beban kerja dibangun untuk berjalan pada sistem terdistribusi. Beberapa komponen mungkin gagal sementara yang lain terus beroperasi. Pada titik tertentu, pengalaman pengguna mungkin terpengaruh, yang mengorbankan tujuan bisnis.

Arsitektur beban kerja harus memiliki jaminan keandalan dalam kode aplikasi, infrastruktur, dan operasi. Pilihan desain tidak boleh mengubah niat yang ditentukan oleh persyaratan bisnis. Perubahan tersebut harus dianggap sebagai tradeoff yang signifikan.

Prinsip desain dimaksudkan untuk memberikan panduan untuk aspek keandalan yang harus Anda pertimbangkan sepanjang siklus hidup pengembangan. Mulailah dengan pendekatan yang direkomendasikan dan membenarkan manfaat untuk serangkaian persyaratan. Setelah Anda mengatur strategi, dorong tindakan dengan menggunakan daftar periksa Keandalan.

Jika Anda tidak menerapkan prinsip-prinsip ini ke desain Anda, beban kerja kemungkinan besar tidak akan siap untuk mengantisipasi atau menangani masalah dalam produksi. Hasilnya mungkin gangguan layanan yang menyebabkan kerugian finansial. Dalam kasus beban kerja penting, gagal menerapkan prinsip-prinsip ini dapat membahmakan keselamatan.

Desain untuk persyaratan bisnis

Ikon tujuan Dapatkan kejelasan tentang cakupan beban kerja, pertumbuhan pengguna, dan yang paling penting menjanjikan yang telah dibuat tim kepada pelanggan eksternal dan pemangku kepentingan internal.

Desain bukan tebakan berdasarkan hasil yang tidak ditentukan atau samar. Keandalan memerlukan aktivitas yang disyaratkan yang mencapai keselarasan pada pengalaman pengguna yang dapat diterima, batasan desain, dan pada keberhasilan seperti apa dan bagaimana keberhasilannya diukur.

Menetapkan tujuan yang jelas, dapat dicapai, dan didokumenasikan, dinegosiasikan dengan pemangku kepentingan bisnis dan beralasan dalam investasi dan prakiraan yang realistis. Persyaratan ini akan secara langsung menginformasikan pilihan arsitektur Anda, mulai dari strategi ketahanan hingga alat pengamatan dan rencana penskalaan.

Pendekatan Keuntungan
Fokus pada pengumpulan informasi yang diperlukan untuk menentukan cakupan dan kedalaman solusi. Mengklarifikasi batasan yang memengaruhi tujuan bisnis. Mulailah dengan pertanyaan tingkat tinggi, seperti:

- Tingkat ketahanan, pemulihan, observabilitas, dan kesederhanaan apa yang diperlukan?
- Apakah ada batasan yang ditentukan terkait dengan biaya, kepatuhan, geografi, atau latensi?

Berdasarkan informasi itu, dokumentasikan apa yang cukup baik dan mudah dicapai.
Memahami tujuan dan batasan akan mencegah dugaan. Jika tidak, Anda mungkin terjebak dalam perulangan desain berulang, yang mengakibatkan upaya yang terbuang dan biaya yang tidak perlu.
Memandu pengambilan keputusan dengan menerjemahkan tujuan bisnis ke dalam pemahaman bersama tentang pertukaran arsitektur dalam batasan nyata. Menyajikan opsi yang berdampak:

- Biaya keuangan
- Kompleksitas rekayasa
- Pertimbangan keamanan
- Biaya overhead operasional
Ini akan membantu para pemangku kepentingan memahami biaya, kompleksitas, dan implikasi operasional dari permintaan mereka, dan membimbing mereka menuju hasil yang realistis dan selaras.
Prioritaskan menentukan hasil keandalan untuk setiap alur pengguna penting dibandingkan dengan pengukuran generik, seperti waktu operasional.

Identifikasi kemampuan dan alur yang dihadapi pengguna melalui sistem, dan untuk masing-masing, menilai nilai bisnis, pola penggunaan, dan persyaratan ketahanannya. Dorong konsekuensi pada tingkat alur untuk memastikan keputusan desain tetap selaras dengan tujuan bisnis.
Percakapan ini membantu mengalihkan pemangku kepentingan dari pernyataan yang tidak dapat dipertahankan, seperti 'situs harus selalu siap' ke harapan praktis yang dapat dicapai yang terkait dengan fungsionalitas dan hasil nyata. Hasil ini membantu menetapkan apa yang akan diselesaikan dengan teknologi dan apa yang dapat diatasi dengan rencana kelangsungan bisnis tambahan.
Pilihan desain jangkar di sekitar cakrawala waktu.

Tentukan ekspektasi penggunaan dengan prakiraan realistis. Misalnya, apa beban pengguna yang diharapkan saat diluncurkan? Apakah pertumbuhan pengguna diharapkan linier, eksponensial, atau tidak pasti.
Informasi ini akan membantu Anda merancang arsitektur yang akan mengatasi kebutuhan keandalan jangka pendek sambil menghindari keputusan desain yang akan memerlukan pengerjaan ulang yang signifikan untuk menangani cakrawala di masa mendatang. Pendekatan ini berdampak pada cara memikirkan elastisitas, alur kerja berbasis peristiwa, dan memungkinkan Anda membuat pilihan strategis sekeliling utang teknis apa yang akan dikeluarkan atau dihindari.
Faktor dependensi yang mungkin membatasi otonomi desain, seperti batasan organisasi.

Waspadai infrastruktur terpusat, mandat keamanan, kebijakan perutean jaringan, atau keputusan platform yang secara langsung memengaruhi apa yang dapat Anda janjikan dalam hal ketahanan, ketersediaan, dan pemulihan.
Memahami dependensi Anda pada layanan di luar kontrol Anda membantu Anda merancang dengan harapan realistis untuk keandalan. Ini memastikan SLO dan target RTO/RPO Anda dapat dicapai dan dikomunikasikan dengan jelas, menghindari janji berlebihan serta mengurangi kejutan.

Desain untuk ketahanan

Ikon tujuan Beban kerja harus terus berjalan dengan fungsionalitas penuh atau yang berkurang.

Anda harus mengharapkan bahwa kerusakan komponen, pemadaman platform, penurunan performa, ketersediaan sumber daya terbatas, dan kesalahan lainnya akan terjadi. Bangun ketahanan dalam sistem sehingga toleran terhadap kesalahan dan dapat menurun dengan anggun.

Pendekatan Keuntungan
Membedakan komponen yang berada di jalur kritis dari komponen yang dapat berfungsi dalam keadaan terdegradasi. Tidak semua komponen beban kerja harus sama-sama dapat diandalkan. Menentukan kekritisan membantu Anda merancang sesuai dengan kekritisan setiap komponen. Anda tidak akan merancang secara berlebihan ketahanan untuk komponen yang dapat sedikit berdampak buruk pada pengalaman pengguna, dibandingkan dengan komponen yang dapat menyebabkan masalah menyeluruh jika gagal.

Desainnya dapat efisien dalam mengalokasikan sumber daya ke komponen penting. Anda juga dapat menerapkan strategi isolasi kesalahan sehingga jika komponen noncritical gagal atau memasuki status terdegradasi, itu dapat diisolasi untuk mencegah kegagalan kaskade.
Identifikasi potensi titik kegagalan dalam sistem, terutama untuk komponen penting, dan tentukan efeknya pada alur pengguna. Anda dapat menganalisis kasus kegagalan, radius ledakan, dan intensitas kesalahan: pemadaman penuh atau parsial. Analisis ini memengaruhi desain kemampuan penanganan kesalahan di tingkat komponen.
Bangun kemampuan pelestarian diri dengan menggunakan pola desain dengan benar dan memodulasi desain untuk mengisolasi kesalahan. Sistem akan dapat mencegah masalah memengaruhi komponen hilir. Sistem akan dapat mengurangi kegagalan sementara dan permanen, penyempitan performa, dan masalah lain yang dapat memengaruhi keandalan.

Anda juga dapat meminimalkan radius ledakan.
Tambahkan kemampuan untuk menskalakan komponen penting (aplikasi dan infrastruktur) dengan mempertimbangkan batasan kapasitas layanan di wilayah yang didukung. Beban kerja akan dapat menangani lonjakan kapasitas variabel dan fluktuasi. Kemampuan ini sangat penting ketika ada beban tak terduga pada sistem, seperti lonjakan penggunaan yang valid. Jika beban kerja dirancang untuk meluaskan skala di beberapa wilayah, beban kerja tersebut bahkan dapat mengatasi potensi batasan kapasitas sumber daya sementara atau masalah lain yang berdampak pada satu wilayah.
Bangun redundansi dalam lapisan dan ketahanan pada berbagai tingkat aplikasi.

Upayakan redundansi pada fasilitas fisik dan replikasi data secara instan. Bertujuan juga untuk mencapai redundansi di lapisan fungsional yang mencakup layanan, operasi, dan personel.
Redundansi membantu meminimalkan titik kegagalan tunggal. Misalnya, jika ada komponen, zona ketersediaan, atau pemadaman regional, penyebaran redundan (dalam aktif-aktif atau aktif-pasif) memungkinkan Anda memenuhi target waktu aktif.

Menambahkan perantara mencegah dependensi langsung antara komponen dan meningkatkan buffering. Kedua manfaat ini memperkuat ketahanan sistem.
Pemberian sumber daya berlebih untuk segera mengurangi kegagalan individu pada instance cadangan dan untuk buffer terhadap konsumsi sumber daya yang tidak terkendali. Investasi yang lebih tinggi dalam provisi berlebih meningkatkan ketahanan.

Sistem akan terus beroperasi pada utilitas penuh selama kegagalan aktif bahkan sebelum operasi penskalakan dapat mulai memulihkan kegagalan. Demikian juga, Anda dapat mengurangi risiko konsumsi sumber daya yang tidak terkendali yang mengambil alih buffer yang telah Anda rencanakan, memberikan Anda waktu penting untuk penanganan krisis, sebelum terjadi kesalahan sistem atau penskalaan yang agresif.

Desain untuk pemulihan

Ikon tujuan Beban kerja sistem harus mampu mengantisipasi dan memulihkan dari sebagian besar kegagalan, dalam berbagai tingkat, dengan gangguan minimal terhadap pengalaman pengguna dan pencapaian tujuan bisnis.

Bahkan sistem yang sangat tangguh membutuhkan pendekatan kesiapsiagaan bencana, baik dalam desain arsitektur maupun operasi beban kerja. Pada lapisan data, Anda harus memiliki strategi yang dapat memperbaiki status beban kerja jika terjadi kerusakan.

Pendekatan Keuntungan
Telah menyusun, menguji, dan mendokumen rencana pemulihan yang selaras dengan target pemulihan yang dinegosiasikan. Paket harus mencakup semua komponen selain sistem secara keseluruhan. Proses yang terdefinisi dengan baik mengarah pada pemulihan cepat yang dapat mencegah dampak negatif pada keuangan dan reputasi bisnis Anda. Melakukan latihan pemulihan rutin menguji proses pemulihan komponen sistem, data, serta langkah-langkah failover dan failback untuk menghindari kebingungan ketika waktu dan integritas data adalah ukuran utama keberhasilan.
Pastikan Anda dapat memperbaiki data semua komponen stateful dalam target pemulihan Anda. Pencadangan sangat penting untuk membuat sistem kembali ke status kerja dengan menggunakan titik pemulihan tepercaya, seperti status baik yang terakhir diketahui.

Pencadangan yang tidak dapat diubah dan konsisten secara transaksional memastikan bahwa data tidak dapat diubah, dan bahwa data yang dipulihkan tidak rusak.
Terapkan kemampuan penyembuhan mandiri otomatis dalam desain. Otomatisasi ini mengurangi risiko dari faktor eksternal, seperti intervensi manusia, dan mempersingkat siklus break-fix.
Ganti komponen stateless dengan unit sementara yang tidak dapat diubah. Membangun unit ephemeral yang dapat Anda putar dan hancurkan sesuai permintaan memberikan pengulangan dan konsistensi. Gunakan model penyebaran berdampingan untuk membuat transisi ke unit baru bertambah bertahap, meminimalkan gangguan.

Desain untuk operasi

Ikon tujuan Geser ke kiri dalam operasi untuk mengantisipasi kondisi kegagalan.

Kegagalan pengujian lebih awal dan sering dalam siklus hidup pengembangan, dan menentukan dampak performa pada keandalan. Demi analisis akar penyebab dan pascamortem, Anda harus memiliki visibilitas yang dibagikan di seluruh tim mengenai status dependensi dan kegagalan yang sedang terjadi. Wawasan, diagnostik, dan pemberitahuan dari sistem yang dapat diamati sangat mendasar untuk manajemen insiden yang efektif dan peningkatan berkelanjutan.

Pendekatan Keuntungan
Bangun sistem yang dapat diamati yang dapat menghubungkan telemetri. Pemantauan dan diagnostik adalah operasi penting. Jika sesuatu gagal, Anda perlu tahu bahwa itu gagal, ketika gagal, dan mengapa gagal. Pengamatan pada tingkat komponen sangat mendasar, tetapi pengamatan agregat komponen dan alur pengguna yang berkorelasi memberikan pandangan holistik tentang status kesehatan. Data ini diperlukan untuk memungkinkan teknisi keandalan situs memprioritaskan upaya mereka untuk remediasi.
Memprediksi potensi kerusakan dan perilaku anomali. Buat kegagalan keandalan aktif terlihat dengan menggunakan pemberitahuan yang diprioritaskan dan dapat ditindaklanjuti.

Berinvestasi dalam proses dan infrastruktur yang andal untuk mempercepat triase.
Teknisi keandalan situs dapat segera diberi tahu sehingga mereka dapat mengurangi insiden situs langsung yang sedang berlangsung dan secara proaktif mengurangi potensi kegagalan yang diidentifikasi oleh pemberitahuan prediktif sebelum menjadi insiden langsung.
Simulasikan kegagalan dan jalankan pengujian di lingkungan produksi dan pra-produksi. Hal ini bermanfaat untuk mengalami kegagalan dalam produksi sehingga Anda dapat menetapkan ekspektasi realistis untuk pemulihan. Ini memungkinkan Anda membuat pilihan desain yang dengan anggun merespons kegagalan. Selain itu, ini memungkinkan Anda menguji ambang yang Anda tetapkan untuk metrik bisnis.
Bangun komponen dengan pertimbangkan otomatisasi, dan otomatiskan sebanyak yang Anda bisa. Otomatisasi meminimalkan potensi kesalahan manusia, membawa konsistensi pada pengujian, penerapan, dan operasi.
Faktor operasi rutin dan dampaknya terhadap stabilitas sistem. Beban kerja mungkin tunduk pada operasi yang sedang berlangsung, seperti revisi aplikasi, audit keamanan dan kepatuhan, peningkatan komponen, dan proses pencadangan. Memeriksa perubahan tersebut memastikan stabilitas sistem.
Terus belajar dari insiden dalam produksi. Berdasarkan insiden, Anda dapat menentukan dampak dan kekurangan dalam desain dan operasi yang mungkin tidak terdeteksi dalam praproduksi. Pada akhirnya, Anda akan dapat mendorong peningkatan berdasarkan insiden kehidupan nyata.

Sederhanakan

Ikon sasaran Hindari rekayasa desain arsitektur, kode aplikasi, dan operasi yang berlebihan.

Ini sering kali apa yang Anda hapus daripada apa yang Anda tambahkan yang mengarah ke solusi yang paling dapat diandalkan. Kesederhanaan mengurangi area permukaan untuk kontrol, meminimalkan inefisiensi dan potensi kesalahan konfigurasi atau interaksi yang tidak terduga. Di sisi lain, penyederhanaan berlebihan dapat memperkenalkan titik kegagalan tunggal. Pertahankan pendekatan yang seimbang.

Pendekatan Keuntungan
Tambahkan komponen ke arsitektur Anda hanya jika membantu Anda mencapai nilai bisnis target. Jaga agar jalur kritis tetap efisien. Merancang untuk persyaratan bisnis dapat menyebabkan solusi mudah yang mudah diterapkan dan dikelola. Hindari memiliki terlalu banyak komponen penting, karena masing-masing merupakan titik kegagalan yang signifikan.
Tetapkan standar dalam implementasi kode, penyebaran, dan proses, dan dokumentasikan. Identifikasi peluang untuk menegakkan standar tersebut dengan menggunakan validasi otomatis. Standar memberikan konsistensi dan meminimalkan kesalahan manusia. Pendekatan seperti konvensi penamaan standar dan panduan gaya kode dapat membantu Anda mempertahankan kualitas dan membuat aset mudah diidentifikasi selama pemecahan masalah.
Evaluasi apakah pendekatan teoritis diterjemahkan ke desain pragmatis yang berlaku untuk kasus penggunaan Anda. Kode aplikasi yang terlalu terperinci dapat menyebabkan interdependensi yang tidak perlu, operasi tambahan, dan pemeliharaan yang sulit.
Kembangkan kode yang cukup. Anda akan dapat mencegah masalah yang merupakan hasil dari implementasi yang tidak efisien, seperti konsumsi sumber daya yang tidak terduga, kegagalan pengguna atau aliran data, dan bug kode.

Sebaliknya, masalah keandalan harus menyebabkan tinjauan kode untuk memastikan bahwa kode cukup tangguh untuk menangani masalah.
Manfaatkan fitur yang disediakan platform dan aset bawaan yang dapat membantu Anda memenuhi target bisnis secara efektif. Pendekatan ini meminimalkan waktu pengembangan. Ini juga memungkinkan Anda untuk mengandalkan praktik yang dicoba dan diuji yang telah digunakan dengan beban kerja serupa.

Langkah selanjutnya

Daftar periksa keandalan