Rekomendasi untuk pengoptimalan performa berkelanjutan

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

PE:12 Terus optimalkan performa. Fokus pada komponen yang menunjukkan performa yang memburuk dari waktu ke waktu, seperti database dan fitur jaringan.

Panduan ini menjelaskan rekomendasi untuk pengoptimalan performa berkelanjutan. Pengoptimalan performa berkelanjutan adalah proses pemantauan, analisis, dan peningkatan efisiensi performa secara konstan. Efisiensi performa beradaptasi dengan peningkatan dan penurunan permintaan. Pengoptimalan performa harus menjadi aktivitas berkelanjutan sepanjang masa pakai beban kerja. Performa beban kerja sering kali menURUR ATAU menjadi berlebihan dari waktu ke waktu, dan faktor-faktor yang perlu dipertimbangkan termasuk perubahan pola penggunaan, permintaan, fitur, dan utang teknis.

Definisi

Istilah Definisi
Tingkatan data Strategi penyimpanan yang melibatkan kategorisasi data berdasarkan frekuensi aksesnya dan menyimpannya pada tingkat penyimpanan yang sesuai.
Hutang teknis Akumulasi inefisiensi, pilihan desain suboptimal, atau pintasan yang sengaja diambil selama proses pengembangan untuk memberikan kode lebih cepat.
Waktu hidup Mekanisme yang menetapkan waktu kedaluwarsa untuk data.

Strategi desain utama

Efisiensi performa adalah ketika kapasitas beban kerja selaras dengan penggunaan aktual. Beban kerja yang overperform sama bermasalahnya dengan beban kerja yang kurang baik. Pertukaran berbeda. Overperformance memengaruhi pengoptimalan biaya. Performa yang buruk memengaruhi pengguna. Kunci efisiensi performa adalah pemantauan, penyesuaian, dan pengujian dari waktu ke waktu. Anda perlu meninjau metrik performa secara teratur dan membuat penyesuaian seperlunya untuk memastikan bahwa beban kerja efisien. Pengujian semua perubahan pra-dan pasca-implementasi diperlukan untuk mencapai target performa.

Mengembangkan budaya performa

Budaya performa adalah lingkungan di mana peningkatan berkelanjutan diharapkan dan tim belajar dari produksi. Pengoptimalan performa membutuhkan keterampilan khusus. Tim beban kerja membutuhkan keterampilan dan pola pikir yang tepat untuk mengoptimalkan performa mereka guna memenuhi peningkatan dan penurunan permintaan. Anda juga perlu mengalokasikan waktu mereka untuk mendukung pemantauan dan remediasi masalah performa yang diperlukan saat muncul. Tim-tim ini membutuhkan harapan yang jelas. Misalnya, target performa, garis besar, dan ambang penyimpangan (seberapa jauh dari garis besar dapat diterima) harus sangat terlihat dan disosialisasikan.

Tradeoff: Pengoptimalan performa berkelanjutan memerlukan tim yang memiliki keterampilan dan waktu yang tepat untuk menemukan dan memperbaiki masalah performa. Mendedikasikan personel untuk performa menambah biaya operasional. Jika Anda memiliki sumber daya personel yang terbatas, pengoptimalan performa berkelanjutan dapat memakan waktu jauh dari tugas operasional lainnya.

Mengevaluasi fitur platform baru

Mengevaluasi fitur platform baru melibatkan pemeriksaan fungsionalitas dan alat baru platform yang dapat meningkatkan efisiensi performa, seperti solusi penyimpanan yang dioptimalkan, mekanisme penembolokan, atau alat manajemen sumber daya. Fitur platform baru dapat membuka jalan untuk meningkatkan efisiensi performa. Selalu perbarui platform dan alat Anda untuk memastikan Anda menggunakan inovasi terbaru dan praktik terbaik. Pantau metrik umpan balik dan performa secara konsisten dari penambahan baru ini untuk menyempurnakan pendekatan Anda.

Memprioritaskan upaya pengoptimalan

Mengoptimalkan performa secara proaktif berarti mengambil langkah-langkah proaktif untuk meningkatkan dan meningkatkan performa beban kerja sebelum masalah performa muncul. Menggunakan langkah-langkah proaktif melibatkan identifikasi potensi hambatan, memantau metrik performa, dan menerapkan pengoptimalan untuk memastikan bahwa beban kerja beroperasi secara efisien dan memenuhi tujuan performa yang diinginkan. Berdasarkan analisis komponen yang memburuk, aliran kritis, dan utang teknis, Anda dapat menerapkan pengoptimalan performa khusus untuk setiap area. Peningkatan mungkin melibatkan perubahan kode, penyesuaian infrastruktur, atau pembaruan konfigurasi.

