Pola untuk aplikasi yang skalabel dan tangguh

Last reviewed 2024-03-19 UTC

Dokumen ini memperkenalkan beberapa pola dan praktik untuk membuat aplikasi yang tangguh dan skalabel, yang menjadi dua sasaran penting dari banyak latihan arsitektur modern. Aplikasi yang dirancang dengan baik dapat menaikkan dan menurunkan skala seiring dengan meningkat dan menurunnya permintaan, serta cukup tangguh untuk menahan gangguan layanan. Membuat dan mengoperasikan aplikasi yang memenuhi persyaratan ini memerlukan perencanaan dan desain yang cermat.

Skalabilitas: Menyesuaikan kapasitas untuk memenuhi permintaan

Skalabilitas adalah ukuran kemampuan sistem untuk menangani berbagai jumlah pekerjaan dengan menambahkan atau menghapus resource dari sistem. Misalnya, aplikasi web yang skalabel adalah aplikasi yang berfungsi dengan baik dengan satu atau banyak pengguna, dan dapat menangani puncak serta penurunan traffic dengan baik.

Fleksibilitas untuk menyesuaikan resource yang digunakan oleh aplikasi adalah pendorong utama bisnis untuk beralih ke cloud. Dengan desain yang tepat, Anda dapat mengurangi biaya dengan menghapus resource yang kurang dimanfaatkan tanpa mengorbankan performa atau pengalaman pengguna. Anda juga dapat mempertahankan pengalaman pengguna yang baik selama periode traffic tinggi dengan menambahkan lebih banyak resource. Dengan cara ini, aplikasi hanya akan menggunakan resource yang diperlukan untuk memenuhi permintaan.

Google Cloud menyediakan produk dan fitur untuk membantu Anda mem-build aplikasi yang skalabel dan efisien seperti:

  • Virtual machine Compute Engine dan cluster Google Kubernetes Engine (GKE) terintegrasi dengan autoscaler sehingga Anda dapat meningkatkan atau mengurangi penggunaan resource berdasarkan pada metrik yang Anda tentukan.
  • Platform serverless Google Cloud menyediakan komputasi terkelola, database, dan layanan lain yang dapat diskalakan dengan cepat dari nol hingga tingginya volume permintaan, dan Anda hanya membayar sesuai penggunaan.
  • Produk database seperti BigQuery, Spanner, dan Bigtable dapat memberikan performa tinggi pada berbagai ukuran data yang sangat besar.
  • Cloud Monitoring menyediakan metrik di seluruh aplikasi dan infrastruktur Anda, sehingga membantu Anda membuat keputusan penskalaan berbasis data.

Ketahanan: Mendesain untuk menahan kegagalan

Aplikasi yang tangguh adalah aplikasi yang terus berfungsi meskipun terjadi kegagalan komponen sistem. Ketahanan membutuhkan perencanaan di semua tingkat arsitektur Anda. Desain ini memengaruhi cara Anda menata infrastruktur dan jaringan, serta cara mendesain aplikasi dan penyimpanan data. Ketahanan juga mencakup manusia dan budaya.

Membuat dan mengoperasikan aplikasi yang tangguh itu sulit dilakukan. Terutama, hal ini berlaku untuk aplikasi terdistribusi, yang mungkin berisi beberapa lapisan infrastruktur, jaringan, dan layanan. Kesalahan dan pemadaman dapat terjadi, dan meningkatkan ketahanan aplikasi adalah perjalanan yang berkelanjutan. Dengan perencanaan yang cermat, Anda dapat meningkatkan kemampuan aplikasi untuk mengatasi kegagalan. Dengan proses dan budaya organisasi yang tepat, Anda juga dapat belajar dari kegagalan untuk lebih meningkatkan ketahanan aplikasi Anda.

Google Cloud menyediakan alat dan layanan untuk membantu Anda membangun aplikasi yang sangat tersedia dan tangguh:

  • Layanan Google Cloud tersedia di region dan zona di seluruh dunia, sehingga Anda dapat men-deploy aplikasi untuk memenuhi sasaran ketersediaan Anda dengan sebaik-baiknya.
  • Grup instance Compute Engine dan cluster GKE dapat didistribusikan dan dikelola di seluruh zona yang tersedia dalam satu region.
  • Persistent disk regional Compute Engine direplikasi secara sinkron di seluruh zona dalam satu region.
  • Google Cloud menyediakan berbagai opsi load balancing untuk mengelola traffic aplikasi Anda, termasuk load balancing global yang dapat mengarahkan traffic ke region responsif yang terdekat dengan pengguna Anda.
  • Platform serverless Google Cloud mencakup produk komputasi dan database terkelola yang menawarkan redundansi dan load balancing bawaan.
  • Google Cloud mendukung CI/CD melalui alat native dan integrasi dengan teknologi open source populer untuk membantu mengotomatiskan proses build dan men-deploy aplikasi Anda.
  • Cloud Monitoring menyediakan metrik di seluruh aplikasi dan infrastruktur, sehingga Anda dapat mengambil keputusan berdasarkan data terkait performa dan kondisi aplikasi.

Pendorong dan batasan

Ada berbagai persyaratan dan motivasi untuk meningkatkan skalabilitas dan ketahanan aplikasi Anda. Mungkin juga ada kendala yang membatasi kemampuan Anda untuk memenuhi sasaran skalabilitas dan ketahanan Anda. Tingkat kepentingan relatif dari persyaratan dan batasan ini bervariasi, tergantung pada jenis aplikasi, profil pengguna, serta skala dan kematangan organisasi.

Pendorong

Untuk membantu memprioritaskan persyaratan Anda, pertimbangkan driver dari berbagai bagian organisasi Anda.

Pendorong bisnis

Pendorong umum dari sisi bisnis meliputi hal-hal berikut:

  • Optimalkan biaya dan konsumsi resource.
  • Minimalkan periode nonaktif aplikasi.
  • Pastikan permintaan pengguna dapat dipenuhi selama periode penggunaan yang tinggi.
  • Tingkatkan kualitas dan ketersediaan layanan.
  • Pastikan pengalaman dan kepercayaan pengguna dapat dipertahankan selama pemadaman layanan.
  • Tingkatkan fleksibilitas dan ketangkasan untuk menangani permintaan pasar yang berubah-ubah.

Pendorong pengembangan

Faktor pendorong umum dari sisi pengembangan meliputi hal-hal berikut:

  • Minimalkan waktu yang diperlukan untuk menyelidiki kegagalan.
  • Tingkatkan waktu yang dihabiskan untuk mengembangkan fitur baru.
  • Minimalkan toil berulang melalui otomatisasi.
  • Buat aplikasi menggunakan pola dan praktik industri terbaru.

