Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk rekomendasi daftar periksa Efisiensi Performa Azure Well-Architected Framework ini:
| PE:06 | Optimalkan performa beban kerja Anda dengan menguji secara teratur di lingkungan seperti produksi untuk memastikan beban kerja Anda mencapai target performa yang diinginkan dan mencapai tujuan bisnis Anda. |
|---|
Pengujian performa adalah praktik pengujian nonfungsi yang digunakan untuk mengevaluasi perilaku beban kerja dalam berbagai kondisi. Ini membantu Anda mengidentifikasi penurunan performa lebih awal, mengatasi masalah secara proaktif, dan memastikan keselarasan berkelanjutan dengan perjanjian tingkat layanan.
Saat Anda mengukur waktu respons, throughput, penggunaan sumber daya, dan stabilitas, Anda mengumpulkan bukti bahwa beban kerja Anda secara konsisten memenuhi target yang ditentukan dan memberikan tingkat performa yang dibutuhkan bisnis Anda.
Strategi utama dalam artikel ini dibangun berdasarkan praktik pengujian dasar yang dijelaskan dalam strategi Arsitektur OE:09 untuk pengujian. Sebaiknya tinjau artikel tersebut terlebih dahulu. Rekomendasi dalam panduan ini dilingkupkan ke performa dan berfokus pada pencapaian target performa sehingga beban kerja Anda tetap selaras dengan tujuan bisnis yang terus berkembang.
Tabel berikut mendefinisikan istilah performa utama yang digunakan di seluruh artikel ini.
| Istilah | Definition |
|---|---|
| Sasaran Kinerja | Nilai performa tertentu yang harus dipenuhi beban kerja, seperti waktu respons, throughput, atau jumlah pengguna bersamaan. |
| Ambang performa | Batasan yang memisahkan performa yang dapat diterima dari performa yang tidak dapat diterima untuk metrik tertentu. |
| Anggaran performa | Bagian dari target performa keseluruhan yang dialokasikan untuk setiap lapisan atau komponen beban kerja. |
| Anggaran kesalahan | Tingkat kesalahan atau kegagalan yang diizinkan, berdasarkan SLO. |
| Kriteria penerimaan | Kondisi hasil pengujian harus memenuhi beban kerja untuk melewati persyaratan performanya. |
| Eksperimen berbasis hipotesis | Metode pengujian tempat Anda menyatakan prediksi tentang performa, mengujinya terhadap garis besar, dan memvalidasinya dengan hasil yang diukur. |
| Garis besar performa | Sekumpulan metrik yang mewakili perilaku beban kerja dalam kondisi normal seperti yang divalidasi oleh pengujian. |
| Transaksi sintetis | Permintaan berskrip yang mensimulasikan interaksi pengguna nyata untuk mengukur performa sistem dalam kondisi terkontrol. |
| Regresi kinerja | Penurunan performa dibandingkan dengan garis besar yang ditetapkan, diperkenalkan oleh perubahan kode, konfigurasi, atau infrastruktur. |
| Penyimpangan performa | Penurunan performa bertahap dari waktu ke waktu yang tidak diperhatikan tanpa pengujian rutin terhadap garis besar yang ditetapkan. |
Tetapkan tujuan terukur untuk pengujian performa Anda
Tujuan performa yang terukur mengubah ekspektasi subjektif menjadi kriteria objektif yang dapat Anda uji dan validasi.
Tentukan target performa Anda dan tetapkan anggaran. Tentukan dan dokumentasikan target performa tertentu, seperti berapa banyak pengguna bersamaan yang perlu Anda dukung. Pastikan target ini selaras dengan tujuan tingkat layanan (SLO) Anda, dan terjemahkan ke dalam tujuan pengujian yang terukur.
Tetapkan anggaran performa dan kesalahan di berbagai lapisan beban kerja Anda. Ketika pengujian performa gagal, anggaran Anda membantu Anda mengidentifikasi lapisan mana yang bertanggung jawab dan di mana memfokuskan upaya pengoptimalan. Tanpa anggaran, pengujian yang gagal hanya memberi tahu Anda bahwa target performa tidak terpenuhi, bukan di mana masalahnya berada.
Misalnya, Anda dapat menetapkan anggaran 400 ms untuk waktu respons API, 150 ms untuk kueri database, dan batas 1% pada permintaan yang gagal. Ketika pengujian gagal, Anda dapat memeriksa hasil setiap lapisan terhadap anggarannya untuk menentukan apakah masalahnya adalah respons API yang lambat, kueri database lambat, atau lonjakan kesalahan.
Note
Sebelum menentukan SLO, pahami terlebih dahulu alur pengguna dan persyaratan kinerja Anda. SLO harus didasarkan pada kebutuhan pengguna nyata dan tujuan bisnis, bukan target sewenang-wenang.
Tentukan kriteria penerimaan dengan ambang batas lulus dan gagal yang jelas. Dasarkan kriteria penerimaan Anda pada metrik performa seperti latensi, waktu respons, throughput, pemanfaatan sumber daya, tingkat kesalahan, dan indikator performa lainnya yang selaras dengan target performa Anda.
Tentukan ambang batas untuk setiap metrik sehingga pengujian Anda menghasilkan hasil lulus yang jelas atau gagal. Jika SLO Anda memerlukan 95% permintaan untuk diselesaikan dalam 200 ms, atur ambang waktu respons API menjadi 200 ms pada persentil ke-95. Setiap eksekusi pengujian di mana persentil ke-95 melebihi 200 ms gagal.
Mulai lebih awal dan uji terus menerus
Analisis performa awal menangkap hambatan arsitektur sebelum menjadi mahal untuk perbaikan.
Mulai pengujian performa sedini mungkin dalam siklus hidup pengembangan perangkat lunak beban kerja Anda. Anda tidak memerlukan aplikasi lengkap untuk memulai. Pengembang dapat membuat kode profil secara lokal, mengukur waktu respons, dan mengidentifikasi operasi intensif sumber daya. Pengujian awal menginformasikan keputusan desain, memvalidasi pilihan arsitektur terhadap tujuan performa, dan mengidentifikasi peluang pengoptimalan.
Terus menguji beban kerja Anda saat berkembang untuk memenuhi persyaratan baru. Setiap perubahan kode mungkin memperkenalkan regresi performa. Jalankan pengujian secara teratur untuk menangkap perubahan ini lebih awal. Masukkan pengujian performa dalam alur penyebaran dan jalankan pengujian otomatis berkala untuk mendeteksi penyimpangan performa sebelum mencapai produksi.
Tradeoff. Pengujian performa awal membutuhkan infrastruktur khusus dan keahlian khusus, yang meningkatkan biaya operasional. Seimbangkan investasi ini terhadap biaya masalah kinerja yang ditemukan terlambat dan insiden produksi.
Uji di bawah kondisi dunia nyata
Pengujian performa harus sesuai dengan kondisi dunia nyata sehingga hasil Anda bermakna.
Mencerminkan lingkungan produksi Anda
Lingkungan pengujian Anda harus mencerminkan produksi sedekat praktis. Sesuaikan pendekatan Anda untuk lingkungan berdasarkan profil risiko beban kerja Anda.
Untuk beban kerja yang sangat penting, cocokkan produksi secara menyeluruh:
- SKU dan konfigurasi komputasi
- Pengaturan Autoscaling
- Konfigurasi penyimpanan sementara
- Kondisi jaringan (latensi, bandwidth)
- Dependensi eksternal
Untuk beban kerja non-kritis, pengujian di lingkungan berskala kecil yang meniru produksi dapat memberikan wawasan yang berguna dengan biaya lebih rendah.
Memvalidasi performa dalam produksi
Lingkungan pengujian tidak dapat sepenuhnya mereplikasi kondisi dunia nyata yang memengaruhi performa. Pengujian produksi mengekspos masalah yang hanya muncul di bawah penggunaan aktual dan memberikan garis besar yang akurat untuk pengoptimalan di masa mendatang. Beberapa persyaratan performa hanya dapat divalidasi di mana pengguna, data, dan infrastruktur nyata bersinggungan.
Jalankan pengujian produksi terkontrol. Jadwalkan pengujian selama jam tidak sibuk untuk memahami bagaimana beban kerja Anda berfungsi di bawah kelelahan sumber daya dan pulih dari kegagalan.
Pengujian produksi mengungkapkan karakteristik performa dalam kondisi aktual, termasuk:
- Pola perilaku pengguna dan volume data yang realistis
- Latensi jaringan dan variasi bandwidth yang sebenarnya
- Efek distribusi geografis
- Performa dan dependensi API pihak ketiga
- Perilaku penyimpanan nyata dan karakteristik infrastruktur
Gunakan teknik pengujian progresif. Mulailah dengan persentase lalu lintas yang kecil dan secara bertahap meningkat. Pantau waktu respons, throughput, tingkat kesalahan, dan pemanfaatan sumber daya di setiap langkah. Pendekatan bertahap ini membatasi risiko sambil mengidentifikasi titik henti, mengungkapkan hambatan, dan memberikan pandangan yang akurat tentang perilaku sistem di bawah permintaan yang meningkat.
Note
Saat Menjalankan pengujian performa terkontrol dalam produksi, Anda perlu mengalokasikan kapasitas tambahan untuk menangani beban tambahan yang dihasilkan oleh pengujian.
Risiko: Pengujian produksi secara langsung memengaruhi pelanggan nyata karena dapat menciptakan beban ekstra dan mengganggu lalu lintas. Selalu terapkan perlindungan, batasi paparan, dan siapkan rencana putar kembali untuk meminimalkan potensi dampak bisnis. Seimbangkan manfaat pengujian realistis terhadap potensi dampak bisnis dari mengganggu pengguna langsung.
Memvalidasi perubahan dengan eksperimen berbasis hipotesis
Gunakan eksperimen berbasis hipotesis untuk memandu pengujian performa Anda. Merancang eksperimen performa individu sehingga menghasilkan hasil yang bermakna.
Mulailah dengan hipotesis terfokus tentang performa beban kerja Anda dan tentukan kriteria keberhasilan terukur yang mengarah pada keputusan yang dapat ditindaklanjuti. Misalnya, hipotesis Anda mungkin: "Menambahkan indeks ke tabel pesanan mengurangi waktu kueri sebesar 70% di bawah beban puncak." Garis besar Anda adalah skema saat ini, dan variannya adalah skema dengan indeks baru. Jalankan pengujian beban yang sama terhadap kedua versi. Tangkap latensi kueri, penggunaan CPU database, dan throughput, lalu bandingkan hasil untuk menentukan apakah hipotesis berlaku.
Tradeoff. Eksperimen berbasis hipotesis mengharuskan menjalankan pengujian yang sama terhadap konfigurasi garis besar dan varian, yang meningkatkan biaya infrastruktur dan waktu eksekusi pengujian. Fokuskan eksperimen pada perubahan berdampak tinggi di mana potensi perolehan performa menghalalkan upaya pengujian tambahan.
Menerapkan beberapa jenis pengujian performa
Pengujian performa mencakup berbagai pengujian yang menilai kecepatan, stabilitas, dan skalabilitas dalam berbagai kondisi. Setiap jenis pengujian menargetkan aspek performa yang berbeda dari beban kerja Anda. Ini mengungkap wawasan unik dan memungkinkan evaluasi penuh yang melampaui pengujian fungsi.
Gunakan beberapa jenis pengujian untuk memvalidasi beban kerja Anda dari sudut yang berbeda. Misalnya, pengujian stres menemukan titik pecah di bawah beban puncak, tetapi hanya pengujian daya tahan yang mengungkapkan kebocoran memori yang muncul selama berjam-jam atau berjam-hari.
Pilih jenis pengujian berdasarkan apa yang perlu Anda validasi.
Tabel berikut menunjukkan kapan harus menggunakan setiap jenis pengujian dan apa yang diungkapkannya tentang beban kerja Anda. Meskipun tabel ini bukan daftar lengkap, tabel ini berfungsi sebagai contoh ilustrasi.
| Jenis pengujian | Tujuan utama | Kapan harus diterapkan | Apa yang diungkapkannya | Environment |
|---|---|---|---|---|
| Pengujian beban | Memastikan sistem menangani jumlah pengguna yang diperkirakan pada kondisi penggunaan normal dan puncak. | Mulai lebih awal, jalankan dengan sering | Performa garis besar, batas kapasitas, efektivitas penskalaan | Lingkungan penahapan atau seperti produksi |
| Pengujian stres | Memahami batas sistem dan titik henti | Sebelum sistem siap produksi | Kapasitas maksimum, mode kegagalan, perilaku pemulihan | Lingkungan pengujian performa khusus |
| Pengujian lonjakan (spike) | Memastikan sistem menangani lonjakan lalu lintas mendadak | Mulai lebih awal, terutama untuk aplikasi yang menghadap publik | Keresponsifan penskalaan otomatis, penanganan antrean, degradasi bertahap | Lingkungan penahapan atau produksi |
| Pengujian ketahanan/rendam | Mendeteksi masalah yang hanya muncul selama periode yang diperpanjang | Setelah uji beban awal lulus | Kebocoran memori, kelelahan sumber daya, masalah kumpulan koneksi | Lingkungan seperti produksi dengan alokasi sumber daya penuh |
Jangan mencoba untuk segera menerapkan semua jenis pengujian. Mulailah dengan pengujian beban dasar untuk memahami performa garis besar Anda. Saat Anda mengidentifikasi risiko dan mendapatkan pengalaman, perluas ke pengujian stres, pengujian lonjakan, dan akhirnya pengujian daya tahan.
Tradeoff. Pengujian performa di semua jenis pengujian membutuhkan waktu dan investasi infrastruktur yang signifikan. Cocokkan investasi pengujian Anda dengan risiko bisnis Anda.
Menggunakan pola penggunaan dunia nyata dan karakteristik data
Pengujian dengan data realistis memberikan wawasan yang akurat tentang konsumsi sumber daya, perilaku sistem, dan masalah performa tersembunyi.
Buat beragam himpunan data pengujian yang mewakili berbagai skenario, profil pengguna, dan volume data. Gunakan variasi input dan pengacakan untuk meniru keberagaman nyata para pengguna. Sertakan kasus tepi yang dapat menyebabkan masalah performa, seperti payload besar, kueri kompleks, atau konkurensi tinggi.
Simulasikan transaksi sintetis yang meniru alur kerja pengguna nyata. Buat skrip transaksi ini dan jalankan berulang kali untuk menghasilkan beban yang mencerminkan bagaimana beban kerja Anda benar-benar digunakan.
Skenario pengujian Anda harus mencerminkan pola penggunaan aktual seperti akses pengguna bersamaan, periode beban puncak, dan urutan transaksi tertentu. Pastikan skenario selaras dengan tujuan bisnis sehingga hasil performa mencerminkan nilai pengguna yang sebenarnya.
Saat menguji di bawah beban, sertakan panggilan API pihak ketiga yang sebenarnya. Memodelkan ketergantungan eksternal membuat pengujian berjalan lebih cepat dan dapat diprediksi, tetapi menyembunyikan masalah performa dunia sebenarnya. Jika aplikasi Anda bergantung pada API prosesor pembayaran, uji dengan panggilan nyata untuk memahami latensi end-to-end.
Menggunakan hasil pengujian untuk memandu keputusan desain
Hasil pengujian Anda mendorong keputusan desain dengan menetapkan garis besar yang andal dan memandu upaya pengoptimalan.
Tetapkan pengukuran garis besar Anda. Patokan membantu Anda mengidentifikasi tren dan anomali serta menentukan apakah perubahan pengoptimalan menghasilkan peningkatan. Anda memerlukan garis besar yang andal untuk melacak tren performa dari waktu ke waktu.
Rekam metrik performa selama pengujian awal. Rekaman ini adalah tolok ukur Anda, cuplikan kinerja "normal". Dalam eksekusi berikutnya, bandingkan hasil baru dengan garis besar ini untuk mendeteksi perubahan performa. Pertimbangkan dampak pengguna, frekuensi, biaya perbaikan, dan risiko kriteria perubahan saat Anda memeriksa data untuk memahami perilaku sistem dalam berbagai kondisi. Cari pola yang menunjukkan lokasi penurunan performa. Gunakan wawasan ini untuk memprioritaskan upaya pengoptimalan.
Pengoptimalan adalah proses berulang dan harus didorong oleh data. Sisihkan waktu khusus dalam siklus pengembangan Anda untuk pengoptimalan performa. Gunakan garis besar Anda untuk mengukur dampak perubahan dan memastikan mereka memberikan peningkatan yang diharapkan tanpa memperkenalkan regresi.
Menghubungkan performa dengan metrik bisnis. Hubungkan peningkatan performa ke hasil bisnis seperti pendapatan, keterlibatan pengguna, kepuasan pelanggan, dan tingkat konversi untuk membenarkan investasi berkelanjutan dalam pengoptimalan performa.
Note
Tinjau dan perbarui garis besar Anda secara teratur setelah perubahan signifikan pada beban kerja Anda, seperti perubahan arsitektur, fitur baru, atau penyesuaian penskalaan. Dengan melakukan tindakan ini, Anda memastikan bahwa target performa Anda tetap relevan.
Dukungan Azure
Azure Pipelines memungkinkan Anda mengintegrasikan pengujian performa ke dalam alur CI/CD Anda. Anda dapat menambahkan pengujian beban sebagai langkah dalam alur Anda untuk memvalidasi performa dan skalabilitas aplikasi Anda.
Azure Chaos Studio membantu Anda menyuntikkan kesalahan dunia nyata ke dalam aplikasi Anda sehingga Anda dapat menjalankan eksperimen injeksi kesalahan terkontrol. Eksperimen membantu Anda mengukur, memahami, dan meningkatkan ketahanan aplikasi dan layanan cloud Anda.
Azure Load Testing adalah layanan pengujian beban yang menghasilkan beban skala tinggi pada aplikasi apa pun. Pengujian Beban menyediakan kemampuan untuk mengotomatiskan pengujian beban dan mengintegrasikannya ke dalam alur kerja integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Anda dapat menentukan kriteria pengujian, seperti waktu respons rata-rata atau ambang kesalahan, dan secara otomatis menghentikan pengujian beban berdasarkan kondisi kesalahan tertentu. Pengujian Beban menawarkan dasbor yang menyediakan pembaruan langsung dan metrik sumber daya terperinci dari komponen aplikasi Azure selama pengujian beban. Anda dapat menganalisis hasil pengujian, mengidentifikasi hambatan performa, dan membandingkan beberapa eksekusi pengujian untuk memahami regresi performa dari waktu ke waktu.
Azure Monitor adalah solusi pemantauan komprehensif untuk mengumpulkan, menganalisis, dan menanggapi telemetri dari lingkungan cloud dan lokal Anda. Application Insights adalah ekstensi Monitor yang menyediakan fitur APM. Anda dapat menggunakan Application Insights untuk memantau aplikasi selama pengembangan dan pengujian dan juga dalam produksi.
Tautan terkait
Daftar periksa efisiensi kinerja
Lihat kumpulan rekomendasi lengkap.