Prinsip desain Efisiensi Performa

Efisiensi performa adalah kemampuan beban kerja Anda untuk menyesuaikan dengan perubahan permintaan. Beban kerja harus dapat menangani peningkatan beban tanpa mengorbankan pengalaman pengguna. Sebaliknya, ketika ada penurunan beban, beban kerja harus menghemat sumber dayanya. Kapasitas, yang menunjukkan ketersediaan sumber daya (CPU dan memori), adalah faktor yang signifikan.

Desain beban kerja seharusnya tidak hanya mengandalkan kapasitas yang telah disediakan sebelumnya, yang menjamin performa hingga batas tertentu. Jika batas tersebut terlampaui, beban kerja mungkin memiliki masalah performa atau bahkan mengalami pemadaman. Ketika beban berada di bawah batas itu, sumber daya terus berjalan secara tidak perlu, menimbulkan biaya.

Anda memerlukan strategi komprehensif untuk mempertahankan target performa dari waktu ke waktu. Pertimbangan performa seharusnya tidak menjadi pengintaian dalam proses desain, hanya untuk ditangani ketika masalah muncul dalam produksi. Sebaliknya, adopsi pola pikir di mana performa adalah pertimbangan utama dari tahap awal desain. Awalnya, bangun sistem tanpa target performa tertentu. Tetapi dari sana, uji dan ukur performa pada setiap tahap pengembangan untuk memastikan kemajuan dan efektivitas. Pengoptimalan berkelanjutan dari target ini sepanjang proses dan menggabungkan pelajaran yang dipelajari dari produksi dapat secara signifikan mengurangi potensi masalah terlebih dahulu.

Prinsip desain ini dapat membantu membangun strategi Anda untuk mengelola kapasitas sumber daya untuk memenuhi persyaratan bisnis Anda dengan cukup untuk penggunaan yang diharapkan. Selain itu, kurangi limbah selama jam sibuk. Setelah Anda memutuskan strategi, perkuat desain Anda dengan menggunakan daftar periksa Efisiensi Performa.

Efisiensi performa adalah tentang penggunaan sumber daya beban kerja yang efektif. Tanpa strategi yang baik, Anda mungkin tidak dapat mengantisipasi dan memenuhi permintaan pengguna. Anda mungkin harus menggunakan pendekatan prakiraan jangka panjang dan kapasitas yang telah disediakan sebelumnya, yang tidak memungkinkan Anda memanfaatkan sepenuhnya platform cloud Anda.

Menegosiasikan target performa realistis

Ikon tujuan Pengalaman pengguna yang dimaksudkan ditentukan, dan ada strategi untuk mengembangkan tolok ukur dan mengukur target terhadap persyaratan bisnis yang telah ditetapkan sebelumnya.

Dari perspektif performa, sangat ideal untuk memiliki target performa yang terdefinisi dengan baik untuk memulai proses desain Anda. Untuk menetapkan target tersebut, Anda harus memiliki pemahaman yang baik tentang persyaratan bisnis dan kualitas layanan yang diantisipasi yang diharapkan untuk dikirimkan oleh beban kerja. Tentukan harapan bekerja sama dengan pemangku kepentingan bisnis. Alih-alih hanya berfokus pada metrik teknis, tentukan efek yang dapat diterima pada pengalaman pengguna untuk alur kunci.

Ada dependensi melingkar. Anda tidak dapat mengukur apa yang belum ditentukan, dan Anda tidak dapat menentukan tanpa pengukuran. Jadi, penting juga untuk mengukur performa beban kerja sampai Anda mencapai definisi ambang batas yang dapat diterima dengan perjanjian kolektif yang memuaskan.

Ada korelasi yang kuat antara target performa dan keandalan, yang membantu menentukan kualitas layanan dalam hal performa, ketersediaan, dan ketahanan. Tanpa definisi yang jelas, sulit untuk mengukur, memperingatkan, dan menguji performa. Setelah Anda menetapkan target dan mengidentifikasi angka aktual melalui pengujian dari waktu ke waktu, Anda dapat menerapkan otomatisasi untuk pengujian berkelanjutan terhadap target ini.

Patuhi praktik terbaik dalam menentukan target di tingkat makro, meskipun itu perkiraan atau dalam rentang.