Pengemudi operasi

Persyaratan yang harus dipertimbangkan dari sisi operasi meliputi hal-hal berikut:

  • Mengurangi frekuensi kegagalan yang memerlukan intervensi manual.
  • Meningkatkan kemampuan untuk otomatis pulih dari kegagalan.
  • Minimalkan toil berulang melalui otomatisasi.
  • Meminimalkan dampak dari kegagalan komponen tertentu.

Batasan

Batasan dapat membatasi kemampuan Anda untuk meningkatkan skalabilitas dan ketahanan aplikasi Anda. Pastikan keputusan desain Anda tidak menyebabkan atau berkontribusi pada batasan berikut ini:

  • Dependensi pada hardware atau software yang sulit untuk diskalakan.
  • Dependensi pada hardware atau software yang sulit dioperasikan dalam konfigurasi ketersediaan tinggi.
  • Dependensi antar-aplikasi.
  • Pembatasan pemberian lisensi.
  • Kurangnya keterampilan atau pengalaman dalam tim pengembangan dan operasi Anda.
  • Resistensi organisasi terhadap otomatisasi.

Pola dan praktik

Bagian selanjutnya dari dokumen ini mendefinisikan pola dan praktik untuk membantu Anda mem-build aplikasi yang tangguh dan skalabel. Pola ini memengaruhi semua bagian siklus proses aplikasi, termasuk desain infrastruktur, arsitektur aplikasi, pilihan penyimpanan, proses deployment, dan budaya organisasi.

Tiga tema terlihat jelas dalam pola tersebut:

  • Otomatisasi. Membuat aplikasi yang skalabel dan tangguh memerlukan otomatisasi. Mengotomatiskan penyediaan, pengujian, dan deployment aplikasi infrastruktur akan meningkatkan konsistensi dan kecepatan, serta meminimalkan kesalahan manusia.
  • Pengaitan longgar. Memperlakukan sistem sebagai kumpulan komponen independen yang dikaitkan secara longgar akan memungkinkan fleksibilitas dan ketahanan. Independensi membahas cara mendistribusikan resource secara fisik serta cara merancang aplikasi dan mendesain penyimpanan Anda.
  • Desain berbasis data. Sangat penting untuk mengumpulkan metrik demi memahami perilaku aplikasi Anda. Pengambilan keputusan tentang waktu untuk menskalakan aplikasi, atau apakah layanan tertentu tidak responsif, harus didasarkan pada data. Metrik dan log harus menjadi fitur inti.

Mengotomatiskan penyediaan infrastruktur

Buat infrastruktur yang tidak dapat diubah melalui otomatisasi untuk meningkatkan konsistensi lingkungan Anda dan meningkatkan keberhasilan deployment.

Memperlakukan infrastruktur Anda sebagai kode

Infrastructure as code (IaC) adalah teknik yang mendorong Anda untuk memperlakukan penyediaan dan konfigurasi infrastruktur dengan cara yang sama seperti Anda menangani kode aplikasi. Logika penyediaan dan konfigurasi Anda disimpan pada kontrol sumber sehingga dapat ditemukan dan dapat dibuat beberapa versi serta diaudit. Karena berada dalam repositori kode, Anda dapat memanfaatkan continuous integration dan continuous deployment pipeline (CI/CD), sehingga setiap perubahan pada konfigurasi Anda dapat diuji dan di-deploy secara otomatis.

Dengan menghapus langkah-langkah manual dari penyediaan infrastruktur Anda, IaC meminimalkan kesalahan manusia dan meningkatkan konsistensi serta reproduksibilitas aplikasi dan lingkungan Anda. Dengan cara ini, mengadopsi IaC akan meningkatkan ketahanan aplikasi Anda.

Cloud Deployment Manager memungkinkan Anda mengotomatiskan pembuatan dan pengelolaan resource Google Cloud dengan template yang fleksibel. Sebagai alternatif, Config Connector memungkinkan Anda mengelola resource menggunakan teknik dan alur kerja Kubernetes. Google Cloud juga memiliki dukungan bawaan untuk alat IaC pihak ketiga yang populer, termasuk Terraform, Chef, dan Puppet.

Membuat infrastruktur yang tidak dapat diubah

Infrastruktur yang tidak dapat diubah adalah filosofi yang dikembangkan berdasarkan manfaat infrastruktur sebagai kode. Infrastruktur yang tidak dapat diubah memerintahkan resource tidak boleh dimodifikasi setelah di-deploy. Jika mesin virtual, cluster Kubernetes, atau aturan firewall perlu diupdate, Anda dapat mengupdate konfigurasi untuk resource di repositori sumber. Setelah menguji dan memvalidasi perubahan, Anda dapat men-deploy ulang resource sepenuhnya menggunakan konfigurasi baru. Dengan kata lain, Anda akan membuat ulang resource, bukan menyesuaikan resource.

Pembuatan infrastruktur yang tidak dapat diubah akan menghasilkan deployment dan rollback yang lebih dapat diprediksi. Hal ini juga mengurangi masalah yang umum terjadi pada infrastruktur yang dapat berubah, seperti drift konfigurasi dan server snowflake. Dengan cara ini, mengadopsi infrastruktur yang tidak dapat diubah akan meningkatkan konsistensi dan keandalan lingkungan Anda.

Mendesain untuk ketersediaan tinggi

Ketersediaan adalah ukuran pecahan waktu dari suatu layanan yang dapat digunakan. Ketersediaan sering digunakan sebagai indikator utama dari kondisi layanan secara keseluruhan. Arsitektur yang sangat tersedia bertujuan untuk memaksimalkan ketersediaan layanan, biasanya melalui deployment komponen secara redundan. Secara sederhana, mencapai ketersediaan tinggi biasanya melibatkan distribusi resource komputasi, load balancing, dan replikasi data.

Mendistribusikan resource secara fisik

Layanan Google Cloud tersedia di seluruh lokasi di dunia. Lokasi ini dibagi menjadi region dan zona. Cara Anda men-deploy aplikasi di seluruh region dan zona ini memengaruhi ketersediaan, latensi, dan properti lainnya dari aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat praktik terbaik terkait pemilihan region Compute Engine.

Redundansi adalah duplikasi komponen sistem untuk meningkatkan ketersediaan keseluruhan sistem tersebut. Di Google Cloud, redundansi biasanya dicapai dengan men-deploy aplikasi atau layanan Anda ke beberapa zona, atau bahkan di beberapa region. Jika ada di beberapa zona atau region, layanan tersebut dapat menangani gangguan layanan di zona atau region tertentu dengan lebih baik. Meskipun Google Cloud melakukan segala upaya untuk mencegah gangguan tersebut, peristiwa tertentu tidak dapat diprediksi dan sebaiknya kita selalu siap terhadap gangguan.

