Rekomendasi untuk memprioritaskan performa alur kritis

Berlaku untuk rekomendasi daftar periksa Efisiensi Performa Azure Well-Architected Framework ini:

PE:09 Prioritaskan performa alur kritis. Alokasi sumber daya beban kerja dan upaya pengoptimalan performa harus memprioritaskan alur yang mendukung proses bisnis, pengguna, dan operasi yang paling penting.

Panduan ini menjelaskan rekomendasi untuk memprioritaskan performa alur penting dalam beban kerja. Alur kritis mewakili proses bisnis penting yang menghasilkan pendapatan atau mendorong operasi prioritas tinggi. Saat Anda memprioritaskan performa alur kritis, Anda memastikan alur yang memiliki dampak paling besar mendapatkan sumber daya yang mereka butuhkan sebelum alur prioritas yang lebih rendah. Kegagalan untuk melakukan prioritas ini dapat memiliki efek negatif yang tidak proporsional pada prioritas beban kerja dan pengalaman pengguna.

Definisi

Istilah Definisi
Alur Dalam beban kerja, urutan tindakan yang melakukan fungsi tertentu. Alur melibatkan pergerakan data dan berjalannya proses antar komponen beban kerja.
Pemrosesan antrean prioritas Tindakan pemrosesan tugas berprioritas tinggi sebelum tugas berprioritas rendah.
Pembatasan tarif Tindakan membatasi berapa banyak permintaan yang dapat mengakses sumber daya.
Alur sistem Alur informasi dan proses dalam sistem. Sistem secara otomatis mengikuti alur ini untuk mengaktifkan alur pengguna atau fungsionalitas beban kerja.
Alur pengguna Urutan yang diikuti pengguna untuk menyelesaikan tugas.

Strategi desain utama

Alur kritis mengacu pada alur pengguna utama untuk pelanggan atau sistem dan aliran data untuk operasi yang sangat penting untuk fungsionalitas beban kerja. Alur ini dapat mencakup tindakan seperti pendaftaran pengguna, rincian masuk, pembelian produk, mengakses halaman di belakang paywall, atau jalur atau proses kunci lainnya dalam beban kerja Anda.

Alur kritis secara signifikan memengaruhi pengalaman pengguna atau operasi bisnis. Alur kritis memiliki target performa dan perjanjian tingkat layanan yang lebih tinggi daripada alur nonkritis. Jika sumber daya terbatas, alur nonkritis harus menghasilkan penggunaan sumber daya ke alur kritis. Anda perlu mengidentifikasi, memantau, dan memprioritaskan semua alur sebelum mengisolasi dan mengoptimalkan alur kritis.

Mengidentifikasi semua alur

Langkah pertama dalam memprioritaskan performa alur kritis adalah mengidentifikasi semua alur dalam beban kerja Anda. Identifikasi alur melibatkan pemetaan dan pemahaman sistematis setiap jalur pengguna dan komunikasi komponen. Fokusnya adalah memahami metrik performa dan potensi dampak alur pada performa beban kerja.

Dengan membedah beban kerja menjadi alur diskrit, Anda dapat menemukan hambatan performa, pemanfaatan sumber daya yang tidak efisien, dan peluang untuk pengoptimalan performa. Pengetahuan ini memaparkan area peningkatan yang diperlukan dan merupakan langkah pertama untuk mengidentifikasi alur kritis. Untuk informasi selengkapnya, lihat Mengidentifikasi dan menilai alur pengguna dan sistem.

Memantau metrik performa alur