Pendekatan Keuntungan
Bersiaplah untuk negosiasi yang efektif dengan memahami konsep teknis, mengeksplorasi kemungkinan desain dengan infrastruktur yang tersedia, dan menggunakan hasil dari eksperimen konkret, jika tersedia.

Gunakan data historis untuk mendapatkan visibilitas ke dalam pola penggunaan dan hambatan.

Membawa wawasan dari faktor eksternal, seperti input dari analisis pasar, pakar, dan standar industri.
Anda dapat membuat keputusan berdasarkan informasi berdasarkan wawasan praktis.

Target performa difokuskan pada pengalaman pengguna yang didasarkan pada apa yang layak, praktik terbaik industri, dan tren pasar saat ini.
Berkolaborasi dengan pemilik bisnis untuk memahami janji pengguna, dalam hal kualitas dan kepatuhan terhadap peraturan, jika berlaku.

Pertahankan perspektif yang luas dan hindari menyelam ke detail terperinci pada tahap ini.

Jadilah eksplisit tentang apa yang mewakili kinerja yang dapat diterima, berdasarkan investasi.

Pahami konteks bisnis dan antisipasi pertumbuhan.
Anda akan menghindari membuat asumsi yang mungkin tidak selaras dengan tujuan bisnis. Ini juga mendorong kejelasan dan motivasi dalam tim beban kerja.

Memiliki konteks bisnis tentang persyaratan fungsional dan nonfungsi mungkin mengungkap perubahan desain di pilar Azure Well-Architected lainnya dan membantu Anda melakukan tradeoff berdasarkan informasi.

Menentukan parameter sejak dini membantu menghindari biaya yang terkait dengan potensi desain ulang solusi nanti.

Ini memungkinkan Anda untuk memastikan bahwa target performa mencakup proyeksi di masa mendatang, sehingga Anda dapat menyelaraskan upaya saat ini dengan tujuan jangka panjang.
Identifikasi alur beban kerja dan prioritaskan alur dalam diagram arsitektur.

Tentukan toleransi performa setiap alur sebagai rentang dari aspirasi hingga performa yang tidak dapat diterima.

Evaluasi titik masuk dan keluar untuk setiap alur, dengan mempertimbangkan kekritisan jalur, frekuensi penggunaan, dan intensitas arsitektur.
Dengan memprioritaskan alur, Anda dapat memfokuskan sumber daya Anda pada area penting yang paling berpengaruh pada hasil pengguna dan bisnis.

Dengan memecah sistem menjadi bagian dan dependensinya, Anda memahami fungsi setiap komponen dan memengaruhi performa. Anda juga menyadari potensi masalah.

Ini membantu membangun garis besar performa dan mendorong pengoptimalan.
Mulai membangun model performa Pertimbangkan apakah pola penggunaan menunjukkan variasi musiman atau harian. Faktor biaya, operasi, dan kekritisan terhadap bisnis.

Gunakan standar industri untuk mengukur metrik dan metode agregasi, seperti menggunakan persentil.

Mengevaluasi ekspektasi permintaan dan pasokan serta batasan yang diberlakukan kendala bisnis.

Menggabungkan prospek pertumbuhan.
Model performa memberikan wawasan tentang penggunaan sumber daya yang optimal dan membantu perencanaan strategis.

Standar industri membantu tolok ukur.

Pemeriksaan di masa mendatang memastikan bahwa tujuan performa tetap relevan dan dapat beradaptasi dengan perubahan.

Desain untuk memenuhi persyaratan kapasitas

Ikon tujuan Menyediakan pasokan yang cukup untuk mengatasi permintaan yang diantisipasi.

Penting untuk mengukur performa secara proaktif. Mengukur performa melibatkan pengukuran garis besar dan memiliki pemahaman awal tentang komponen sistem mana yang cenderung menimbulkan tantangan. Anda dapat mencapainya tanpa melakukan pengujian performa penuh atau melalui pengoptimalan terperinci. Dengan mengambil langkah-langkah awal ini, Anda menetapkan fondasi untuk manajemen performa yang efektif di awal siklus hidup pengembangan.

Periksa sistem secara keseluruhan, daripada berfokus pada komponen individual. Hindari penyempurnaan pada tahap ini. Membuat peningkatan performa terperinci menghasilkan tradeoff di bidang lain. Saat Anda maju melalui siklus hidup dan memulai pengujian penerimaan pengguna atau beralih ke produksi, Anda dapat dengan cepat mengidentifikasi area mana yang memerlukan pengoptimalan lebih lanjut.