Dengan grup instance terkelola Compute Engine, Anda dapat mendistribusikan instance mesin virtual di beberapa zona dalam satu region dan mengelola instance sebagai unit logis. Google Cloud juga menawarkan persistent disk regional untuk mereplikasi data Anda secara otomatis ke dua zona dalam satu region.

Anda juga dapat meningkatkan ketersediaan dan ketahanan aplikasi yang di-deploy di GKE dengan membuat cluster regional. Cluster regional mendistribusikan komponen bidang kontrol GKE, node, dan pod di beberapa zona dalam satu region. Dengan terdistribusinya komponen bidang kontrol, Anda dapat terus mengakses bidang kontrol cluster bahkan selama pemadaman yang melibatkan satu atau beberapa (tetapi tidak semua) zona.

Mendukung layanan terkelola

Daripada menginstal, mendukung, dan mengoperasikan semua bagian stack aplikasi secara terpisah, Anda dapat menggunakan layanan terkelola untuk menggunakan bagian-bagian stack aplikasi Anda sebagai layanan. Misalnya, daripada menginstal dan mengelola database MySQL di virtual machine (VM), Anda dapat menggunakan database MySQL yang disediakan oleh Cloud SQL. Anda kemudian akan mendapatkan Perjanjian Tingkat Layanan (SLA) ketersediaan dan dapat mengandalkan Google Cloud untuk mengelola replikasi data, pencadangan, dan infrastruktur yang mendasarinya. Dengan menggunakan layanan terkelola, Anda dapat menghemat waktu dalam mengelola infrastruktur dan memiliki banyak waktu untuk meningkatkan keandalan aplikasi.

Banyak dari layanan komputasi, database, dan penyimpanan terkelola Google Cloud menawarkan redundansi bawaan, yang dapat membantu Anda memenuhi sasaran ketersediaan. Beberapa layanan ini menawarkan model regional, yang berarti infrastruktur yang menjalankan aplikasi Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut. Jika suatu zona tidak tersedia, aplikasi atau data Anda akan otomatis disalurkan dari zona lain di region tersebut.

Layanan database dan penyimpanan tertentu juga menawarkan ketersediaan multi-regional, yang berarti bahwa infrastruktur yang menjalankan aplikasi Anda terletak di beberapa region. Layanan multi-regional dapat menahan hilangnya seluruh region, tetapi dengan biaya latensi yang lebih tinggi.

Load balancing di setiap tingkat

Load balancing memungkinkan Anda mendistribusikan traffic di antara grup resource. Saat mendistribusikan traffic, Anda membantu memastikan bahwa setiap resource tidak kelebihan beban saat resource lain tidak ada aktivitas. Sebagian besar load balancer juga menyediakan fitur health check untuk membantu memastikan traffic tidak diarahkan ke resource yang tidak responsif atau tidak tersedia.

Google Cloud menawarkan beberapa pilihan load balancing. Jika aplikasi Anda berjalan di Compute Engine atau GKE, Anda dapat memilih jenis load balancer yang paling sesuai, tergantung pada jenis, sumber, dan aspek traffic lainnya. Untuk mengetahui informasi selengkapnya, lihat ringkasan load balancing dan ringkasan jaringan GKE.

Sebagai alternatif, beberapa layanan yang dikelola Google Cloud, seperti App Engine dan Cloud Run, secara otomatis melakukan load balancing.

Praktik yang umum dilakukan adalah melakukan load balancing pada permintaan yang diterima dari sumber eksternal, seperti dari klien web atau seluler. Namun, penggunaan load balancer pada layanan atau tingkat yang berbeda dalam aplikasi juga dapat meningkatkan ketahanan dan fleksibilitas. Untuk tujuan ini, Google Cloud menyediakan load balancing lapisan 4 dan lapisan 7 untuk internal.

Diagram berikut menunjukkan load balancer eksternal yang mendistribusikan traffic global di dua region, us-central1 dan asia-east1. Contoh ini juga menunjukkan load balancing internal yang mendistribusikan traffic dari tingkat web ke tingkat internal dalam setiap region.

Mendistribusikan traffic global di seluruh region.

Memantau infrastruktur dan aplikasi

Sebelum dapat memutuskan cara meningkatkan ketahanan dan skalabilitas aplikasi, Anda harus memahami perilakunya. Memiliki akses ke kumpulan lengkap metrik dan deret waktu yang relevan terkait performa dan kondisi aplikasi dapat membantu Anda menemukan potensi masalah sebelum menyebabkan pemadaman. Langkah-langkah ini juga dapat membantu Anda mendiagnosis dan menyelesaikan pemadaman layanan jika terjadi. Bab memantau sistem terdistribusi dalam buku SRE Google memberikan ringkasan yang baik tentang beberapa pendekatan pemantauan.

Selain memberikan insight tentang kondisi aplikasi, metrik juga dapat digunakan untuk mengontrol perilaku penskalaan otomatis untuk layanan Anda.

Cloud Monitoring adalah alat pemantauan terintegrasi Google Cloud. Cloud Monitoring menyerap peristiwa, metrik, dan metadata, serta memberikan insight melalui dasbor dan pemberitahuan. Sebagian besar layanan Google Cloud secara otomatis mengirim metrik ke Cloud Monitoring, dan Google Cloud juga mendukung banyak sumber pihak ketiga. Cloud Monitoring juga dapat digunakan sebagai backend untuk alat pemantauan open source yang populer, yang menyediakan "satu panel kaca" untuk mengamati aplikasi Anda.

Memantau di semua tingkatan

Mengumpulkan metrik di berbagai level atau tingkat dalam arsitektur Anda memberikan gambaran menyeluruh tentang kesehatan dan perilaku aplikasi Anda.

Pemantauan infrastruktur

Pemantauan tingkat infrastruktur memberikan kondisi dan performa dasar untuk aplikasi Anda. Pendekatan pemantauan ini merekam informasi seperti beban CPU, penggunaan memori, dan jumlah byte yang ditulis ke disk. Metrik ini dapat menunjukkan bahwa mesin kelebihan beban atau tidak berfungsi seperti yang diharapkan.

Selain metrik yang dikumpulkan secara otomatis, Cloud Monitoring menyediakan agen yang dapat diinstal untuk mengumpulkan informasi lebih mendetail dari VM Compute Engine, termasuk dari aplikasi pihak ketiga yang berjalan di VM tersebut.

