Praktik terbaik Azure App Service

Artikel ini merangkum praktik terbaik untuk menggunakan Azure App Service.

Kolokasi

Saat sumber daya Azure menyusun solusi seperti aplikasi web dan database, aplikasi tersebut berada di wilayah yang berbeda, sumber daya tersebut bisa memiliki efek berikut:

  • Peningkatan latensi dalam komunikasi antar sumber daya
  • Tagihan biaya untuk transfer data keluar lintas wilayah seperti yang disampaikan di halaman harga Azure.

Kolokasi di wilayah yang sama adalah cara terbaik untuk sumber daya Azure yang menyusun solusi seperti aplikasi web dan database atau akun penyimpanan yang digunakan untuk menyimpan konten atau data. Saat membuat sumber daya, pastikan mereka berada di wilayah Azure yang sama kecuali Anda karena alasan bisnis atau desain sehingga tidak di wilayah yang sama. Anda dapat memindahkan aplikasi App Service ke wilayah yang sama dengan database Anda dengan menggunakan fitur kloning App Service yang saat ini tersedia untuk aplikasi Paket App Service Premium.

Penyematan Sertifikat

Aplikasi tidak boleh memiliki dependensi yang keras atau penyematan ke sertifikat TLS *.azurewebsites.net default karena sertifikat TLS *.azurewebsites.net dapat dirotasi kapan saja, mengingat sifat App Service sebagai Platform as a Service (PaaS). Penyematan sertifikat adalah praktik yang mana aplikasi hanya mengizinkan daftar Otoritas Sertifikat (OS), kunci publik, thumbprint, atau bagian mana pun dari hierarki sertifikat tertentu yang dapat diterima. Jika layanan memutar sertifikat TLS wildcard default App Service, aplikasi dengan sertifikat yang disematkan akan memutus dan mengganggu konektivitas aplikasi yang dikodekan secara permanen ke set atribut sertifikat tertentu. Adanya periode dengan sertifikat TLS *.azurewebsites.net yang dirotasi juga tidak dijamin karena frekuensi rotasi dapat berubah kapan saja.

Perhatikan bahwa aplikasi yang mengandalkan penyematan sertifikat juga tidak boleh memiliki dependensi keras pada Sertifikat Terkelola App Service. Sertifikat Terkelola App Service dapat dirotasi kapan saja, yang menyebabkan masalah serupa untuk aplikasi yang mengandalkan properti sertifikat yang stabil. Praktik terbaiknya adalah dengan menyediakan sertifikat TLS kustom untuk aplikasi yang mengandalkan penyematan sertifikat.

Jika aplikasi perlu mengandalkan perilaku penyematan sertifikat, sebaiknya tambahkan domain kustom ke aplikasi web dan berikan sertifikat TLS kustom untuk domain yang kemudian dapat diandalkan untuk penyematan sertifikat.

Ketika aplikasi mengkonsumsi lebih banyak memori dari yang diharapkan

Ketika Anda melihat aplikasi mengkonsumsi lebih banyak memori dari yang diharapkan seperti yang ditunjukkan melalui pemantauan atau rekomendasi layanan, pertimbangkan fitur Mulai Ulang Otomatis App Service. Salah satu opsi fitur Mulai Ulang Otomatis adalah mengambil tindakan kustom berdasarkan ambang memori. Tindakan mencakup spektrum dari pemberitahuan email hingga penyelidikan melalui penumpukan memori hingga mitigasi di tempat dengan mendaur ulang proses pekerja. Mulai ulang otomatis dapat dikonfigurasi melalui web.config dan melalui antarmuka pengguna yang ramah seperti yang dijelaskan di posting blog ini untuk Ekstensi Situs Dukungan App Service.

Ketika aplikasi mengkonsumsi lebih banyak CPU dari yang diharapkan