Pendekatan Manfaat
Evaluasi permintaan elastisitas untuk alur yang diidentifikasi.

Jelajahi pola desain yang dapat diimplementasikan di seluruh tumpukan teknologi, dengan mempertimbangkan aplikasi dan lapisan komputasi dan data yang mendasar.
Anda dapat menentukan persyaratan skalabilitas pada komponen yang ada yang membutuhkan lebih banyak kapasitas dan area di mana Anda memerlukan komponen tambahan untuk mendistribusikan beban.

Anda menyadari potensi hambatan dalam sistem dan merancang kontrol kompensasi, seperti menambahkan kemampuan penembolokan untuk mengurangi latensi dan beban sistem.
Pilih sumber daya yang tepat di seluruh tumpukan teknologi, yang memungkinkan Anda memenuhi tujuan performa dan berintegrasi dengan sistem.

Pertimbangkan fitur yang dapat memenuhi persyaratan skalabilitas.

Temukan keseimbangan yang tepat antara alokasi sumber daya dan persyaratan sistem, untuk menangani lonjakan tak terduga secara efisien.
Dengan menganalisis berbagai kemampuan sumber daya, Anda memastikan bahwa setiap komponen berkontribusi pada fungsionalitas dan performa sistem secara keseluruhan.

Anda dapat memanfaatkan kemampuan bawaan yang secara otomatis memicu operasi penskalaan.

Sumber daya ukuran yang tepat dapat memenuhi perubahan permintaan tanpa provisi berlebih, yang menyebabkan penghematan biaya.
Lakukan perencanaan kapasitas berdasarkan permintaan dan kemampuan sumber daya yang dipilih untuk memperkaya model performa Anda.

Gunakan teknik pemodelan prediktif untuk memperkirakan perubahan kapasitas yang diantisipasi yang dapat terjadi dengan perubahan yang dapat diprediksi dan tidak terduga.

Tentukan target performa yang dapat diterjemahkan ke dalam persyaratan teknis.
Anda dapat menggunakan sumber daya secara efisien dan memenuhi permintaan tanpa provisi berlebih, sehingga menghindari biaya yang tidak perlu.

Anda memahami bagaimana pilihan desain memengaruhi performa.
Terapkan bukti konsep yang memvalidasi persyaratan teknis dan pilihan desain. Bukti konsep bersifat instrumental dalam memvalidasi desain untuk menentukan apakah sistem dapat memenuhi target performa dan apakah target tersebut realistis. Berdasarkan beban yang diantisipasi, Anda dapat memvalidasi apakah kapasitas yang diantisipasi dapat memenuhi target performa.

Selain itu, verifikasi implikasi biaya dari pilihan desain.
Dokumentasikan strategi pengujian performa Anda.

Sertakan kasus penggunaan, metodologi yang berbeda, dan irama rencana pengujian Anda.

Tentukan proses untuk operasi yang diuraikan oleh rencana pengujian performa.

Triase dan prioritaskan kasus pengujian dalam rencana. Fokus pada kasus yang menawarkan wawasan berharga tentang target performa dan menyelaraskan perencanaan kapasitas.
Anda memastikan bahwa aspek sistem yang tepat telah diuji.

Anda dapat mengalokasikan sumber daya secara efektif dan melakukan pengujian dengan cara yang selaras dengan prioritas dan persyaratan bisnis.
Mendokumenkan strategi pemantauan performa Anda.

Menilai metrik pada tingkat abstraksi yang berbeda untuk setiap alur yang diidentifikasi.
Anda dapat melacak kemajuan menuju pencapaian target performa di seluruh siklus pengembangan.

Mencapai dan mempertahankan performa

Ikon tujuan Lindungi dari penurunan performa saat sistem sedang digunakan dan seiring perkembangannya.

Pengembangan bukanlah upaya satu kali. Ini adalah proses yang sedang berlangsung. Mengharapkan perubahan performa saat fitur berubah. Ada varians dalam pola dan profil pengguna, bahkan perubahan dari pengoptimalan di pilar Azure Well-Architected lainnya. Setiap perubahan dapat mengganggu sumber daya beban kerja.