Pemantauan aplikasi

Sebaiknya Anda merekam metrik level aplikasi. Misalnya, Anda mungkin ingin mengukur durasi yang diperlukan untuk menjalankan kueri tertentu, atau berapa lama waktu yang diperlukan untuk melakukan urutan panggilan layanan terkait. Anda dapat menentukan sendiri metrik level aplikasi ini. Model ini merekam informasi yang tidak dapat dilakukan oleh metrik Cloud Monitoring bawaan. Metrik level aplikasi dapat menangkap kondisi gabungan yang lebih mencerminkan alur kerja utama, dan dapat mengungkapkan masalah yang tidak dimiliki metrik infrastruktur tingkat rendah.

Sebaiknya gunakan juga OpenTelemetry untuk merekam metrik level aplikasi Anda. OpenTelemetry menyediakan satu standar terbuka untuk data telemetri. Gunakan OpenTelemetry untuk mengumpulkan dan mengekspor data dari aplikasi dan infrastruktur cloud pertama Anda. Kemudian, Anda dapat memantau dan menganalisis data telemetri yang diekspor.

Pemantauan layanan

Untuk aplikasi terdistribusi dan berbasis microservice, Anda harus memantau interaksi antara berbagai layanan dan komponen dalam aplikasi Anda. Metrik ini dapat membantu Anda mendiagnosis masalah seperti peningkatan jumlah error atau latensi di antara layanan.

Istio adalah alat open source yang memberikan insight dan kontrol operasional atas jaringan microservice Anda. Istio menghasilkan telemetri yang mendetail untuk semua komunikasi layanan, dan dapat dikonfigurasi untuk mengirim metrik ke Cloud Monitoring.

Pemantauan menyeluruh

Pemantauan menyeluruh, juga disebut pemantauan black-box, yaitu menguji perilaku yang terlihat secara eksternal seperti yang dilihat pengguna. Jenis pemantauan ini memeriksa apakah pengguna dapat menyelesaikan tindakan penting sesuai dengan batas yang telah ditentukan. Pemantauan mendetail ini dapat mengungkap error atau latensi yang mungkin tidak terlihat oleh pemantauan terperinci, dan mengungkapkan ketersediaan seperti yang dirasakan oleh pengguna.

Mengekspos kondisi aplikasi Anda

Sistem yang sangat tersedia harus memiliki cara untuk menentukan bagian mana dari sistem yang responsif dan berfungsi dengan benar. Jika resource tertentu tampak tidak responsif, sistem dapat mengirim permintaan ke tempat lain. Umumnya, health check melibatkan pengambilan data dari endpoint untuk menentukan status atau kondisi layanan.

Health check merupakan tanggung jawab utama load balancer. Saat membuat load balancer yang dikaitkan dengan grup instance virtual machine Anda juga menentukan health check. Health check menentukan cara load balancer berkomunikasi dengan mesin virtual untuk mengevaluasi apakah instance tertentu harus terus menerima traffic. Health check load-balancer juga dapat digunakan untuk autohealing grup instance secara otomatis sehingga mesin yang tidak responsif dibuat ulang. Jika Anda menjalankan aplikasi di GKE dan melakukan load balancing pada traffic eksternal melalui resource masuk, GKE secara otomatis akan membuat health check yang sesuai untuk load balancer.

Kubernetes memiliki dukungan bawaan untuk pemeriksaan keaktifan dan kesiapan. Pemeriksaan ini membantu orkestrasi Kubernetes menentukan cara mengelola pod dan permintaan dalam cluster Anda. Jika aplikasi Anda di-deploy di Kubernetes, sebaiknya ekspos kondisi aplikasi Anda untuk pemeriksaan ini melalui endpoint yang sesuai.

Menetapkan metrik utama

Pemantauan dan health check menyediakan metrik tentang perilaku dan status aplikasi Anda. Langkah selanjutnya adalah menganalisis metrik tersebut untuk menentukan mana yang paling deskriptif atau berdampak paling besar. Metrik utama bervariasi, tergantung pada platform tempat aplikasi di-deploy, dan pada pekerjaan yang dilakukan aplikasi.

Anda tidak hanya menemukan satu metrik yang menunjukkan apakah akan melakukan penskalaan aplikasi, atau bahwa layanan tertentu tidak responsif. Sering kali hal tersebut merupakan kombinasi dari beberapa faktor yang secara bersamaan menunjukkan serangkaian kondisi tertentu. Dengan Cloud Monitoring, Anda dapat membuat metrik kustom untuk membantu mencatat kondisi tersebut. Buku Google SRE mendukung empat sinyal emas untuk memantau sistem yang ditampilkan kepada pengguna: latensi, traffic, error, dan saturasi.

Pertimbangkan juga toleransi Anda terhadap pencilan. Menggunakan nilai rata-rata atau median untuk mengukur kesehatan atau performa mungkin bukan pilihan terbaik, karena pengukuran ini dapat menyembunyikan ketidakseimbangan yang luas. Oleh karena itu, penting untuk mempertimbangkan distribusi metrik; persentil ke 99 mungkin merupakan ukuran yang lebih informatif daripada rata-rata.

Menentukan tujuan tingkat layanan (SLO)

Anda dapat menggunakan metrik yang dikumpulkan oleh sistem pemantauan untuk menentukan tujuan tingkat layanan (SLO). SLO menentukan tingkat target performa atau keandalan untuk layanan Anda. SLO adalah pilar utama praktik SRE dan dijelaskan secara mendetail di bab tujuan tingkat layanan dalam buku SRE, dan juga dalam mengimplementasikan SLOs di workbook SRE.

Anda dapat menggunakan pemantauan layanan untuk menentukan SLO berdasarkan metrik di Cloud Monitoring. Anda dapat membuat kebijakan pemberitahuan di SLO untuk memberi tahu apakah Anda berisiko melanggar SLO.

Menyimpan metrik

Metrik dari sistem pemantauan Anda berguna dalam jangka pendek untuk membantu health check secara real time atau menyelidiki masalah terbaru. Cloud Monitoring menyimpan metrik Anda selama beberapa minggu agar dapat memenuhi kasus penggunaan tersebut secara optimal.

Namun, menyimpan metrik pemantauan Anda untuk analisis jangka panjang juga memiliki nilai tersendiri. Memiliki akses ke data historis dapat membantu Anda mengadopsi pendekatan berbasis data untuk meningkatkan kualitas arsitektur aplikasi. Anda dapat menggunakan data yang dikumpulkan selama pemadaman layanan maupun setelahnya untuk mengidentifikasi bottleneck dan interdependensi dalam aplikasi Anda. Anda juga dapat menggunakan data tersebut untuk membantu membuat dan memvalidasi pengujian yang bermakna.