Memprioritaskan komponen yang memburuk

Beban kerja sering memiliki komponen seperti database dan komponen jaringan yang rentan terhadap penurunan performa dari waktu ke waktu. Seiring berkembangnya beban kerja dan pola penggunaan, perubahan ini sering memengaruhi performa komponen individual dalam beban kerja. Peningkatan data dalam database dapat menyebabkan waktu eksekusi kueri yang lebih lama dan pengambilan data yang lebih lambat. Perubahan pola penggunaan dapat mengakibatkan desain kueri suboptimal. Kueri yang tadinya efisien dapat menjadi tidak efisien seiring berkembangnya beban kerja. Kueri yang tidak efisien dapat mengonsumsi sumber daya yang berlebihan dan menurunkan performa database. Peningkatan penggunaan beban kerja dapat menyebabkan lalu lintas jaringan yang lebih tinggi, menyebabkan kemacetan dan masalah latensi.

Penting untuk melakukan upaya berkelanjutan untuk mengoptimalkan performa komponen-komponen ini. Mengidentifikasi dan mengatasi masalah performa secara proaktif dalam beban kerja Anda. Dengan memprioritaskan komponen yang diketahui memburuk, Anda dapat secara proaktif mengatasi potensi masalah performa dan memastikan kelancaran pengoperasian beban kerja Anda. Ini mungkin melibatkan penerapan teknik penyetelan performa, mengoptimalkan alokasi sumber daya, atau meningkatkan komponen perangkat keras atau perangkat lunak sesuai kebutuhan.

Memprioritaskan alur kritis

Alur kritis adalah proses atau alur kerja yang paling penting dan berprioritas tinggi dalam beban kerja. Dengan memprioritaskan alur penting ini, Anda memastikan bahwa bagian paling penting dari beban kerja dioptimalkan untuk performa. Mengetahui alur mana yang penting membantu memprioritaskan upaya pengoptimalan. Mengoptimalkan efisiensi performa area terpenting dari aplikasi Anda memberikan laba investasi tertinggi. Anda harus memantau alur penting dan halaman paling populer. Cari cara untuk membuatnya lebih efisien.

Mengotomatiskan pengoptimalan performa

Otomatisasi dapat menghilangkan proses manual yang berulang dan memakan waktu, memungkinkannya dilakukan secara efisien. Otomatisasi mengurangi kemungkinan kesalahan manusia dan memastikan konsistensi dalam menjalankan tugas pengoptimalan. Dengan mengotomatiskan tugas-tugas ini, Anda juga dapat membebaskan orang untuk fokus pada aktivitas dan aktivitas yang lebih kompleks yang menambah nilai. Anda dapat menerapkan otomatisasi ke berbagai tugas, seperti pengujian performa, penyebaran, dan pemantauan:

  • Pengujian performa otomatis: Gunakan alat pengujian performa otomatis seperti JMeter, K6, atau Selenium untuk mensimulasikan beban kerja dan skenario yang berbeda.

  • Penyebaran otomatis: Menerapkan proses penyebaran otomatis untuk memastikan penyebaran yang konsisten dan bebas kesalahan. Gunakan alat CI/CD untuk mengotomatiskan proses penyebaran. Alat-alat ini dapat membantu Anda mengidentifikasi hambatan performa saat Anda menggunakannya untuk menguji terhadap titik akhir, memeriksa status HTTP, dan bahkan memvalidasi kualitas dan variasi data.

  • Pemantauan dan pemberitahuan: Siapkan sistem pemantauan dan peringatan otomatis untuk terus memantau metrik performa dan mendeteksi penyimpangan atau anomali apa pun. Saat masalah performa terdeteksi, pemberitahuan otomatis dapat dipicu untuk memberi tahu tim atau individu yang sesuai.

  • Manajemen insiden: Terapkan sistem manajemen insiden otomatis yang dapat menerima pemberitahuan, membuat tiket, dan menetapkan tiket ke tim yang sesuai untuk resolusi. Langkah-langkah ini membantu memastikan bahwa masalah performa segera diatasi dan ditetapkan ke sumber daya yang tepat.

  • Diagnostik otomatis: Mengembangkan alat atau skrip diagnostik otomatis yang dapat menganalisis data performa dan mengidentifikasi akar penyebab masalah performa. Alat-alat ini dapat membantu menentukan area atau komponen tertentu dari sistem yang menyebabkan masalah performa.

  • Tindakan remediasi otomatis: Menentukan dan menerapkan tindakan remediasi otomatis yang dapat dipicu saat masalah performa tertentu terdeteksi. Tindakan ini dapat mencakup memulai ulang layanan, menyesuaikan alokasi sumber daya, menghapus cache, atau menerapkan teknik pengoptimalan performa lainnya.

  • Sistem pemulihan mandiri: Bangun kemampuan penyembuhan diri ke dalam sistem Anda dengan mengotomatiskan proses pemulihan untuk masalah performa yang diketahui. Kemampuan ini dapat melibatkan perbaikan atau penyesuaian konfigurasi sistem secara otomatis untuk memulihkan performa yang optimal.