Ketika Anda melihat aplikasi mengkonsumsi lebih banyak CPU daripada yang diharapkan atau mengalami lonjakan CPU berulang seperti yang ditunjukkan melalui pemantauan atau rekomendasi layanan, pertimbangkan untuk meningkatkan atau menskalakan paket App Service. Jika aplikasi Anda stateful, penskalaan naik adalah satu-satunya opsi, sementara jika aplikasi Anda stateless, penskalaan melebar memberi Anda lebih banyak fleksibilitas dan potensi skala yang lebih tinggi.

Untuk informasi selengkapnya tentang opsi penskalaan dan penskalaan otomatis App Service, lihat Menskalakan Web App di Azure App Service.

Ketika sumber daya soket habis

Alasan umum menghabiskan koneksi TCP keluar adalah penggunaan pustaka klien, yang tidak diimplementasikan untuk menggunakan koneksi TCP kembali, atau ketika protokol dengan tingkat yang lebih tinggi seperti HTTP - Keep-Alive tidak digunakan. Tinjau dokumentasi untuk setiap pustaka yang direferensikan oleh aplikasi di Paket App Service Anda untuk memastikan dokumentasi dikonfigurasi atau diakses dalam kode Anda untuk penggunaan koneksi keluar kembali yang efisien. Ikuti juga panduan dokumentasi pustaka untuk pembuatan dan rilis yang tepat atau pembersihan untuk menghindari koneksi bocor. Sementara penyelidikan pustaka klien tersebut sedang berlangsung, dampaknya dapat dimitigasi dengan menskalakan ke beberapa instans.

Permintaan http keluar dan Node.js

Ketika bekerja dengan Node.js dan banyak permintaan http keluar, berurusan dengan HTTP - Keep-Alive itu penting. Anda dapat menggunakan paket agentkeepalivenpm untuk membuatnya lebih mudah dalam kode Anda.

Selalu tangani respons http, bahkan jika Anda tidak melakukan apa pun di handler. Jika Anda tidak menangani respons dengan benar, aplikasi Anda pada akhirnya macet karena tidak ada lagi soket yang tersedia.

Misalnya, saat bekerja dengan pada akhirnya http atau https:

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Jika Anda menjalankan App Service di Linux pada mesin dengan beberapa inti, praktik terbaik lainnya adalah menggunakan PM2 untuk memulai beberapa proses Node.js untuk menjalankan aplikasi Anda. Anda dapat melakukannya dengan menentukan perintah mulai ke kontainer Anda.

Misalnya, untuk memulai empat instans:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Saat pencadangan aplikasi Anda mulai gagal

Dua alasan paling umum mengapa pencadangan aplikasi gagal adalah: pengaturan penyimpanan yang tidak valid dan konfigurasi database yang tidak valid. Kegagalan ini biasanya terjadi ketika ada perubahan pada sumber daya penyimpanan atau database, atau perubahan cara mengakses sumber daya ini (misalnya, kredensial diperbarui untuk database yang dipilih dalam pengaturan cadangan). Pencadangan biasanya berjalan sesuai jadwal dan memerlukan akses ke penyimpanan (untuk menghasilkan file yang dicadangkan) dan database (untuk menyalin dan membaca konten yang akan dicantumkan dalam cadangan). Akibat gagal mengakses salah satu sumber daya ini akan menjadi kegagalan pencadangan yang konsisten.

Ketika kegagalan pencadangan terjadi, tinjau hasil terbaru untuk memahami jenis kegagalan mana yang terjadi. Untuk kegagalan akses penyimpanan, tinjau dan perbarui pengaturan penyimpanan yang digunakan dalam konfigurasi cadangan. Untuk kegagalan akses database, tinjau dan perbarui string koneksi Anda sebagai bagian dari pengaturan aplikasi lalu kemudian lanjutkan untuk memperbarui konfigurasi cadangan Anda untuk menyertakan database yang diperlukan dengan benar. Untuk informasi selengkapnya tentang cadangan aplikasi, lihat Mencadangkan aplikasi web di Azure App Service.