Data historis juga dapat membantu memvalidasi bahwa aplikasi Anda mendukung sasaran bisnis selama periode penting. Misalnya, data dapat membantu menganalisis bagaimana aplikasi Anda diskalakan selama acara promosi dengan traffic tinggi selama beberapa kuartal atau bahkan tahun terakhir.

Untuk mengetahui detail tentang cara mengekspor dan menyimpan metrik, lihat solusi Ekspor metrik Cloud Monitoring.

Menentukan profil penskalaan

Anda ingin aplikasi memenuhi pengalaman pengguna dan sasaran performa tanpa penyediaan resource yang berlebihan.

Diagram berikut menunjukkan cara representasi sederhana dari profil penskalaan aplikasi. Aplikasi mempertahankan level dasar resource, dan menggunakan penskalaan otomatis untuk merespons perubahan permintaan.

Profil penskalaan aplikasi.

Menyeimbangkan biaya dan pengalaman pengguna

Menentukan apakah akan menskalakan aplikasi pada dasarnya adalah tentang menyeimbangkan biaya dengan pengalaman pengguna. Tentukan tingkat performa minimum yang dapat diterima, dan mungkin juga tempat untuk menetapkan batas. Batas ini bervariasi dari satu aplikasi ke aplikasi lainnya, dan mungkin juga di berbagai komponen atau layanan dalam satu aplikasi.

Misalnya, aplikasi web atau seluler yang ditampilkan kepada konsumen mungkin memiliki sasaran latensi yang ketat. Riset menunjukkan bahwa keterlambatan yang kecil sekalipun dapat berdampak negatif terhadap cara pengguna memandang aplikasi Anda, sehingga menghasilkan konversi yang lebih rendah dan pendaftaran yang lebih sedikit. Oleh karena itu, penting untuk memastikan bahwa aplikasi Anda memiliki kapasitas penayangan yang cukup untuk merespons permintaan pengguna dengan cepat. Dalam instance ini, biaya yang lebih tinggi untuk menjalankan lebih banyak server web merupakan hal yang wajar.

Rasio biaya terhadap performa mungkin berbeda untuk aplikasi internal yang tidak signifikan bagi bisnis, dimana pengguna mungkin lebih toleran terhadap keterlambatan yang kecil. Oleh karena itu, profil penskalaan Anda bisa menjadi tidak terlalu agresif. Dalam hal ini, menjaga biaya tetap rendah mungkin lebih penting daripada mengoptimalkan pengalaman pengguna.

Menetapkan resource dasar pengukuran

Komponen penting lain dari profil penskalaan Anda adalah menentukan kumpulan resource minimum yang sesuai.

Virtual machine atau cluster GKE Compute Engine biasanya memerlukan waktu untuk meningkatkan skalanya karena node baru perlu dibuat dan diinisialisasi. Oleh karena itu, Anda mungkin perlu mempertahankan kumpulan resource minimum, meskipun tidak ada traffic. Sekali lagi, jumlah resource dasar dipengaruhi oleh jenis aplikasi dan profil traffic.

Sebaliknya, teknologi serverless seperti App Engine, fungsi Cloud Run, dan Cloud Run dirancang untuk melakukan penskalaan hingga nol, dan agar dapat memulai serta melakukan penskalaan dengan cepat, bahkan dalam instance cold start. Bergantung pada jenis aplikasi dan profil traffic, teknologi ini dapat memberikan efisiensi untuk bagian aplikasi Anda.

Konfigurasi penskalaan otomatis

Penskalaan otomatis membantu Anda menskalakan resource komputasi yang digunakan oleh aplikasi Anda secara otomatis. Biasanya, penskalaan otomatis terjadi saat metrik tertentu terlampaui atau kondisi terpenuhi. Misalnya, jika latensi permintaan ke tingkat web mulai melebihi nilai tertentu, Anda dapat otomatis menambahkan lebih banyak mesin untuk meningkatkan kapasitas penayangan.

Banyak produk komputasi Google Cloud yang memiliki fitur penskalaan otomatis. Layanan terkelola serverless seperti Cloud Run, Cloud Run Functions, dan App Engine dirancang untuk melakukan penskalaan dengan cepat. Layanan ini biasanya menawarkan opsi konfigurasi untuk membatasi atau memengaruhi perilaku penskalaan otomatis, tetapi secara umum, banyak perilaku autoscaler yang disembunyikan dari operator.

Compute Engine dan GKE memberikan lebih banyak opsi untuk mengontrol perilaku penskalaan. Dengan Compute Engine, Anda dapat melakukan penskalaan berdasarkan berbagai input, termasuk metrik kustom Cloud Monitoring dan kapasitas penyaluran load-balancer. Anda dapat menetapkan batas minimum dan maksimum pada perilaku penskalaan, dan Anda dapat menentukan kebijakan penskalaan otomatis dengan beberapa sinyal untuk menangani berbagai skenario. Seperti GKE, Anda dapat mengonfigurasi autoscaler cluster untuk menambahkan atau menghapus node berdasarkan beban kerja atau pod metrik, atau pada metrik eksternal ke cluster.

Sebaiknya konfigurasikan perilaku penskalaan otomatis berdasarkan metrik aplikasi utama, profil biaya, dan tingkat resource minimum yang Anda tentukan.

Meminimalkan waktu startup

Agar penskalaan menjadi efektif, proses tersebut harus dilakukan dengan cukup cepat untuk menangani beban yang meningkat. Terutama saat menambahkan kapasitas komputasi atau inferensi.

Menggunakan gambar yang telah disimulasikan

Jika aplikasi Anda berjalan di VM Compute Engine, Anda mungkin perlu menginstal software dan mengonfigurasi instance untuk menjalankan aplikasi Anda. Meskipun Anda dapat menggunakan skrip startup untuk mengonfigurasi instance baru, cara yang lebih efisien adalah dengan membuat image kustom. Image kustom adalah boot disk yang Anda siapkan dengan konfigurasi dan software khusus aplikasi.

Untuk mengetahui informasi selengkapnya tentang mengelola gambar, baca artikel praktik terbaik pengelolaan gambar.

Setelah membuat image, Anda dapat menentukan template instance. Template instance menggabungkan boot disk image, jenis mesin, dan properti instance lainnya. Kemudian, Anda dapat menggunakan template instance untuk membuat instance VM individual atau grup instance terkelola. Template instance adalah cara yang mudah untuk menyimpan konfigurasi instance VM sehingga Anda dapat menggunakannya nanti untuk membuat instance VM baru yang identik.

