Apa itu CDN dan bagaimana cara kerjanya?



Angka dan fakta (bukan pengantar)


  • Pada 2010, ukuran halaman web rata-rata adalah 481 kB. Pada 2019 - sudah 1936,7 kB ( statistik terperinci ). Selama tiga tahun terakhir, nilai indikator ini telah meningkat sebesar 314,7%. Studi menunjukkan bahwa kecenderungan untuk meningkatkan ukuran halaman web terus berlanjut .
  • Layanan streaming audio dan video saat ini mulai populer. Pada April 2019, jumlah pelanggan ke layanan Spotify yang populer adalah 217 juta.
  • Menurut survei, 25% pengguna meninggalkan halaman web jika memuat lebih dari 4 detik. 74% pengguna yang mengunduh situs dari perangkat seluler memilih untuk tidak menunggu jika unduhan membutuhkan waktu lebih dari 5 detik. 46% pengguna menolak berurusan dengan layanan web jika lambat.


Apa yang disaksikan oleh fakta-fakta di atas?

Fakta bahwa Internet menjadi semakin banyak konten "berat" setiap tahun.
Dan juga bahwa di dunia modern peran besar dimainkan oleh kecepatan situs web dan layanan. Jika kecepatannya terlalu rendah - ini penuh dengan kehilangan penonton, dan dalam banyak kasus - juga menguntungkan. Salah satu cara andal untuk mengatasi masalah ini adalah dengan menggunakan Content Delivery Networks (CDNs).

Selectel telah menawarkan layanan CDN sejak 2014, dan kami telah mempelajari secara rinci sisi teknis dari masalah ini. Pada artikel ini kita akan berbicara tentang perangkat dan fitur CDN modern.

Ketentuan Utama


Sebelum Anda memulai diskusi substantif tentang fitur-fitur CDN, mari mendefinisikan terminologi dasar.

CDN (Content Delivery Network) adalah infrastruktur jaringan yang didistribusikan secara geografis yang menyediakan pengiriman konten dengan cepat kepada pengguna layanan dan situs web. Server yang termasuk dalam CDN secara geografis terletak sedemikian rupa sehingga membuat waktu respons untuk pengguna situs / layanan minimal.

Origin (asal) - server tempat file sumber atau data didistribusikan melalui CDN disimpan.

PoP (point of presence) - server caching di dalam CDN, yang terletak di lokasi geografis tertentu. Istilah tepi juga digunakan untuk merujuk ke server tersebut.

Konten dinamis - konten yang dihasilkan di server pada saat penerimaan permintaan (baik dimodifikasi oleh pengguna atau diunduh dari database).

Konten statis - konten yang disimpan di server dalam bentuk yang tidak berubah (misalnya, file biner, file audio dan video, JS dan CSS).

Sedikit sejarah dan teori


Kenaikan tajam di Internet pada pertengahan 1990-an menyebabkan situasi di mana server mulai menahan beban. Dengan server pada waktu itu (yang kadang-kadang lebih lemah dalam spesifikasi teknis daripada laptop modern paling produktif), saya harus pergi ke trik yang berbeda: google, misalnya, "caching hierarkis" dan informasi superhighway - sekarang frasa ini hanya digunakan dalam artikel tentang sejarah teknologi Internet . Untuk memahami bagaimana teknologi distribusi konten berkembang, mari kita membuat penyimpangan teoretis kecil.

Catatan: distribusi konten statis dan dinamis dikaitkan dengan berbagai jenis beban server. Dalam hal konten dinamis, generasi yang terkait dengan panggilan ke database, kecepatan prosesor dan jumlah RAM adalah penting.

Untuk distribusi konten statis, yang dalam banyak kasus sangat "berat" dan yang perlu diunduh dengan sangat cepat, kecepatan jaringan menjadi penting terlebih dahulu. Arti solusi teknis untuk mempercepat distribusi statika adalah sebagai berikut: untuk menyediakan penskalaan horisontal tanpa sinkronisasi dua arah yang rumit dengan server utama.

Untuk mengurangi beban, pemilik layanan web di akhir 1990-an mulai mendistribusikan statika dan dinamika dari server yang berbeda. Proyek web besar dengan audiens besar yang tersebar di seluruh dunia mulai meng-host server statis di lokasi geografis yang berbeda.