Saat aplikasi Node.js baru disebar ke Azure App Service

Konfigurasi default Azure App Service untuk aplikasi Node.js dimaksudkan agar paling sesuai dengan kebutuhan aplikasi yang paling umum. Jika konfigurasi untuk aplikasi Node.js Anda akan mendapat manfaat dari penyetelan yang dipersonalisasi untuk meningkatkan performa atau mengoptimalkan penggunaan sumber daya untuk sumber daya CPU/memori/jaringan, lihat Praktik terbaik dan panduan pemecahan masalah untuk aplikasi Node di Azure App Service. Artikel ini menjelaskan pengaturan iisnode yang mungkin perlu Anda konfigurasi untuk aplikasi Node.js Anda, artikel ini menjelaskan berbagai skenario atau masalah yang mungkin dihadapi aplikasi Anda, dan menunjukkan cara mengatasi masalah ini.

Saat perangkat Internet of Things (IoT) tersambung ke aplikasi di App Service

Ada beberapa skenario yang mana Anda dapat meningkatkan lingkungan Anda saat menjalankan perangkat Internet of Things (IoT) yang tersambung ke App Service. Salah satu penggunaan perangkat IoT yang paling umum adalah "penyematan sertifikat". Untuk menghindari waktu henti yang tidak terduga karena perubahan pada sertifikat terkelola layanan, jangan Anda menyematkan sertifikat ke sertifikat *.azurewebsites.net default atau ke Sertifikat Terkelola App Service. Jika sistem Anda perlu mengandalkan perilaku penyematan sertifikat, sebaiknya tambahkan domain kustom ke aplikasi web dan berikan sertifikat TLS kustom untuk domain yang kemudian dapat diandalkan untuk penyematan sertifikat. Anda dapat merujuk ke bagian penyematan sertifikat di artikel ini untuk informasi lebih lanjut.

Untuk meningkatkan ketahanan di lingkungan Anda, jangan hanya mengandalkan satu titik akhir untuk semua perangkat Anda. Anda setidaknya harus menghosting aplikasi web Anda di dua wilayah yang berbeda guna menghindari satu titik kegagalan dan bersiap untuk melakukan failover lalu lintas. Di App Service, Anda dapat menambahkan domain kustom yang identik ke aplikasi web yang berbeda selama aplikasi web ini dihosting di wilayah yang berbeda. Tindakan ini memastikan bahwa jika Anda perlu menyematkan sertifikat, Anda juga dapat menyematkan pada sertifikat TLS kustom yang telah Anda berikan. Opsi lain adalah dengan menggunakan penyeimbang muatan di depan aplikasi web, seperti Azure Front Door atau Traffic Manager untuk memastikan ketersediaan tinggi untuk aplikasi web Anda. Anda dapat merujuk ke Mulai Cepat: Membuat Front Door untuk aplikasi web global dengan ketersediaan tinggi atau Mengontrol lalu lintas Azure App Service dengan Azure Traffic Manager untuk informasi lebih lanjut.

Langkah berikutnya

Untuk informasi lebih lanjut tentang praktik terbaik, kunjungi Diagnostik App Service untuk mengetahui praktik terbaik yang dapat dilakukan khusus untuk sumber daya Anda.

  • Navigasi ke Web App Anda di portal Azure.
  • Klik Diagnosa dan selesaikan masalah di navigasi kiri yang membuka Diagnostik App Service.
  • Pilih petak halaman beranda Praktik Terbaik.
  • Klik Praktik Terbaik untuk Ketersediaan & Performa atau Praktik Terbaik untuk Konfigurasi Optimal untuk melihat status aplikasi Anda saat ini terkait dengan praktik terbaik ini.

Anda juga dapat menggunakan tautan ini untuk langsung membuka Diagnostik App Service untuk sumber daya Anda: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.