Panduan CDN

Azure Storage
Azure Blob Storage

Jaringan pengiriman konten (CDN) adalah jaringan server terdistribusi yang dapat mengirimkan konten web secara efisien kepada pengguna. CDN menyimpan konten yang di-cache di server edge yang dekat dengan pengguna akhir untuk meminimalkan latensi.

CDN biasanya digunakan untuk mengirimkan konten statis seperti gambar, lembar gaya, dokumen, skrip sisi klien, dan halaman HTML. Keuntungan utama menggunakan CDN adalah latensi yang lebih rendah dan pengiriman konten yang lebih cepat kepada pengguna, terlepas dari lokasi geografis mereka dalam kaitannya dengan pusat data tempat aplikasi di-hosting. CDN dapat membantu mengurangi beban pada aplikasi web, karena aplikasi tidak harus melayani permintaan untuk konten yang di-hosting di CDN.

Diagram CDN

Di Azure,Azure Content Delivery Network adalah solusi CDN global untuk mengirimkan konten bandwidth tinggi, yang dihost di Azure atau lokasi lainnya. Dengan menggunakan Azure CDN, Anda dapat menyimpan objek yang tersedia untuk umum yang dimuat dari penyimpanan blob Azure, aplikasi web, mesin virtual, server web yang dapat diakses publik.

Topik ini menjelaskan beberapa praktik dan pertimbangan umum yang terbaik saat menggunakan CDN. Untuk mengetahui informasi selengkapnya, lihat Azure CDN.

Cara dan alasan menggunakan CDN

Penggunaan khas CDN meliputi:

  • memberikan sumber daya statis untuk aplikasi klien, seringkali dari situs web. Sumber daya ini dapat berbentuk gambar, style sheet, dokumen, file, skrip sisi klien, halaman HTML, fragmen HTML, atau konten lain yang tidak perlu dimodifikasi server untuk setiap permintaan. Aplikasi dapat membuat item saat runtime dan membuatnya tersedia untuk CDN (misalnya, dengan membuat daftar tajuk berita terkini), tetapi tidak melakukannya untuk setiap permintaan.

  • Menyampaikan konten statis dan berbagi publik ke perangkat seperti ponsel dan komputer tablet. Aplikasi itu sendiri adalah layanan web yang menawarkan API kepada klien yang berjalan di berbagai perangkat. CDN juga dapat memberikan himpunan data statis (melalui layanan web) untuk digunakan klien, mungkin untuk menghasilkan UI klien. Misalnya, CDN dapat digunakan untuk mendistribusikan dokumen JSON atau XML.

  • Melayani situs web yang hanya berisi konten statis publik kepada klien, tanpa memerlukan sumber daya komputasi khusus.

  • Streaming file video kepada klien sesuai permintaan. Video mendapat manfaat dari latensi rendah dan konektivitas andal yang tersedia dari pusat data yang berlokasi di seluruh dunia yang menawarkan koneksi CDN. Microsoft Azure Media Services (AMS) terintegrasi dengan Azure CDN untuk mengirimkan konten secara langsung ke CDN untuk distribusi lebih lanjut. Untuk informasi selengkapnya, lihat Gambaran umum titik akhir streaming.

  • Secara Umum meningkatkan pengalaman bagi pengguna, terutama yang terletak jauh dari pusat data yang menampung aplikasi. Pengguna ini mungkin mengalami latensi yang lebih tinggi. Sebagian besar ukuran total konten dalam aplikasi web seringkali statis, dan menggunakan CDN dapat membantu mempertahankan kinerja dan pengalaman pengguna secara keseluruhan sambil menghilangkan persyaratan untuk menyebarkan aplikasi ke beberapa pusat data. Untuk daftar lokasi node CDN saat ini, lihat Lokasi POP CDN Azure.

  • Mendukung solusi IoT (Internet of Things). Sejumlah besar perangkat dan peralatan yang terlibat dalam solusi IoT dapat dengan mudah membanjiri aplikasi jika harus mendistribusikan pembaruan firmware secara langsung ke setiap perangkat.

  • Mengatasi puncak dan lonjakan permintaan tanpa memerlukan aplikasi sebagai skala, menghindari diakibatkannya peningkatan dalam biaya operasional. Misalnya, ketika pembaruan sistem operasi dirilis untuk perangkat keras seperti model router tertentu, atau untuk perangkat konsumen seperti TV pintar, akan ada puncak permintaan yang sangat besar karena diunduh oleh jutaan pengguna. pengguna dan perangkat dalam waktu singkat.