Kemudian, pada akhir 1990-an, perusahaan mulai muncul di mana organisasi distribusi statika menjadi salah satu bidang utama bisnis. Pada tahun 1998, siswa MIT Daniel Levine dan guru matematika Thomson Leighton mendirikan Akamai. Sekarang ini adalah salah satu penyedia CDN terbesar (jika bukan terbesar) di dunia.

Sudah pada tahun 2004, lebih dari 3.000 perusahaan menggunakan CDN; total biaya pengiriman konten hingga $ 20 juta per bulan.

Jumlah CDN di seluruh dunia terus meningkat: layanan yang relevan disediakan oleh kedua perusahaan internasional besar (misalnya, Akamai, Amazon, Cloudflare), dan banyak penyedia regional ( ulasan terperinci ).

CDN tidak hanya digunakan untuk mendistribusikan statika dalam arti kata yang sebenarnya: mendistribusikan konten di berbagai server di seluruh dunia membantu memastikan ketersediaan selama masa sibuk.

Selama 10-12 tahun terakhir, jenis konten lain telah menyebar luas di Internet - streaming (banyak layanan audio dan video streaming, yang saat ini sangat populer dan memiliki jutaan, jika bukan miliar, pemirsa). Distribusi saat ini adalah kasus penggunaan lain yang umum untuk CDN.

Pertimbangkan prinsip operasi dan fitur penggunaan CDN secara lebih rinci.



Bagaimana cara kerja CDN?


Bayangkan sebuah layanan web yang digunakan oleh orang-orang di seluruh Rusia. Server utama terletak di St. Petersburg, dan pengguna berada di lokasi geografis yang berbeda: misalnya, di Krasnodar (2.604,2 km dari St. Petersburg), Novosibirsk (3 826,1 km), Irkutsk (5 661, 7 km) atau Vladivostok (9 602, 4 km). Semakin jauh pengguna dari server asli, semakin lama respons "asli". Pada awal Runet, di awal tahun 2000-an, penduduk Yuzhno-Sakhalinsk atau Petropavlovsk-Kamchatsky dapat menunggu halaman web penuh untuk dimuat sepenuhnya selama 5, atau bahkan 10 menit.

Ketika menggunakan CDN, semuanya terjadi secara berbeda: pengguna dari Vladivostok diarahkan ke server caching terdekat secara geografis sebagai bagian dari CDN, yang membuat pengiriman konten statis lebih cepat.



Untuk mempercepat distribusi dinamika saat menggunakan CDN, mekanisme lain digunakan: penyedia CDN mengurangi rute jaringan karena jaringannya.

Skenario lain yang menarik untuk menggunakan CDN adalah yang disebut live-streaming: Pengguna Internet dari seluruh dunia dapat menonton atau mendengarkan siaran dari tempat acara di browser (dan kadang-kadang dalam aplikasi khusus). Ini diatur dengan cara ini: satu atau beberapa server asal menerima aliran siaran dari kamera, yang segera diteruskan ke titik kehadiran. Server asal tidak mendistribusikan konten ke klien. Streaming CDN juga mencakup penyeimbang muatan yang mengalihkan permintaan ke server tepi yang paling tidak dimuat saat ini.

Bagaimana distribusi konten diatur?


Sebagai aturan, untuk mengonfigurasi distribusi konten statis melalui CDN, Anda harus melakukan langkah-langkah berikut:

Langkah 1: Pindahkan statika situs ke domain terpisah, misalnya, static.example.com - ini akan menjadi asal.

Langkah 2: Untuk bekerja melalui CDN, buat domain dari formulir cdn.example.com.

Langkah 3: Hubungkan CDN dari penyedia. Untuk terhubung, pemilik layanan web harus memberi tahu penyedia layanan berikut:
domain dari mana ia akan mengambil statika - static.example.com;
domain tujuan distribusi adalah cdn.example.com.

Langkah 4: Di pencatat DNS Anda, konfigurasikan catatan CNAME dari cdn.example.com pada domain penyedia CDN, yang dialokasikan oleh penyedia CDN saat terhubung.
Misalnya, dalam CDN Selectel, domain tersebut memiliki bentuk 85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net, di mana 85e72c09-bc03-43bf-b8f3-9492ae33390f dihasilkan secara otomatis.

Langkah 5: Di situs Anda, ubah domain untuk statika yang akan Anda bagikan melalui CDN ke cdn.example.com.