Meskipun membuat image kustom dan template instance dapat meningkatkan kecepatan deployment, hal ini juga dapat meningkatkan biaya pemeliharaan karena image mungkin perlu lebih sering diupdate. Untuk mengetahui informasi selengkapnya, lihat dokumen menyeimbangkan konfigurasi image dan kecepatan deployment.

Memasukkan aplikasi ke dalam container

Alternatif untuk mem-build instance VM yang disesuaikan adalah dengan menyimpan aplikasi Anda dalam container Container adalah paket software yang ringan, mandiri, dan dapat dieksekusi, yang mencakup semua hal yang diperlukan untuk menjalankan aplikasi: kode, runtime, alat sistem, library sistem, dan setelan. Karakteristik ini membuat aplikasi dalam container lebih portabel lebih mudah di-deploy, dan lebih mudah dikelola dalam skala besar dibandingkan mesin virtual. Container juga biasanya memulai dengan cepat, sehingga cocok untuk aplikasi yang skalabel dan tangguh.

Google Cloud menawarkan beberapa layanan untuk menjalankan container aplikasi Anda. Cloud Run menyediakan platform komputasi terkelola dan serverless untuk menghosting container stateless Anda. Lingkungan App Engine Fleksibel menghosting container Anda di platform as a service (PaaS) terkelola. GKE menyediakan lingkungan Kubernetes terkelola untuk menghosting dan mengatur aplikasi dalam container. Anda juga dapat menjalankan penampung aplikasi di Compute Engine jika memerlukan kontrol penuh atas lingkungan container.

Mengoptimalkan aplikasi Anda untuk startup yang cepat

Selain memastikan infrastruktur dan aplikasi Anda dapat di-deploy seefisien mungkin, penting juga untuk memastikan aplikasi Anda online dengan cepat.

Pengoptimalan yang sesuai untuk aplikasi Anda bervariasi, bergantung pada karakteristik dan platform eksekusi aplikasi. Oleh karena itu, sangat penting untuk melakukan hal berikut:

  • Temukan dan hilangkan bottleneck dengan membuat profil bagian penting aplikasi yang dipanggil saat startup.
  • Kurangi waktu startup awal dengan menerapkan teknik seperti inisialisasi lambat, terutama untuk resource yang mahal.
  • Minimalkan dependensi aplikasi yang mungkin perlu dimuat saat startup dilakukan.

Mendukung arsitektur modular

Anda dapat meningkatkan fleksibilitas aplikasi dengan memilih arsitektur yang memungkinkan komponen untuk di-deploy, dikelola, dan diskalakan secara independen. Pola ini juga dapat meningkatkan ketahanan dengan menghilangkan titik tunggal kegagalan.

Memecah aplikasi Anda menjadi beberapa layanan independen

Jika Anda mendesain aplikasi sebagai sekumpulan layanan independen yang dikaitkan secara longgar, Anda dapat meningkatkan fleksibilitas aplikasi. Jika Anda mengadopsi desain yang dikaitkan secara longgar, layanan Anda dapat dirilis dan di-deploy secara independen. Dengan banyaknya manfaat lain, pendekatan ini memungkinkan layanan tersebut menggunakan tech stack yang berbeda dan dikelola oleh tim yang berbeda. Pendekatan yang dikaitkan secara longgar ini adalah tema utama pola arsitektur seperti microservice dan SOA.

Saat mempertimbangkan cara menetapkan batasan terkait layanan, persyaratan ketersediaan dan skalabilitas adalah dimensi yang utama. Misalnya, jika komponen tertentu memiliki persyaratan ketersediaan atau profil penskalaan yang berbeda dari komponen Anda yang lain, komponen tersebut mungkin merupakan kandidat yang baik untuk layanan mandiri.

Bertujuan untuk menciptakan status stateless

Aplikasi atau layanan stateless tidak mempertahankan data atau status persisten lokal. Model stateless memastikan bahwa Anda dapat menangani setiap permintaan atau interaksi dengan layanan, terlepas dari permintaan sebelumnya. Model ini memfasilitasi skalabilitas dan pemulihan, karena artinya layanan dapat bertambah, menyusut, atau dimulai ulang tanpa kehilangan data yang diperlukan untuk menangani setiap proses atau permintaan yang sedang berlangsung. Status stateless sangat penting saat Anda menggunakan autoscaler, karena instance, node, atau pod yang menghosting layanan dapat dibuat dan dihancurkan secara tiba-tiba.

Mungkin tidak semua layanan Anda bersifat stateless. Dalam kasus tersebut, jelaskan layanan yang memerlukan status secara eksplisit. Dengan memastikan pemisahan yang jelas dari layanan stateless dan stateful, Anda dapat memastikan skalabilitas yang mudah untuk layanan stateless sekaligus mengadopsi pendekatan yang lebih dipertimbangkan untuk layanan stateful.

Mengelola komunikasi antarlayanan

Salah satu tantangan arsitektur microservice terdistribusi adalah pengelolaan komunikasi antarlayanan. Seiring pertumbuhan jaringan layanan Anda, kemungkinan interdependensi layanan juga akan berkembang. Anda tentu tidak ingin kegagalan satu layanan mengakibatkan kegagalan layanan lain, yang terkadang disebut kegagalan beruntun.

Anda dapat membantu mengurangi traffic ke layanan kelebihan beban atau layanan yang gagal dengan menerapkan teknik seperti pola pemutus sirkuit, backoff eksponensial, dan degradasi halus. Pola ini meningkatkan ketahanan aplikasi Anda baik dengan memberikan kesempatan untuk pulih pada layanan overload, atau dengan menangani status error dengan baik. Untuk informasi selengkapnya, lihat bab menangani kegagalan beruntun di buku Google SRE.

Penggunaan mesh layanan dapat membantu Anda mengelola traffic di seluruh layanan yang terdistribusi. Mesh layanan adalah software yang menghubungkan layanan, dan membantu memisahkan logika bisnis dari jaringan. Mesh layanan biasanya menyediakan fitur ketahanan seperti percobaan ulang permintaan, failover, dan pemutus sirkuit.

Menggunakan teknologi database dan penyimpanan yang sesuai

Database dan jenis penyimpanan tertentu sulit untuk diskalakan dan dibuat tangguh. Pastikan pilihan database Anda tidak membatasi ketersediaan dan skalabilitas aplikasi.

Mengevaluasi kebutuhan database Anda

