Praktik terbaik untuk Azure App Service

Artikel ini merangkum praktik terbaik untuk menggunakan Azure App Service.

Kolokasi

Solusi Azure App Service terdiri dari aplikasi web dan database atau akun penyimpanan untuk menyimpan konten atau data. Ketika sumber daya ini berada di wilayah yang berbeda, situasinya dapat memiliki efek berikut:

  • Peningkatan latensi dalam komunikasi antar sumber daya
  • Biaya moneter untuk transfer data keluar di seluruh wilayah, seperti yang tercantum di halaman harga Azure

Kolokasi adalah yang terbaik untuk sumber daya Azure yang menyusun solusi. Saat Anda membuat sumber daya, pastikan sumber daya berada di wilayah Azure yang sama kecuali Anda memiliki alasan bisnis atau desain tertentu agar tidak. Anda dapat memindahkan aplikasi App Service ke wilayah yang sama dengan database Anda dengan menggunakan fitur kloning App Service yang tersedia dalam paket App Service Premium.

Penyematan sertifikat

Penyematan sertifikat adalah praktik di mana aplikasi hanya mengizinkan daftar otoritas sertifikat (CA) tertentu yang dapat diterima, kunci publik, thumbprint, atau bagian mana pun dari hierarki sertifikat.

Aplikasi tidak boleh memiliki dependensi keras atau menyematkan ke sertifikat TLS kartubebas default (*.azurewebsites.net). App Service adalah platform as a service (PaaS), sehingga sertifikat ini dapat diputar kapan saja. Jika layanan memutar sertifikat TLS kartubebas default, aplikasi yang disematkan sertifikat akan merusak dan mengganggu konektivitas untuk aplikasi yang dikodekan secara permanen ke sekumpulan atribut sertifikat tertentu. Periodisitas di mana sertifikat diputar juga tidak dijamin karena frekuensi rotasi dapat berubah kapan saja.

Aplikasi yang mengandalkan penyematan sertifikat juga tidak boleh memiliki dependensi keras pada sertifikat terkelola App Service. Sertifikat terkelola App Service dapat diputar kapan saja, yang menyebabkan masalah serupa untuk aplikasi yang mengandalkan properti sertifikat yang stabil. Ini adalah praktik terbaik untuk menyediakan sertifikat TLS kustom untuk aplikasi yang mengandalkan penyematan sertifikat.

Jika aplikasi Anda perlu mengandalkan perilaku penyematan sertifikat, kami sarankan Anda menambahkan domain kustom ke aplikasi web dan menyediakan sertifikat TLS kustom untuk domain tersebut. Aplikasi kemudian dapat mengandalkan sertifikat TLS kustom untuk penyematan sertifikat.

Sumber daya memori

Saat memantau atau rekomendasi layanan menunjukkan bahwa aplikasi mengonsumsi lebih banyak memori dari yang Anda harapkan, pertimbangkan fitur penyembuhan otomatis App Service. Anda dapat mengonfigurasi penyembuhan otomatis dengan menggunakan web.config.

Salah satu opsi untuk fitur penyembuhan otomatis adalah mengambil tindakan kustom berdasarkan ambang memori. Tindakan berkisar dari pemberitahuan email hingga penyelidikan melalui cadangan memori hingga mitigasi lokal dengan mendaur ulang proses pekerja.

Sumber daya CPU

Saat memantau atau rekomendasi layanan menunjukkan bahwa aplikasi mengonsumsi lebih banyak CPU dari yang Anda harapkan atau mengalami lonjakan CPU berulang, pertimbangkan untuk meningkatkan atau menskalakan paket App Service. Jika aplikasi Anda stateful, peningkatan skala adalah satu-satunya opsi. Jika aplikasi Anda tanpa status, penskalaan akan memberi Anda lebih banyak fleksibilitas dan potensi skala yang lebih tinggi.

Untuk informasi selengkapnya tentang opsi penskalaan dan penskalaan otomatis App Service, lihat Meningkatkan skala aplikasi di Azure App Service.

Sumber daya soket

Alasan umum untuk melelahkan koneksi TCP keluar adalah penggunaan pustaka klien yang tidak menggunakan kembali koneksi TCP atau yang tidak menggunakan protokol tingkat yang lebih tinggi seperti HTTP tetap aktif.

Tinjau dokumentasi untuk setiap pustaka yang direferensikan aplikasi dalam paket App Service Anda. Pastikan pustaka dikonfigurasi atau diakses dalam kode Anda untuk penggunaan kembali koneksi keluar yang efisien. Ikuti juga panduan dokumentasi pustaka untuk pembuatan dan rilis yang tepat atau pembersihan untuk menghindari koneksi bocor. Saat penyelidikan tersebut ke pustaka klien sedang berlangsung, Anda dapat mengurangi dampak dengan menskalakan ke beberapa instans.

Node.js dan permintaan HTTP keluar