Tantangan

Ada beberapa tantangan yang perlu dipertimbangkan ketika berencana untuk menggunakan CDN.

  • Penyebaran. Tentukan asal lokasi CDN mengambil konten, dan apakah Anda perlu menyebarkan konten di lebih dari satu sistem penyimpanan. Pertimbangkan proses untuk menyebarkan konten dan sumber daya statis. Misalnya, Anda mungkin perlu menerapkan langkah yang berbeda untuk memuat konten ke penyimpanan blob Azure.

  • Penetapan versi dan kontrol cache. Pertimbangkan bagaimana cara Anda akan memperbarui konten statis dan menyebarkan versi baru. Pahami bagaimana CDN melakukan penembolokan dan time-to-live (TTL). Untuk Azure CDN, lihat Cara kerja penembolokan.

  • Pengujian. Mungkin sulit untuk melakukan pengujian lokal pada pengaturan CDN Anda saat mengembangkan dan menguji aplikasi secara lokal atau di lingkungan pengujian.

  • Pengoptimalan mesin pencari (SEO). Konten seperti gambar dan dokumen dibawakan dari domain yang berbeda saat Anda menggunakan CDN. Hal ini dapat berdampak pada pengoptimalan mesin pencari untuk konten ini.

  • Keamanan konten. Tidak semua CDN memberikan kontrol akses dalam bentuk apa pun untuk konten. Beberapa layanan CDN, termasuk Azure CDN, mendukung autentikasi berbasis token untuk melindungi konten CDN. Untuk informasi selengkapnya, lihat Mengamankan aset Azure Content Delivery Network dengan autentikasi token.

  • Keamanan klien. Klien mungkin terhubung dari lingkungan yang tidak memungkinkan akses ke sumber daya di CDN. Hal ini bisa berupa lingkungan dengan keamanan terbatas yang membatasi akses hanya ke sekumpulan sumber yang diketahui, atau lingkungan yang mencegah pemuatan sumber daya dari apa pun selain asal halaman. Implementasi fallback diperlukan untuk menangani kasus ini.

  • Ketahanan. CDN adalah satu potensi titik kegagalan untuk suatu aplikasi.

Skenario di mana CDN mungkin tidak terlalu berperan diantaranya:

  • Jika konten memiliki tingkat hit yang rendah, mungkin hanya akan diakses beberapa kali saat valid (ditentukan oleh pengaturan time-to-live).

  • JJika data bersifat pribadi, seperti untuk perusahaan besar atau ekosistem rantai pasokan.

Pedoman umum dan praktik yang baik

Menggunakan CDN adalah cara yang baik untuk meminimalkan beban pada aplikasi Anda, dan memaksimalkan ketersediaan serta performa. Pertimbangkan untuk mengadopsi strategi ini terhadap semua konten dan sumber daya yang sesuai yang digunakan aplikasi Anda. Pertimbangkan poin-poin pada bagian berikut saat merancang strategi Anda untuk menggunakan CDN.

Penyebaran

Konten statis mungkin perlu disediakan dan disebarkan secara independen dari aplikasi jika Anda tidak memasukkannya dalam paket atau proses penyebaran aplikasi. Pertimbangkan bagaimana ini akan mempengaruhi pendekatan penerapan versi yang Anda gunakan untuk mengelola komponen aplikasi dan konten sumber daya statis.

Pertimbangkan untuk menggunakan teknik bundling dan minification untuk mengurangi waktu muat bagi klien. Bundling menggabungkan banyak file menjadi satu file. Minification menghapus karakter yang tidak perlu dari skrip dan file CSS tanpa mengubah fungsionalitas.

Jika Anda perlu menyebarkan konten ke lokasi lainnya, hal tersebut akan menjadi langkah ekstra dalam proses penyebaran. Jika aplikasi memperbarui konten untuk CDN, mungkin secara berkala atau sebagai tanggapan terhadap suatu peristiwa, itu harus menyimpan konten yang diperbarui di lokasi tambahan apa pun serta titik akhir untuk CDN.

Putuskan bagaimana Anda akan menangani pengembangan dan pengujian lokal ketika beberapa konten statis akan dibawakan dari CDN. Misalnya, Anda dapat menerapkan konten ke CDN sebagai bagian dari skrip build Anda. Atau, gunakan instruksi kompilasi atau bendera untuk mengontrol cara aplikasi memuat sumber daya. Misalnya, dalam mode debug, aplikasi dapat memuat sumber daya statik dari folder lokal. Dalam mode rilis, aplikasi akan menggunakan CDN.