Liburkan sistem dari perubahan sehingga tidak meluncur kembali pada target performa. Integrasikan pengujian dan pemantauan dalam proses pengembangan. Uji performa sistem dalam produksi dengan beban nyata dan simulasikan beban tersebut dengan pengujian otomatis sebelum produksi. Dalam kedua kasus, Anda harus memiliki praktik pemantauan untuk tujuan verifikasi.

Sepanjang siklus hidup pengembangan, lakukan berbagai jenis pengujian pada tahap yang berbeda. Pada tahap awal, uji bukti konsep untuk memastikan hasil performa tidak sepenuhnya tidak terduga. Seiring perkembangan pengembangan, lakukan pengujian manual dengan upaya rendah untuk menetapkan tolok ukur. Dalam tahap build, mulai kembangkan pengujian performa rutin otomatis yang mengevaluasi latensi, tingkat stres, kapasitas beban, dan karakteristik lain yang ditentukan dalam rencana pengujian.

Pemantauan harus menjadi bagian integral dari upaya itu, daripada menjadi latihan yang terisolasi. Anda dapat melihat bagaimana performa sistem dan sumber dayanya dari waktu ke waktu. Anda kemudian dapat menyempurnakannya untuk memaksimalkan nilainya, dan memastikan mereka terus memenuhi standar performa.

Perlu diingat bahwa target performa bervariasi dari waktu ke waktu, sebagai respons terhadap perubahan. Perbarui model performa berdasarkan metrik yang diuji dan dipantau. Menunjukkan dengan jelas peningkatan, pengurangan, atau tidak berpengaruh pada performa alur.

Selalu siap untuk menegosiasikan ulang dan mengatur ulang ekspektasi dengan pemangku kepentingan bisnis.

Pendekatan Manfaat
Mengintegrasikan pengujian performa rutin di Azure Pipelines.

Pilih alur yang dapat mengintegrasikan pengujian. Sebaliknya, pilih alat uji yang dapat diintegrasikan ke dalam alur.
Pengujian otomatis menghemat waktu dan memberikan konsistensi yang memudahkan untuk mendeteksi regresi atau peningkatan.

Artefak ini memungkinkan pemantauan berkelanjutan terhadap penyimpangan atau penyimpangan dari waktu ke waktu, sehingga Anda dapat mempertahankan performa dan kualitas yang konsisten.
Formalisasi pengujian performa sebagai gerbang kualitas yang dapat menyetujui atau menolak promosi rilis dan penyebaran akhir untuk produksi. Titik pemeriksaan ini memastikan bahwa setiap tahap penyebaran memenuhi standar performa yang diperlukan sebelum Anda melanjutkan ke tahap berikutnya. Titik pemeriksaan membantu mencegah regresi performa yang tidak diinginkan.

Misalnya, jika performa jauh di bawah ekspektasi, Anda mungkin memblokir rilis hingga peningkatan dilakukan.
Siapkan proses berulang untuk memantau transaksi nyata dalam produksi dan penyimpangan terhadap target performa Anda.

Gunakan transaksi sintetis dalam produksi.

Siapkan pemberitahuan pemantauan pada regresi performa.
Anda ingin wawasan tentang performa aktual sistem Anda di bawah beban dunia nyata yang tidak dapat disimulasikan melalui pengujian.

Kemudian Anda dapat secara proaktif mengidentifikasi masalah dan area perbaikan seperti potensi penyempitan, sumber daya yang kurang digunakan, dan masalah lainnya.
Tinjau hasil pengujian performa dan pantau data dengan cermat dan optimalkan hingga Anda memenuhi target performa.

Prioritaskan tindakan yang berasal dari ulasan tersebut dan tambahkan ke backlog untuk eksekusi yang direncanakan.
Berdasarkan hasil pengujian, Anda dapat mengambil dan membandingkan data dan mulai menganalisis tren.

Upaya pengoptimalan Anda didorong oleh data.
Bangun keterampilan pengkodian yang berfokus pada performa.

Memiliki standar pengkodian yang mencontohkan pola pengkodian berbasis performa.
Kode yang tidak memiliki masalah performa dapat membuat siklus pengujian lebih efisien karena pengujian dapat difokuskan pada masalah yang lebih signifikan.