Pengguna mengetik di bilah browser alamat www.example.com , dari mana ia menerima halaman HTML. Selain itu, semua konten statis, misalnya, gambar grafis, diambil dari CDN (dari alamat cdn.example.com).

Konten statis yang dimaksudkan untuk distribusi sering ditempatkan di toko objek ( kami menulis tentang ini enam tahun yang lalu ). Ada banyak plugin dan ekstensi untuk CMS populer (Wordpress, Joomla, Drupal, 1C Bitrix dan lainnya), yang dengannya Anda dapat mengkonfigurasi integrasi dengan layanan penyimpanan cloud dan distribusi statika melalui CDN.

Setelah menghubungkan CDN, layanan web akan bekerja pada server asli yang sama. Bagian situs yang di-cache akan diunggah ke server jaringan CDN. Sistem menemukan server terdekat untuk pengguna dan memuat statika situs darinya secepat mungkin.

Mari kita perhatikan satu poin penting: server yang termasuk dalam CDN tidak sama dengan server file tempat konten di-host untuk diunduh nanti. CDN tidak digunakan untuk menyimpan konten, tetapi untuk caching berdasarkan algoritma tertentu.

Bagaimana CDN memahami di mana server caching terdekat?


Sebagai aturan, dua teknologi populer digunakan untuk memuat konten dari CDN: GeoDNS dan AnyCast.

Dengan menggunakan GeoDNS, Anda dapat mengikat beberapa alamat IP ke satu nama domain. Bergantung pada lokasi geografis (ditentukan oleh alamat IP dari mana permintaan itu datang), pengguna diarahkan ke server terdekat. Anda dapat membaca tentang fitur GeoDNS di artikel ini (dalam bahasa Inggris).

Saat menggunakan teknologi Anycast, alamatnya biasa, tetapi perutean terjadi pada server "mereka" di kawasan tersebut. Saat mengakses alamat www.example.com, pengguna diarahkan ke titik keberadaan terdekat. Penyedia pengguna menerima beberapa pengumuman dari jaringan yang berbeda yang memiliki titik kehadiran, dan router penyedia memilih yang terdekat dari mereka. Jawabannya juga dikembalikan di sepanjang rute terpendek.

Bagaimana konten di-cache?


Yang paling umum adalah skema akses pertama : jumlah waktu maksimum untuk mengunduh dihabiskan oleh pengguna yang mengakses server asli terlebih dahulu. Semua pengguna berikutnya akan menerima data yang di-cache di titik kehadiran terdekat mereka.

Geografi sangat penting di sini: misalnya, setelah pengguna dari panggilan Rio de Janeiro, data akan di-cache di server yang terletak di Brasil, yang tidak akan menyelesaikan masalah dengan kecepatan akses untuk pengguna dari Paris atau London.

Untuk mengatasi keterbatasan yang diberlakukan oleh skema ini, digunakan teknologi ekstraksi regional: server tetangga yang termasuk dalam CDN saling mengambil konten, dan tidak mengakses server asli.

Pada sebagian besar CDN, pengguna yang mengirim permintaan konten statis dialihkan ke titik keberadaan terdekat dan menerima versi cache konten ini darinya. Jika titik kehadiran terdekat tidak dapat menemukan file, pencarian akan dimulai pada titik kehadiran yang berdekatan, dari mana respons pengguna akan dialihkan. Dalam Akamai CDN, prosedur ini disebut distribusi berjenjang (Anda dapat menerjemahkannya ke dalam bahasa Rusia sebagai โ€œdistribusi multi-levelโ€).

Untuk apa CDN digunakan?


Paling sering, CDN digunakan untuk mengurangi waktu respons dari konten yang di-cache, yang, seperti yang kami sebutkan di atas, mengurangi arus pengunjung karena lambatnya pemuatan sumber daya dan dengan demikian mengurangi kemungkinan kerugian finansial. CDN juga membantu mengurangi risiko kehilangan akses ke konten karena penurunan server utama. Konten akan tersedia sepanjang waktu saat Anda memulihkan server utama.

Menggunakan CDN secara signifikan mengurangi beban pada server utama, yang membantu menyelesaikan masalah beban puncak. CDN modern mampu bertahan dari beban yang sangat besar. Pada akhir 2018, Akamai mengumumkan rekor volume lalu lintas CDN yang ditransmisikan : 72 Tb / dtk.