Mengatasi utang teknis

Utang teknis mengacu pada akumulasi inefisiensi, pilihan desain suboptimal, atau pintasan yang diambil selama proses pengembangan yang dapat memengaruhi performa. Utang teknis, kode yang tidak jelas, dan implementasi yang terlalu kompleks dapat membuat efisiensi performa lebih sulit dicapai. Mengatasi utang teknis melibatkan identifikasi dan penyelesaian masalah ini untuk meningkatkan performa dan pemeliharaan beban kerja secara keseluruhan. Pekerjaan ini mungkin termasuk merefaktor kode, mengoptimalkan kueri database, meningkatkan desain arsitektur, atau menerapkan praktik terbaik. Mungkin Anda memperkenalkan utang teknis untuk memenuhi tenggat waktu, tetapi Anda perlu mengatasi utang teknis saat Anda mengoptimalkan efisiensi performa dari waktu ke waktu.

Mengoptimalkan database

Mengoptimalkan database secara berkelanjutan melibatkan identifikasi dan penerapan pengoptimalan untuk memastikan bahwa database dapat menangani beban, memberikan waktu respons yang cepat, dan meminimalkan pemanfaatan sumber daya. Dengan mengoptimalkan database secara teratur, Anda dapat meningkatkan performa aplikasi, mengurangi waktu henti, dan meningkatkan pengalaman pengguna secara keseluruhan.

  • Optimalkan kueri database: Pernyataan SQL yang ditulis dengan buruk dapat menurunkan performa database. Kondisi JOIN yang tidak efisien dapat menyebabkan pemrosesan data yang tidak diperlukan. Subkueri kompleks, kueri berlapis, dan fungsi yang berlebihan dapat mengurangi kecepatan berjalan. Kueri yang mengambil terlalu banyak data harus ditulis ulang. Anda harus mengidentifikasi kueri database yang paling umum atau penting dan mengoptimalkannya. Pengoptimalan membantu memastikan kueri yang lebih cepat.

  • Pertahankan indeks: Evaluasi strategi pengindeksan Anda untuk memastikan bahwa indeks dirancang dan dikelola dengan benar. Pemeliharaan indeks termasuk mengidentifikasi indeks yang tidak digunakan atau berlebihan dan membuat indeks yang selaras dengan pola kueri. Indeks database membantu mempercepat operasi pengambilan data. Untuk database relasional, Anda perlu memantau fragmentasi indeks. Anda harus membangun kembali atau mengatur ulang indeks secara teratur. Untuk database nonrelasi, Anda perlu memilih kebijakan pengindeksan yang benar untuk beban kerja Anda. Gunakan penyetelan otomatis pada database jika tersedia. Fitur-fitur ini termasuk secara otomatis membuat indeks yang hilang, menghilangkan indeks yang tidak digunakan, dan merencanakan koreksi. Untuk informasi selengkapnya, lihat Mempertahankan indeks untuk meningkatkan performa.

  • Tinjau desain model: Tinjau model data untuk memastikan Anda mengoptimalkannya untuk persyaratan spesifik aplikasi. Meningkatkan performa kueri dan pengambilan data mungkin melibatkan denormalisasi, partisi, atau teknik lainnya.

  • Optimalkan konfigurasi database: Optimalkan pengaturan konfigurasi database seperti alokasi memori, I/O disk, dan pengaturan konkurensi untuk memaksimalkan performa dan pemanfaatan sumber daya.

Mengoptimalkan efisiensi data