Setelah mengidentifikasi semua alur dalam beban kerja, Anda perlu mengumpulkan metrik performa pada setiap alur dan memantau metrik tersebut. Metrik alur memberikan wawasan tentang waktu respons, tingkat kesalahan, dan throughput. Tujuannya adalah untuk secara konsisten mengamati dan merekam metrik terkait performa untuk lebih menyempurnakan pemahaman Anda tentang dampak setiap alur pada performa beban kerja. Untuk memantau metrik alur, Anda bisa menggunakan alat berikut untuk mengumpulkan data:

  • Alat analitik dan pelacakan: Alat-alat ini memberikan wawasan tentang perilaku pengguna dan interaksi dalam aplikasi Anda. Dengan menganalisis data pengguna, Anda dapat mengidentifikasi alur, hambatan, atau potensi masalah yang paling umum.

  • Alat pemantauan performa aplikasi (APM): Gunakan alat APM untuk memantau performa aplikasi Anda dan melacak cara alur berjalan. Alat-alat ini memberikan visibilitas ke dalam waktu respons, kesalahan, dan metrik performa lainnya, memungkinkan Anda mengidentifikasi alur penting dan mengoptimalkan performanya.

  • Alat pengelogan dan penelusuran kesalahan: Gunakan alat ini untuk mengambil dan menganalisis log dan informasi debug saat aplikasi Anda berjalan. Tinjau log dan informasi penelusuran kesalahan untuk melacak bagaimana alur berjalan dan mengidentifikasi masalah atau kesalahan.

Mengidentifikasi alur kritis

Dengan data performa yang tersedia, Anda dapat mulai memberi peringkat semua alur dan mengidentifikasi alur kritis. Identifikasi alur kritis melibatkan evaluasi dampak performa dan kekritisan setiap alur. Prioritas alur yang efektif memastikan bahwa alur yang paling penting menerima sumber daya yang diperlukan sebelum alur yang kurang kritis. Untuk memprioritaskan alur dalam aplikasi Anda, pertimbangkan langkah-langkah berikut:

  • Identifikasi dampak bisnis: Mulailah dengan menilai pentingnya setiap alur dalam operasi Anda. Fokus pada bagaimana setiap alur selaras dengan tujuan bisnis Anda, dampaknya pada pengguna, dan potensi efek negatif dari performa yang buruk. Misalnya, sementara tingkat layanan gratis mungkin menarik lebih banyak pengguna, tingkat berbayar bisa lebih penting untuk tujuan bisnis Anda.

    Selain itu, pertimbangkan dampak performa dari alur di satu atau beberapa proses bisnis. Beberapa alur mungkin mendukung satu proses bisnis, tetapi sering kali, satu alur memiliki efek signifikan pada performa proses tersebut. Anda ingin mengidentifikasi alur yang berdampak pada performa terbesar. Sebaliknya, satu alur mungkin mendasar beberapa proses. Dalam kasus seperti itu, performa aliran ini secara langsung memengaruhi kemanjuran semua proses terkait, dan kemungkinan alur kritis.

  • Menganalisis data performa: Menganalisis metrik performa yang terkait dengan setiap alur. Cari pola, anomali, atau metrik menonjol yang dapat memberikan wawasan tentang efisiensi dan kepentingan alur. Misalnya, alur sistem dengan penggunaan yang signifikan kemungkinan merupakan alur penting.

  • Tetapkan peringkat kekritisan: Berdasarkan dampak bisnis dan indikator performa, Anda harus memprioritaskan alur. Gunakan peringkat kekritisan Tinggi, Sedang, dan Rendah. Alur dengan dampak bisnis yang signifikan atau permintaan performa tinggi harus menerima peringkat kekritisan "Tinggi". Alur ini adalah alur kritis Anda. Fokus pada alur dengan lalu lintas pengguna yang tinggi atau memiliki efek langsung pada pembuatan pendapatan. Tabel berikut ini menyediakan karakteristik aliran kritis (Tinggi) dan nonkritis (Sedang ke Rendah).

Alur kritis Alur nonkritis
Penggunaan tinggi Penggunaan rendah
Business Critical Tidak penting bagi bisnis
Operasi mahal Operasi kecil
Peka waktu Tidak sensitif terhadap waktu
Produksi Praproduksi
Pemrosesan real-time Pemrosesan batch
Latensi sensitif Tidak peka latensi
Pengguna berbayar Pengguna yang tidak membayar
Tingkatan premium Tingkat dasar
Tugas penting Tugas yang tidak penting
Akun pendapatan tinggi Akun pendapatan rendah