Pertimbangkanlah pilihan untuk melakukan kompresi file, seperti gzip (GNU zip). Kompresi dapat dilakukan pada server asal oleh aplikasi web penyelenggara atau langsung di server tepi oleh CDN. Untuk informasi selengkapnya, lihat Meningkatkan performa dengan mengompresi file dalam Azure CDN.

Pelacakan dan penerapan versi

Anda mungkin perlu menggunakan berbagai instans CDN pada waktu yang berbeda. Misalnya, saat Anda menerapkan versi baru aplikasi, Anda mungkin ingin menggunakan CDN baru dan mempertahankan CDN lama (menyimpan konten dalam format lama) untuk versi sebelumnya. Jika Anda menggunakan penyimpanan blob Azure sebagai asal konten, Anda dapat membuat akun penyimpanan terpisah atau kontainer terpisah dan mengarahkan titik akhir CDN ke dalamnya.

Jangan gunakan string kueri untuk menunjukkan versi aplikasi yang berbeda dalam tautan ke sumber daya di CDN, karena saat mengambil konten dari penyimpanan blob Azure, string kueri adalah bagian dari nama sumber daya (nama blob). Pendekatan ini juga dapat memengaruhi cara klien menyimpan sumber daya.

Menyebarkan versi baru dari konten statis saat Anda memperbarui aplikasi dapat menjadi tantangan jika sumber daya sebelumnya di-cache di CDN. Untuk informasi selengkapnya, lihat bagian tentang kontrol cache, di bawah ini.

Pertimbangkan untuk membatasi akses konten CDN berdasarkan negara/wilayah. Azure CDN memungkinkan Anda memfilter permintaan berdasarkan negara atau wilayah asal dan membatasi konten yang dikirimkan. Untuk informasi selengkapnya, lihat Membatasi akses ke konten Anda berdasarkan negara/wilayah.

Kontrol cache

Pertimbangkan cara mengelola penembolokan dalam sistem. Misalnya, dalam Azure CDN, Anda dapat menetapkan aturan penembolokan global, lalu mengatur penembolokan khusus untuk titik akhir asal tertentu. Anda juga dapat mengontrol bagaimana penembolokan dilakukan dalam CDN dengan mengirim header cache-directive di asalnya.

Untuk informasi selengkapnya, lihat Cara kerja cache.

Untuk membuat objek menjadi tidak tersedia di CDN, Anda dapat menghapusnya dari asal, menghilangkan atau menghapus titik akhir CDN, atau dalam kasus penyimpanan blob, mengubah kontainer atau blob menjadi privat. Namun, item tidak dihapus dari CDN sampai time-to-live berakhir. Anda juga dapat membersihkan titik akhir CDN secara manual.

Keamanan

CDN dapat mengirimkan konten melalui HTTPS (SSL), dengan menggunakan sertifikat yang disediakan oleh CDN, serta melalui HTTP standar. Untuk menghindari peringatan browser tentang konten campuran, Anda mungkin perlu menggunakan HTTPS untuk meminta konten statis yang ditampilkan di halaman yang dimuat melalui HTTPS.

Jika Anda mengirimkan aset statis seperti file font dengan menggunakan CDN, Anda mungkin mengalami masalah same-origin policy jika Anda menggunakan panggilan XMLHttpRequest untuk meminta sumber daya ini dari domain yang berbeda. Banyak browser web mencegah berbagi sumber daya lintas-asal (CORS) kecuali server web dikonfigurasi untuk mengatur header respons yang sesuai. Anda dapat mengonfigurasi CDN untuk mendukung CORS dengan menggunakan salah satu metode berikut:

CDN fallback

Pertimbangkan bagaimana aplikasi Anda akan mengatasi kegagalan atau CDN yang tidak tersedia secara sementara akan CDN. Aplikasi klien mungkin dapat menggunakan salinan sumber daya yang di-cache secara lokal (pada klien) selama permintaan sebelumnya, atau Anda dapat menyertakan kode yang mendeteksi kegagalan dan sebagai gantinya meminta sumber daya dari asal (folder aplikasi atau kontainer blobAzure yang menyimpan sumber daya) jika CDN tidak tersedia.