Saat ini, CDN juga aktif digunakan untuk mendistribusikan konten streaming.

Apa yang penting untuk diingat ketika bekerja dengan CDN?


Seperti halnya teknologi apa pun, CDN memiliki sejumlah fitur.

Masalah pertama yang mungkin dihadapi layanan web berbasis CDN adalah latensi cache. Situasi berikut ini sangat mungkin: pada server utama, file telah diubah, tetapi pada server caching itu akan tetap tidak berubah. Ini sangat penting ketika konten yang sering diperbarui didistribusikan melalui CDN (foto dari tempat kejadian, versi perangkat lunak baru, dan sebagainya)

Untuk memastikan pengiriman konten "segar" dalam CDN modern, ada fungsi pembersihan cache, yaitu, penghapusan konten dari kumpulan cache. Selain itu, pemilik situs dan layanan dapat mengelola sendiri pengaturan menggunakan header validator (lihat rekomendasi kami tentang topik ini dalam artikel yang sebelumnya diterbitkan).

Kesulitan lain terkait dengan pemblokiran: jika karena suatu alasan atau layanan lain yang merupakan "tetangga" Anda oleh penyedia IP CDN diblokir, situs Anda mungkin diblokir dengan Anda. Tetapi masalah ini dapat diselesaikan: atas permintaan, penyedia CDN dapat mengubah alamat IP Anda.

Siapa yang butuh CDN?


CDN terutama diperlukan untuk proyek-proyek dengan khalayak luas di berbagai daerah atau negara. Semuanya jelas di sini: mengurangi penundaan, distribusi konten yang cepat dan meningkatkan tingkat kenyamanan, dan, sebagai hasilnya, pengguna yang lebih puas.

CDN juga dapat bermanfaat bagi pengembang aplikasi seluler: menurut statistik, pengguna sering menolak untuk terus bekerja dengan aplikasi karena masalah kecepatan. Baru-baru ini, muncul solusi teknis khusus yang berfokus pada distribusi konten ke perangkat seluler. Mereka disebut CDN Seluler. Layanan yang sesuai ditawarkan oleh banyak penyedia CDN besar - misalnya, Akamai atau Amazon.

Perlu CDN dan proyek yang berfokus pada distribusi game, konten multimedia, dan streaming (seperti yang disebutkan di atas).

Apa yang harus dicari ketika memilih penyedia CDN (bukan kesimpulan)


Jumlah pengguna layanan web Anda meningkat, audiens berkembang, dan Anda berpikir untuk menghubungkan CDN untuk mengoptimalkan dan mempercepat distribusi statika dan mengurangi beban pada server utama.

Apa yang harus saya cari ketika memilih penyedia CDN?

Pertama, jumlah titik kehadiran . Ini terutama berlaku untuk proyek-proyek dengan khalayak internasional yang luas. Akan bermanfaat untuk mengetahui informasi tentang titik-titik kehadiran di wilayah yang paling menarik bagi Anda dan membandingkannya dengan calon audiens situs.

Kedua, keberadaan sambungan dengan operator telekomunikasi . Ini juga merupakan faktor penting di mana kecepatan dan efisiensi CDN tergantung. Sebagai contoh, penyedia CDN dengan titik-titik keberadaan di 100 kota, tetapi dengan sejumlah kecil koneksi, mungkin memiliki penundaan yang lebih lama daripada penyedia dengan titik-titik keberadaan yang berlokasi di 5 kota, tetapi ada lebih banyak koneksi dengan operator.

Sayangnya, dalam kebanyakan kasus, penyedia CDN tidak mempublikasikan informasi tersebut, sehingga Anda hanya dapat memverifikasi semuanya dengan pengujian.

Ketiga, ketersediaan layanan dan fungsi tambahan . Banyak penyedia CDN menyediakan layanan seperti menganalisis statistik konsumsi, mengelola kebijakan caching, mengelola tajuk HTTP, memuat konten yang sangat "berat" (dari 200 MB atau lebih), dan secara penuh dan selektif membersihkan cache.

Selain itu, ketika memilih penyedia CDN, Anda perlu memeriksa apakah ia mendukung teknologi dan protokol yang Anda butuhkan (HTTP / 2, IPv6, sertifikat SSL, dan lainnya).

Source: https://habr.com/ru/post/id463915/


All Articles