Mengoptimalkan efisiensi data adalah proses memastikan bahwa data disimpan, diproses, dan diakses dengan cara yang paling efisien. Tingkatan data dan penggunaan time-to-live (TTL) adalah teknik yang dapat digunakan untuk mengoptimalkan efisiensi data. Anda dapat menerapkan teknik ini dalam berbagai skenario penyimpanan data, seperti database, sistem file, atau penyimpanan objek.

  • Menggunakan tingkatan data: Tingkatan data melibatkan kategorisasi data berdasarkan kepentingan atau frekuensi akses dan penyimpanan data di berbagai tingkatan yang sesuai. Menyiapkan tingkatan data memungkinkan penggunaan sumber daya penyimpanan yang lebih efisien dan meningkatkan performa. Data yang sering diakses atau penting dapat disimpan dalam tingkat berkinerja tinggi, sementara data yang kurang sering diakses atau kurang penting dapat disimpan dalam tingkat biaya yang lebih rendah. Tujuannya adalah untuk meninjau penggunaan data dari waktu ke waktu untuk memastikan data berada di tingkat yang benar. Saat prioritas data berubah, data harus berpindah dari satu tingkat ke tingkat lainnya.

  • Menerapkan time-to-live: Time-to-live adalah mekanisme yang menetapkan waktu kedaluwarsa untuk data. Time-to-live memungkinkan data dihapus atau diarsipkan secara otomatis setelah periode tertentu, mengurangi persyaratan penyimpanan dan meningkatkan manajemen data. Dengan mengatur waktu hidup yang sesuai, Anda mengizinkan data yang tidak perlu dihapus, membebaskan ruang penyimpanan, dan meningkatkan efisiensi secara keseluruhan. Data sesi, file sementara, dan data cache sering menjadi target untuk time-to-live. Entri database juga dapat memiliki waktu hidup.

Risiko: Waktu hidup yang terlalu singkat dapat menciptakan masalah performa.

Fasilitasi Azure

Mengotomatiskan pengoptimalan performa: Azure Advisor memberikan rekomendasi performa otomatis berdasarkan telemetri beban kerja. Anda harus meninjau dan mengatasi rekomendasi ini secara teratur. Azure Monitor memberikan wawasan real time tentang performa sistem Anda dan memungkinkan Anda menyiapkan pemberitahuan berdasarkan metrik performa tertentu. Azure Log Analytics menyediakan diagnostik dan analisis otomatis pada log dan metrik yang dikumpulkan. Alat seperti Azure Application Insights memberikan wawasan dan rekomendasi untuk mengoptimalkan performa.

Untuk mengotomatiskan remediasi, gunakan alat otomatisasi atau skrip untuk menjalankan tindakan remediasi secara otomatis saat pemberitahuan dipicu. Anda dapat menggunakan solusi otomatisasi Azure Automation, Azure Functions, atau kustom.

Azure memungkinkan pengujian performa untuk mensimulasikan skenario dan beban kerja pengguna yang berbeda. Pengujian otomatis dapat membantu Anda mengidentifikasi hambatan performa dan mengoptimalkan sistem Anda. Alat seperti Azure DevOps dapat mengotomatiskan pengujian performa.

Mengoptimalkan database: Keluarga produk SQL memiliki banyak fitur bawaan yang memungkinkan Anda memantau dan memulihkan performa database SQL. Anda harus menggunakan fitur-fitur ini untuk mempertahankan performa database. Azure SQL Database memiliki fitur penyetelan otomatis yang terus memantau dan meningkatkan kueri. Anda harus menggunakan fitur ini untuk meningkatkan kueri SQL secara otomatis.

Anda dapat menyesuaikan kebijakan pengindeksan dengan menggunakan fitur Azure Cosmos DB. Sesuaikan kebijakan untuk memenuhi kebutuhan performa beban kerja Anda.

Mengoptimalkan efisiensi data: Tingkatan data memungkinkan Anda menyimpan data di tingkat yang berbeda berdasarkan frekuensi akses dan kepentingannya. Ini membantu mengoptimalkan biaya dan performa penyimpanan. Azure menyediakan tingkat penyimpanan yang berbeda, seperti tingkat panas, dingin, dan arsip untuk data blob. Tingkat panas dioptimalkan untuk data yang sering diakses, tingkat dingin jarang diakses, dan tingkat arsip untuk data yang jarang diakses. Dengan menggunakan tingkat akses penyimpanan yang paling cocok untuk data Anda, Anda dapat memastikan penyimpanan dan pengambilan data yang efisien.

Daftar periksa Efisiensi Performa

Lihat kumpulan rekomendasi lengkap.