Pola desain aplikasi Anda sebagai sekumpulan layanan independen juga meluas ke database dan penyimpanan Anda. Sebaiknya pilih jenis penyimpanan yang berbeda untuk berbagai bagian aplikasi Anda, sehingga membuat penyimpanan menjadi heterogen.

Aplikasi konvensional sering beroperasi secara eksklusif dengan database relasional. Database relasional menawarkan fungsionalitas yang berguna seperti transaksi, konsistensi yang kuat, integritas referensial, dan kueri canggih di seluruh tabel. Fitur-fitur ini menjadikan database relasional pilihan yang baik untuk banyak fitur aplikasi umum. Namun, database relasional juga memiliki beberapa batasan. Library ini biasanya sulit untuk diskalakan, dan memerlukan pengelolaan yang cermat dalam konfigurasi ketersediaan tinggi. Database relasional mungkin bukan pilihan terbaik untuk semua kebutuhan database Anda.

Database non-relasional, sering disebut sebagai database NoSQL, menggunakan pendekatan yang berbeda. Meskipun detailnya bervariasi di berbagai produk, database NoSQL biasanya mengorbankan beberapa fitur database relasional demi meningkatkan ketersediaan dan skalabilitas yang lebih mudah. Dalam hal teorema CAP, database NoSQL sering memilih ketersediaan daripada konsistensi.

Ketepatan database NoSQL biasanya bergantung pada tingkat konsistensi yang diperlukan. Jika model data Anda untuk layanan tertentu tidak memerlukan semua fitur RDBMS, dan dapat dirancang agar konsisten, memilih database NoSQL mungkin menawarkan peningkatan ketersediaan dan skalabilitas.

Dalam pengelolaan data, database relasional dan non-relasional sering kali dianggap sebagai teknologi pelengkap, bukan teknologi yang bersaing. Dengan menggunakan kedua jenis database secara strategis, organisasi dapat memanfaatkan kekuatan masing-masing untuk mencapai hasil yang optimal dalam penyimpanan, pengambilan, dan analisis data.

Selain berbagai database relasional dan NoSQL, Google Cloud juga menawarkan Spanner, database yang sangat konsisten, sangat tersedia, dan terdistribusi secara global dengan dukungan untuk SQL. Untuk mengetahui informasi tentang cara memilih database yang tepat di Google Cloud, lihat database Google Cloud.

Mengimplementasikan cache

Tujuan utama cache adalah meningkatkan performa pengambilan data dengan mengurangi kebutuhan untuk mengakses lapisan penyimpanan dasar yang lebih lambat.

Menyimpan data ke dalam cache mendukung peningkatan skalabilitas dengan mengurangi ketergantungan pada penyimpanan berbasis disk. Karena permintaan dapat disalurkan dari memori, latensi permintaan ke lapisan penyimpanan berkurang, yang biasanya memungkinkan layanan Anda untuk menangani lebih banyak permintaan. Selain itu, caching dapat mengurangi beban pada layanan yang merupakan downstream aplikasi Anda, terutama database, sehingga komponen lain yang berinteraksi dengan layanan downstream tersebut juga dapat diskalakan dengan lebih mudah atau tidak sama sekali.

Menyimpan ke cache juga dapat meningkatkan ketahanan dengan mendukung teknik seperti graceful degradation. Jika lapisan penyimpanan yang mendasarinya kelebihan beban atau tidak tersedia, cache dapat menangani permintaan secara terus menerus. Dan meskipun data yang ditampilkan dari cache mungkin tidak lengkap atau bukan yang terbaru, data tersebut mungkin dapat diterima untuk skenario tertentu.

Memorystore for Redis menyediakan layanan terkelola sepenuhnya yang didukung oleh datastore dalam memori Redis. Memorystore for Redis menyediakan akses latensi rendah dan throughput tinggi untuk data yang banyak diakses. Layanan ini dapat di-deploy dalam konfigurasi ketersediaan tinggi yang menyediakan replikasi lintas zona dan failover otomatis.

Memodernisasi proses dan budaya pengembangan Anda

DevOps dapat dianggap sebagai sekumpulan proses, budaya, dan alat yang mendukung fleksibilitas serta mengurangi waktu penyiapan produk untuk aplikasi dan fitur dengan mengurai silo antara pengembangan, operasi, dan tim terkait. Teknik DevOps bertujuan untuk meningkatkan kualitas dan keandalan software.

Pembahasan mendetail tentang DevOps berada di luar cakupan dokumen ini, tetapi beberapa aspek utama yang berkaitan dengan peningkatan keandalan dan ketahanan aplikasi Anda dibahas pada bagian berikut. Untuk mengetahui detail selengkapnya, lihat halaman DevOps Google Cloud.

Mendesain untuk kemudahan pengujian

Pengujian otomatis adalah komponen utama dari praktik pengiriman software modern. Kemampuan untuk menjalankan serangkaian pengujian unit, integrasi, dan sistem yang komprehensif sangat penting untuk memverifikasi bahwa aplikasi Anda berjalan seperti yang diharapkan, dan dapat melanjutkan ke tahap berikutnya dari siklus deployment. Kemampuan pengujian adalah kriteria desain utama untuk aplikasi Anda.

Sebaiknya gunakan pengujian unit untuk sebagian besar pengujian karena pengujian jenis ini cepat dijalankan dan biasanya mudah dikelola. Sebaiknya Anda juga mengotomatiskan pengujian sistem dan integrasi yang lebih tinggi. Pengujian ini sangat disederhanakan jika Anda mengadopsi teknik infrastruktur sebagai kode, karena lingkungan dan resource pengujian khusus dapat dibuat sesuai permintaan, lalu dihapus setelah pengujian selesai.

Seiring dengan meningkatnya persentase codebase yang dicakup oleh pengujian, Anda juga mengurangi ketidakpastian dan potensi penurunan keandalan dari setiap perubahan kode. Cakupan pengujian yang memadai berarti Anda dapat membuat lebih banyak perubahan sebelum keandalan turun di bawah tingkat yang dapat diterima.

Pengujian otomatis merupakan komponen integral dari continuous integration. Mengeksekusi serangkaian pengujian otomatis yang andal pada setiap commit kode akan memberikan masukan yang cepat tentang perubahan, sehingga dapat meningkatkan kualitas dan keandalan software Anda. Alat native Google Cloud seperti Cloud Build dan alat pihak ketiga seperti Jenkins dapat membantu Anda menerapkan continuous integration.

Mengotomatiskan deployment Anda