Mengisolasi alur kritis

Proses mengisolasi alur penting adalah tentang menyediakan sumber daya atau kapasitas khusus untuk mendukung alur kritis. Anda ingin mengalokasikan sumber daya dan memperhatikan alur yang penting untuk pengalaman pengguna yang optimal atau hasil bisnis yang signifikan. Tujuannya adalah untuk memastikan aliran kritis menerima daya komputasi, bandwidth jaringan, dan sumber daya yang cukup untuk beroperasi secara efisien dan efektif. Dengan mengisolasi alur penting, Anda dapat lebih mudah mengelola sumber daya yang mendukung alur kritis. Berikut adalah rekomendasi untuk mengisolasi alur kritis:

  • Segmentasi sumber daya: Buat sumber daya terpisah untuk alur penting, memungkinkannya beroperasi secara independen tanpa gangguan dari proses lain. Misalnya, Anda dapat mengisolasi alur penting pada segmen jaringan khusus atau dengan menggunakan server khusus untuk menangani kebutuhan pemrosesan alur ini. Pendekatan ini membantu meminimalkan bagaimana aliran nonkritis dapat berdampak negatif pada alur kritis.

  • Segmentasi logis: Gunakan alat virtualisasi dan kontainerisasi seperti Docker atau Kubernetes untuk mengisolasi alur di tingkat perangkat lunak. Anda dapat memisahkan aliran kritis ke komputer virtual (VM). Dengan demikian, Anda membuat lingkungan yang terisolasi, mengurangi dependensi dan potensi gangguan dari alur lain.

  • Alokasi kapasitas: Untuk alur kritis, secara eksplisit mengalokasikan serangkaian kapasitas tetap seperti CPU, memori, dan I/O disk. Alokasi ini memastikan bahwa aliran kritis selalu memiliki sumber daya yang cukup untuk beroperasi secara efisien. Atur kuota atau batas sumber daya dengan menggunakan platform orkestrasi. Dengan mengalokasikan sumber daya secara eksplisit ke alur penting, Anda mencegah ketidakcocokan sumber daya dan memprioritaskan cara sumber daya berjalan.

Tradeoff: Segmentasi sumber daya memengaruhi biaya. Ketika Anda mendedikasikan sumber daya untuk alur, Anda sering meningkatkan biaya dan membiarkan beberapa sumber daya kurang digunakan. Untuk membenarkan peningkatan performa terhadap alur kritis, peningkatan dampak bisnis harus melebihi peningkatan biaya.

Optimalkan alokasi kapasitas