Pola pengodian membantu menghindari pengerjaan ulang dan menjaga gaya pengkodian Anda tetap konsisten.
Mengatasi erosi performa saat penggunaan meningkat, fitur berubah, dan data terakumulasi dari waktu ke waktu untuk mempertahankan performa.

Reset ekspektasi dan tetapkan target baru, jika penyempurnaan hanya membawa manfaat jangka pendek.
Anda dapat mempertahankan status performa sebelum degradasi berkembang menjadi masalah yang berdampak negatif pada pengalaman pengguna di luar rentang yang dapat diterima.

Mengubah target mengatur ulang model performa, dan Anda tidak membuang waktu dalam mengoptimalkan sistem yang telah mencapai kapasitasnya.

Meningkatkan efisiensi melalui pengoptimalan

Ikon tujuan Tingkatkan efisiensi sistem dalam target performa yang ditentukan untuk meningkatkan nilai beban kerja.

Target yang ditetapkan selama fase awal didasarkan pada tingkat pengalaman pengguna yang wajar, mengingat berbagai kendala. Anda harus menilai kembali dan menyesuaikan target untuk lebih meningkatkan pengalaman. Untuk lebih meningkatkan pengalaman, dibutuhkan pemahaman yang jelas tentang bagaimana sistem digunakan, bagaimana sistem telah berkembang, dan bagaimana platform atau teknologi telah berubah dari waktu ke waktu. Siklus pemantauan, pengoptimalan, pengujian, dan penyebaran adalah proses berkelanjutan.

Upaya pengoptimalan efisiensi memungkinkan beban kerja bekerja dengan konsumsi sumber daya yang lebih rendah. Mereka dapat menyebabkan beban kerja berada dalam keadaan terlalu provisi dengan kapasitas cadangan. Gunakan kapasitas tersebut untuk meningkatkan keandalan sistem. Hilangkan kapasitas untuk meningkatkan biaya sistem. Atau gunakan kembali kapasitas untuk mendukung fitur produk baru pada sumber daya yang ada.

Ketika sistem mendapatkan efisiensi, ambil kesempatan untuk menetapkan dan mempertahankan target performa baru.

Pendekatan Manfaat
Alokasikan siklus khusus untuk pengoptimalan performa untuk mengatasi persyaratan dan pengoptimalan yang tidak berfungsi di area fungsional. Target untuk pengoptimalan ini adalah sumber daya, kode, retensi data, kueri database, dan lainnya. Anda dapat membangun budaya pengoptimalan berbasis performa. Anda menjaga tim bertanggung jawab untuk memantau pola performa secara proaktif dan juga menyempurnakan aplikasi.
Tingkatkan arsitektur dengan pola dan komponen desain baru, yang dapat meningkatkan performa, dengan cara yang sebelumnya tidak Anda pertimbangkan karena waktu atau anggaran yang terbatas. Desain dan komponen baru dapat mengoptimalkan sistem, yang mengarah ke pengalaman pengguna yang lebih baik. Misalnya, Anda dapat menggunakan penembolokan atau menambahkan komponen jaringan pengiriman konten.

Ini juga dapat menyebabkan manfaat biaya jangka panjang.
Gunakan alat pemantauan untuk menganalisis tren historis dan mengidentifikasi alur dan jalur implementasi kode yang paling menguntungkan dari upaya pengoptimalan performa. Kami merekomendasikan alat dan profiler pemantauan performa aplikasi (APM) untuk tujuan ini.

Identifikasi jalur panas operasi dan potensi hambatan lainnya dalam sistem.
Ketika Anda mengidentifikasi area bermasalah berulang, tim dapat fokus di mana keuntungan adalah yang tertinggi.
Dapatkan arus dan tetap terkini dengan inovasi teknologi yang dapat meningkatkan performa.

Manfaatkan versi baru yang dirilis untuk kerangka kerja dan pustaka dependen.

Demikian pula, gunakan fitur baru untuk sumber daya platform saat diperbarui dan di-patch.
Mengadopsi teknologi baru seringkali dapat menjadi faktor yang memotivasi untuk mencari peluang untuk ditingkatkan.

Kode yang mungkin lambat di masa lalu dapat menjadi lebih cepat dengan pembaruan ini. Anda juga ingin menyadari bagaimana pembaruan tertentu berdampak negatif pada performa.

Langkah berikutnya