Continuous integration dan otomatisasi pengujian komprehensif memberi Anda keyakinan terhadap stabilitas software. Jika sudah siap, langkah Anda selanjutnya adalah mengotomatiskan deployment aplikasi Anda. Tingkat otomatisasi deployment bervariasi bergantung pada kematangan organisasi Anda.

Memilih strategi deployment yang tepat sangat penting untuk meminimalkan risiko yang terkait dengan deployment software baru. Dengan strategi yang tepat, Anda dapat secara bertahap meningkatkan eksposur versi baru ke audiens yang lebih luas, dan memverifikasi perilaku di sepanjang prosesnya. Anda juga dapat menetapkan ketentuan yang jelas untuk rollback jika terjadi masalah.

Mengadopsi praktik SRE untuk mengatasi kegagalan

Untuk aplikasi terdistribusi yang beroperasi dalam skala besar, beberapa tingkat kegagalan pada satu atau beberapa komponen adalah hal yang umum. Jika Anda mengadopsi pola yang dibahas dalam dokumen ini, aplikasi Anda dapat menangani gangguan yang disebabkan oleh rilis software yang rusak, penghentian mesin virtual yang tidak terduga, atau bahkan pemadaman infrastruktur yang memengaruhi seluruh zona.

Namun, meskipun menggunakan desain aplikasi yang cermat, Anda pasti akan menemukan peristiwa tidak terduga yang memerlukan intervensi manusia. Jika Anda menerapkan proses terstruktur untuk mengelola peristiwa ini, Anda dapat mengurangi dampaknya dan menyelesaikannya dengan lebih cepat. Selain itu, dengan memeriksa penyebab dan respons terhadap peristiwa tersebut, Anda dapat membantu melindungi aplikasi dari peristiwa serupa di masa mendatang.

Proses yang baik untuk mengelola insiden dan melakukan postmortem tanpa menyalahkan adalah prinsip utama SRE. Meskipun menerapkan praktik lengkap Google SRE mungkin tidak praktis bagi organisasi, Anda dapat meningkatkan ketahanan aplikasi meskipun hanya mengadopsi serangkaian panduan minimum. Lampiran dalam buku SRE berisi beberapa template yang dapat membantu membentuk proses Anda.

Memvalidasi dan meninjau arsitektur Anda

Seiring dengan berkembangnya aplikasi Anda, perilaku pengguna, profil traffic, dan bahkan prioritas bisnis dapat berubah. Demikian pula, layanan atau infrastruktur lain yang menjadi dependensi aplikasi Anda dapat turut berkembang. Oleh karena itu, penting untuk menguji dan memvalidasi ketahanan serta skalabilitas aplikasi Anda secara berkala.

Menguji ketahanan Anda

Penting untuk menguji apakah aplikasi merespons kegagalan dengan cara yang Anda harapkan. Tema menyeluruh adalah cara terbaik untuk menghindari kegagalan adalah dengan menerapkan kegagalan dan belajar dari kegagalan itu.

Menyimulasikan dan memperkenalkan kegagalan adalah hal yang kompleks. Selain memverifikasi perilaku aplikasi atau layanan, Anda juga harus memastikan bahwa pemberitahuan yang diharapkan telah dibuat, dan metrik yang sesuai juga telah dibuat. Kami merekomendasikan pendekatan terstruktur, yaitu Anda dapat memperkenalkan kegagalan sederhana, lalu melakukan eskalasi.

Misalnya, Anda dapat melakukan hal berikut, memvalidasi dan mendokumentasikan perilaku di setiap tahap:

  • Mengenali kegagalan yang terputus-putus.
  • Memblokir akses ke dependensi layanan.
  • Memblokir semua komunikasi jaringan.
  • Menghentikan host.

Untuk mengetahui detailnya, lihat video Membagi sistem untuk membuatnya tidak dapat dipecahkan dari Google Cloud Next 2019.

Jika Anda menggunakan mesh layanan seperti Istio untuk mengelola layanan aplikasi, Anda dapat menginjeksikan fault di lapisan aplikasi alih-alih membunuh pod atau komputer, atau Anda dapat memasukkan paket yang rusak pada lapisan TCP. Anda dapat menyebabkan penundaan untuk menyimulasikan latensi jaringan atau sistem upstream yang kelebihan beban. Anda juga dapat menerapkan pembatalan, yang meniru kegagalan di sistem upstream.

Menguji perilaku penskalaan Anda

Sebaiknya gunakan pengujian nonfungsional otomatis untuk memverifikasi bahwa aplikasi Anda diskalakan seperti yang diharapkan. Verifikasi ini sering kali digabungkan dengan pengujian performa atau beban. Anda dapat menggunakan alat sederhana seperti hey untuk mengirim beban ke aplikasi web. Untuk contoh lebih detail yang menunjukkan cara melakukan pengujian beban terhadap endpoint REST, lihat Pengujian beban terdistribusi menggunakan Google Kubernetes Engine.

Salah satu pendekatan yang umum adalah memastikan bahwa metrik utama tetap berada dalam tingkat yang diharapkan untuk berbagai pemuatan. Misalnya, jika Anda menguji skalabilitas tingkat web, Anda mungkin mengukur latensi permintaan rata-rata untuk lonjakan volume permintaan pengguna. Demikian pula, untuk fitur pemrosesan backend, Anda dapat mengukur waktu pemrosesan tugas rata-rata saat volume tugas tiba-tiba meningkat.

Selain itu, Anda ingin pengujian mengukur bahwa jumlah resource yang dibuat untuk menangani beban pengujian berada dalam rentang yang diharapkan. Misalnya, pengujian Anda dapat memverifikasi bahwa jumlah VM yang dibuat untuk menangani beberapa tugas backend tidak melebihi nilai tertentu.

Penting juga untuk menguji kasus berisiko. Bagaimana perilaku aplikasi atau layanan Anda saat batas penskalaan maksimum tercapai? Apa yang akan terjadi jika layanan Anda mengalami penurunan skala, lalu bebannya tiba-tiba meningkat lagi?

Selalu mendesain arsitektur

Dunia teknologi bergerak cepat, dan ini secara khusus berlaku pada cloud. Produk dan fitur baru sering dirilis, pola baru muncul, dan permintaan dari pengguna serta pemangku kepentingan internal Anda terus berkembang.

Seperti yang ditentukan oleh postingan blog prinsip-prinsip arsitektur berbasis cloud, selalu cari cara untuk meningkatkan kualitas, menyederhanakan, dan meningkatkan arsitektur aplikasi Anda. Sistem perangkat lunak adalah perangkat hidup dan perlu beradaptasi untuk mencerminkan perubahan prioritas Anda.

Langkah selanjutnya