Saat Anda tidak dapat mengisolasi alur penting, opsi terbaik berikutnya adalah memprioritaskan alur penting dalam mengakses kapasitas yang tersedia. Pengoptimalan alokasi kapasitas adalah tentang mendistribusikan kapasitas yang tersedia secara strategis ke alur yang berbeda berdasarkan kekritisannya. Kapasitas mencakup CPU, memori, penyimpanan, dan bandwidth jaringan. Tujuannya adalah untuk memastikan bahwa aliran paling kritis (prioritas tertinggi) menerima kapasitas yang diperlukan untuk beroperasi secara efektif. Untuk memutuskan cara mengalokasikan kapasitas, pertimbangkan strategi ini:

  • Menilai kapasitas sumber daya: Mengevaluasi berapa banyak kapasitas sumber daya yang dapat dialokasikan untuk alur. Kapasitas mungkin mencakup sumber daya seperti CPU, memori, penyimpanan, dan bandwidth jaringan. Pahami batasan dan batasan infrastruktur atau lingkungan Anda.

  • Menganalisis persyaratan alur: Menganalisis persyaratan sumber daya dari setiap alur. Pahami sumber daya yang dibutuhkan alur untuk beroperasi secara efisien. Untuk setiap alur, identifikasi permintaan sumber daya, seperti pemanfaatan CPU, persyaratan memori, dan bandwidth jaringan.

  • Memprioritaskan alokasi: Cocokkan kapasitas sumber daya yang tersedia dengan persyaratan sumber daya alur. Alokasikan sumber daya berdasarkan prioritas alur, memastikan bahwa alur prioritas yang lebih tinggi menerima sumber daya yang diperlukan untuk memenuhi kebutuhan mereka. Pahami di mana batasan terketat Anda berada dan optimalkan alokasi kapasitas di mana diperlukan. Misalnya, antrean hanya dapat memproses beberapa pesan per menit, tetapi beberapa batas penyimpanan sulit dijangkau.

  • Menggunakan pembatasan laju: Untuk memastikan bahwa alur penting dapat mengonsumsi sumber daya yang mereka butuhkan untuk memenuhi target performa mereka, terapkan batas laju ke alur dan tugas nonkritis. Batas tarif membatasi jumlah permintaan alur berprioritas lebih rendah dan pengguna dapat membuat ke sumber daya yang dibatasi. Misalnya, Anda mungkin membatasi permintaan nonprioritas tarif ke API. Untuk informasi selengkapnya, lihat pola Pembatasan Laju dan Pembatasan tarif handler HTTP di .NET.

  • Gunakan pemrosesan antrean prioritas: Pemrosesan antrean prioritas memberikan prioritas tinggi pada permintaan tertentu. Antrean biasanya memiliki struktur masuk pertama, pertama keluar (FIFO), tetapi Anda dapat memperbarui aplikasi Anda untuk menetapkan prioritas ke pesan yang ditambahkannya ke antrean. Gunakan kemampuan ini untuk memprioritaskan alur dan pengguna penting. Untuk informasi selengkapnya, lihat Pola Antrean Prioritas.

Risiko: Ini bisa menjadi tantangan untuk menyeimbangkan kebutuhan aliran kritis dengan performa keseluruhan beban kerja. Meskipun Anda harus memprioritaskan alur kritis, Anda tidak boleh mengabaikan alur nonkritis. Efisiensi performa keseluruhan beban kerja tergantung pada semua alur. Alur nonkritis yang diabaikan dapat membuat masalah yang memengaruhi semua pengguna. Terlalu banyak kebisingan dari item yang tidak penting mencuri perhatian dari item penting. Tetapi terlalu sedikit kebisingan dapat membahayakan seluruh beban kerja. Jumlah data dan jumlah pemberitahuan harus mencerminkan prioritas seimbang ini.

Fasilitasi Azure

Mengidentifikasi dan memantau alur: Azure menyediakan solusi yang berbeda untuk membantu Anda memantau performa alur penting dalam beban kerja Anda. Azure Monitor, Azure Monitor Logs, dan Azure Application Insights adalah beberapa layanan yang menawarkan kemampuan pemantauan komprehensif untuk beberapa jenis aplikasi dan beban kerja.

Mengoptimalkan alokasi kapasitas: Beberapa layanan Azure mendukung segmentasi sumber daya, segmentasi logis, dan teknik alokasi kapasitas untuk mengalokasikan kapasitas dan sumber daya ke aliran penting. Anda dapat mengisolasi alur penting melalui teknik seperti membuat sumber daya terpisah, meningkatkan kepadatan, menggunakan virtualisasi dan kontainerisasi, dan secara eksplisit mengalokasikan sumber daya ke aliran penting.

Beberapa layanan Azure, seperti Azure API Management, menyediakan kebijakan bawaan untuk pembatasan tarif. Azure menyediakan panduan terperinci dan implementasi sampel pola desain Pembatasan Tarif.

Azure mendukung pemrosesan antrean prioritas. Azure Functions menyediakan fungsi berbasis peristiwa yang dapat Anda picu dengan berbagai cara, termasuk oleh pesan baru dalam antrean atau topik. Gabungkan Azure Functions dengan Azure Queue Storage atau Azure Service Bus untuk memproses pesan berdasarkan prioritasnya.

Daftar periksa Efisiensi Performa

Lihat kumpulan rekomendasi lengkap.