Ketika Anda bekerja dengan Node.js dan banyak permintaan HTTP keluar, berurusan dengan HTTP tetap hidup 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 akhirnya macet karena tidak ada lagi soket yang tersedia.

Berikut adalah contoh penanganan respons saat Anda bekerja dengan http paket atau https :

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

Jika Anda menjalankan aplikasi App Service di komputer Linux yang memiliki beberapa core, 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, gunakan perintah ini untuk memulai empat instans:

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

Pencadangan aplikasi

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). Hasil dari gagal mengakses salah satu sumber daya ini adalah kegagalan pencadangan yang konsisten.

Dua alasan paling umum mengapa pencadangan aplikasi gagal adalah pengaturan penyimpanan yang tidak valid dan konfigurasi database yang tidak valid. Kegagalan ini biasanya terjadi setelah perubahan pada sumber daya penyimpanan atau database, atau setelah perubahan pada kredensial untuk mengakses sumber daya tersebut. Misalnya, kredensial mungkin diperbarui untuk database yang Anda pilih di pengaturan cadangan.

Ketika kegagalan pencadangan terjadi, tinjau hasil terbaru untuk memahami jenis kegagalan mana yang terjadi. Untuk kegagalan akses penyimpanan, tinjau dan perbarui pengaturan penyimpanan dalam konfigurasi cadangan Anda. Untuk kegagalan akses database, tinjau dan perbarui string koneksi Anda sebagai bagian dari pengaturan aplikasi. Kemudian lanjutkan untuk memperbarui konfigurasi cadangan Anda untuk menyertakan database yang diperlukan dengan benar.

Untuk informasi selengkapnya tentang pencadangan aplikasi, lihat Mencadangkan dan memulihkan aplikasi Anda di Azure App Service.

Aplikasi Node.js

Konfigurasi default Azure App Service untuk aplikasi Node.js dimaksudkan agar paling sesuai dengan kebutuhan aplikasi yang paling umum. Jika Anda ingin mempersonalisasi konfigurasi default untuk aplikasi Node.js Anda untuk meningkatkan performa atau mengoptimalkan penggunaan sumber daya untuk sumber daya CPU, memori, atau jaringan, lihat Praktik terbaik dan panduan pemecahan masalah untuk aplikasi Node di Azure App Service. Artikel tersebut menjelaskan pengaturan iisnode yang mungkin perlu Anda konfigurasi untuk aplikasi Node.js Anda. Ini juga menjelaskan cara mengatasi skenario atau masalah dengan aplikasi Anda.

Perangkat IoT

Anda dapat meningkatkan lingkungan saat menjalankan perangkat Internet of Things (IoT) yang terhubung ke App Service.

Salah satu praktik umum dengan perangkat IoT adalah penyematan sertifikat. Untuk menghindari waktu henti yang tidak terduga karena perubahan sertifikat terkelola layanan, Anda tidak boleh menyematkan sertifikat ke sertifikat default *.azurewebsites.net atau ke sertifikat terkelola App Service. Jika sistem Anda perlu mengandalkan perilaku penyematan sertifikat, kami sarankan Anda menambahkan domain kustom ke aplikasi web dan menyediakan sertifikat TLS kustom untuk domain tersebut. Aplikasi kemudian dapat mengandalkan sertifikat TLS kustom untuk penyematan sertifikat. Untuk informasi selengkapnya, lihat bagian penyematan sertifikat di artikel ini.

Untuk meningkatkan ketahanan di lingkungan Anda, jangan mengandalkan satu titik akhir untuk semua perangkat Anda. Host aplikasi web Anda di setidaknya dua wilayah untuk menghindari satu titik kegagalan, dan siap untuk gagal atas lalu lintas.

Di App Service, Anda dapat menambahkan domain kustom yang identik ke beberapa aplikasi web, selama aplikasi web ini dihosting di berbagai wilayah. Kemampuan ini memastikan bahwa jika Anda perlu menyematkan sertifikat, Anda juga dapat menyematkan pada sertifikat TLS kustom yang Anda berikan.

Opsi lain adalah menggunakan load balancer di depan aplikasi web, seperti Azure Front Door atau Azure Traffic Manager, untuk memastikan ketersediaan tinggi untuk aplikasi web Anda. Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat instans Front Door untuk aplikasi web global yang sangat tersedia atau Mengontrol lalu lintas Azure App Service dengan Azure Traffic Manager.

Langkah berikutnya

Untuk mendapatkan praktik terbaik yang dapat ditindakkan yang khusus untuk sumber daya Anda, gunakan diagnostik App Service:

  1. Buka aplikasi web Anda di portal Azure.
  2. Buka diagnostik App Service dengan memilih Diagnosis dan selesaikan masalah di panel kiri.
  3. Pilih petak praktik terbaik.
  4. Pilih Praktik Terbaik untuk Ketersediaan & Performa atau Praktik Terbaik untuk Konfigurasi Optimal untuk melihat status aplikasi Anda saat ini sehubungan 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.