Cloud landing: bagaimana kami mengintegrasikan cloud publik dengan CDN dan apa hasilnya

Ketika Anda secara bersamaan memiliki cloud yang kuat dengan infrastruktur di AS, Uni Eropa, CIS, Asia dan Australia dan CDN dengan 100 titik kehadiran di 70+ kota di lima benua, solusinya datang secara alami - Anda perlu mengintegrasikannya! Sinergi ini jelas akan meningkatkan kapabilitas infrastruktur. Tentu saja, kami tidak dapat melewatkan kesempatan ini, tetapi pada saat yang sama kami menghadapi sejumlah tantangan.



Integrasi tersebut disertai dengan perjuangan dengan latensi setiap milidetik, peningkatan infrastruktur, dan pengembangan teknologi pengiriman konten, yang harus kami temukan sendiri dengan namanya. Kami memberi tahu Anda apa yang kami temui selama proses pengerjaan, apa yang terjadi pada akhirnya dan mengapa pengguna membutuhkannya.



gambar



Mengapa mengintegrasikan cloud dengan CDN sama sekali



Pertama-tama, cloud publik adalah kapasitas yang dapat diskalakan. Mereka dapat digunakan dengan cara apa pun: untuk mengembangkan dan menguji layanan, serta menyimpan dan memproses data. Kami di G-Core Labs meluncurkan cloud tahun lalu dan telah berhasil menggunakannya dalam proyek beban tinggi. Misalnya, klien lama kami - Wargaming - menggunakan solusi ini untuk beberapa tugas sekaligus:



  • Menguji fitur dan layanan baru dari berbagai proyek;
  • Mempersiapkan prototipe pengujian dengan pengembang eksternal yang membutuhkan akses ke sumber daya khusus dan terkontrol yang terisolasi;
  • Pengoperasian game online "Calibre" di mesin virtual.


Awan mengatasi semua hal di atas dengan keras, tetapi pekerjaan tidak berhenti di situ. Tidak peduli untuk apa kapasitas ini atau itu digunakan, hasil pekerjaan mereka tetap perlu diantarkan ke tempat tujuan. Terlepas dari apakah kita berbicara tentang game online atau formasi militer sungguhan, di sinilah masalah muncul: sangat sulit untuk mengirimkan data berat dengan cepat ke daerah terpencil yang memiliki peralatan militer multi-ton. Tugas ini dapat disederhanakan dengan mengintegrasikan cloud dengan jaringan pengiriman konten. Dengan bantuan CDN, bagian yang dapat diangkut - data statis - dapat dilemparkan "melalui udara" langsung ke titik tujuan, dan semua yang tersisa dari cloud adalah mengirimkan data dinamis yang "berukuran besar". Dengan pendekatan ini, Anda dapat mulai bekerja dengan aman bahkan di benua lain, karena integrasi memungkinkan pesaing yang lebih cepat untuk mengirimkan konten yang berat ke seluruh dunia.



gambar



, , : CDN



Mari kita turun ke spesifik. Kami tahu secara langsung bahwa perlu waktu lama untuk mengirimkan konten yang berat ke daerah terpencil langsung dari cloud, dan mungkin mahal untuk terus meningkatkan kapasitas infrastruktur sesuai dengan peningkatan beban. Untungnya, selain cloud publik, kami mendapatkan CDN kami sendiri, yang bahkan masuk ke Guinness Book of Records, memberikan pengalaman bermain World of Tanks tanpa gangguan selama periode puncak.



Untuk membunuh dua burung dengan satu batu, kami perlu mengintegrasikannya dengan awan. Kemudian kami akan dapat menawarkan solusi kepada pengguna yang biayanya lebih murah daripada peningkatan infrastruktur dan akan memungkinkan pengiriman data yang lebih cepat ke daerah terpencil. Jadi, kami memulai tahap pertama pekerjaan dan memecahkan masalah utama:



1. Layanan cloud terus-menerus dimuat.Pengguna proyek beban tinggi secara teratur meminta konten dari cloud klien kami. Ini menghasilkan beban tinggi dan pengembalian data yang lama. Diperlukan solusi yang dapat dengan mudah mengurangi jumlah referensi ke sumber. Untuk melakukan ini, kami mengintegrasikan server cloud publik dan server cache CDN, dan juga membuat satu antarmuka untuk mengelola layanan ini. Dengan bantuannya, pengguna dapat memindahkan data statis ke titik kehadiran yang diinginkan di jaringan. Karenanya, panggilan ke cloud hanya terjadi pada permintaan konten yang pertama. Ini bekerja dengan cara standar: CDN mengambil data dari sumber dan mengirimkannya ke pengguna, serta ke server cache terdekat, dari mana konten didistribusikan pada permintaan berikutnya;



2. Data ditransfer dalam waktu lama antara cloud dan CDN.Dengan menggabungkan cloud dengan jaringan pengiriman konten, kami melihat bahwa latensi pengiriman data dapat dikurangi. Untuk menghemat milidetik berharga sebanyak mungkin, kami harus menerapkan pertukaran lalu lintas antara server cache dan cloud di dalam tulang punggung;



gambar



3. Beban pada sumber tidak merata. Bahkan setelah menghubungkan CDN, panggilan yang tersisa ke cloud tidak didistribusikan secara efisien. Kami memperbaikinya dengan penyeimbang HTTP (S). Sekarang, pada saat permintaan konten, mereka menentukan dari sumber mana (mesin virtual atau keranjang penyimpanan cloud) data yang harus diambil untuk penyimpanan ke cache;



4. Konten berat membutuhkan waktu lama untuk menjangkau pengguna.Untuk mengurangi waktu tunggu, kami terus meningkatkan kapasitas dan geografi keberadaan CDN. Sekarang pengguna tidak perlu lagi menunggu konten untuk menjangkau mereka di belahan dunia lain - pada saat kontak, jaringan pengiriman konten memilih yang terdekat dari 100 titik kehadiran di lima benua. Hasilnya, waktu respons rata-rata di seluruh dunia adalah dalam 30 md.



Setelah mengatasi masalah ini, kami telah mempertimbangkan pekerjaan selesai. Tetapi cloud dengan CDN punya rencana lain untuk kami.



Beginilah cara baja dilapisi: kami sedang memodernisasi infrastruktur



Pada satu titik, menjadi jelas bahwa efek dari semua upaya kami tidak dapat sepenuhnya terwujud saat kami menggunakan konfigurasi perangkat keras lama. Untuk membuat server dan aplikasi yang dihosting di dalamnya bekerja lebih baik dan konten ditransfer lebih cepat, diperlukan peningkatan infrastruktur. Bintang-bintang di langit bertemu awal tahun ini: kami mulai meningkatkan segera setelah lini prosesor Intel Xeon Scalable generasi kedua dirilis.



Sekarang konfigurasi server standar terlihat seperti ini:



  • Layanan cloud berjalan pada prosesor Intel Xeon Gold 6152, 6252 dan 5220, memiliki RAM hingga 1 TB, serta SSD dan HDD dengan replikasi tiga kali lipat;
  • Server cache CDN dilengkapi dengan Intel Xeon Platinum, RAID virtual pada CPU dan SSD D3-S4610.


Sebagai hasil dari peningkatan, kinerja telah meningkat begitu banyak sehingga kami telah meninggalkan beberapa server dan mengurangi biaya operasinya. Tampaknya semua hal di atas akan lebih dari cukup untuk pekerjaan proyek apa pun. Tetapi suatu hari ini tidak cukup.



Perlindungan, sharding, dan distribusi geografis: mempercepat pengiriman konten dalam kondisi ekstrem



Kemalangan tidak pernah datang sendiri. Hal ini terutama berlaku untuk proyek global. Kurangnya infrastruktur yang terdistribusi secara geografis, beban tinggi karena banyaknya pengguna dari seluruh dunia dan lautan data heterogen yang perlu mereka kirimkan dengan cepat - salah satu klien kami, sumber daya media yang besar, perlu menangani semua kerumitan ini sekaligus. Sedikit detail:



  • Konten memerlukan waktu lama untuk menjangkau pengguna, dan terkadang tidak menjangkau mereka sama sekali karena penundaan yang tinggi dan masalah jaringan. Kesulitannya adalah bahwa seluruh kumpulan besar server dengan data terletak di satu titik geografis;
  • Sumber konten diakses oleh pengguna dari seluruh dunia, yang menyebabkan peningkatan beban pada infrastruktur dan menyebabkan biaya pemeliharaan yang tinggi, serta pengiriman data yang lambat;
  • Pengguna perlu mengirimkan sejumlah besar konten yang terus diperbarui yang unik untuk setiap wilayah.


Kemampuan dasar integrasi cloud dengan CDN sangat diperlukan di sini. Kami mulai mengembangkan solusi tambahan.



Bagaimana kami membuat perisai regional



Kami telah memperkenalkan konsep ini, dan sekarang menjadi layanan yang sudah ada, khusus untuk mengatasi masalah keterpencilan sumber konten. Karena fakta bahwa semua server klien berada di satu titik geografis, data dari server tersebut membutuhkan waktu lama untuk menjangkau pengguna dari berbagai belahan dunia. Situasi ini diperumit oleh fakta bahwa konten yang berbeda dan terus diperbarui harus dikirim ke berbagai daerah. Cache data sederhana di server edge tidak akan menyelesaikan masalah - server tersebut masih sering mengakses sumber di belahan dunia lain.



Kami memecahkan masalah ini dengan menerapkan kumpulan besar server cache di titik pertukaran lalu lintas populer di berbagai benua. "Regional shields" telah menjadi semacam lapisan antara sumber dan server tepi di negara pengguna. Sekarang semua konten yang diminta di bagian dunia yang sesuai pertama kali jatuh pada mereka, dan kemudian dipindahkan ke server cache. Dengan demikian, perisai mengurangi beban pada sumber klien sekaligus dan mengurangi penundaan bagi pengguna akhir. Klien, pada gilirannya, menyimpan penempatan beberapa kumpulan server dengan konten yang sama di berbagai belahan dunia, karena dengan prinsip kerja ini, satu sumber data sudah cukup.



gambar



Mengapa Anda membutuhkan sharding konten



Perisai regional telah memecahkan masalah pengiriman konten jangka panjang ke berbagai belahan dunia. Namun, sekarang kesulitan baru muncul: karena klien memiliki banyak data dan terus diperbarui, itu tidak berakhir di cache server edge yang diakses pengguna. Ini mengarah pada fakta bahwa banyak permintaan dari server cache terus-menerus dituangkan ke pool regional, yang jumlahnya dalam satu grup mencapai 20-30 buah. Untuk menghapus sebagian dari beban ini dari perisai dan mengirimkan konten ke pengguna lebih cepat, kami menambahkan kemampuan untuk mengambil data yang diperlukan dari server edge terdekat di kumpulan.



Sekarang server cache di wilayah keberadaan mulai mengakses perisai hanya ketika data tidak tersedia di seluruh grup. Selain itu, bahkan dalam kasus ini, konten segera diminta dari server yang berisi itu - berkat sharding, server edge "mengetahui" sebelumnya di mana file tertentu berada, dan tidak mengumpulkan seluruh kumpulan perisai regional untuk ini. Prinsip operasi ini mengurangi jumlah permintaan ke kumpulan dan memungkinkan pendistribusian konten secara efisien di atasnya daripada menyimpan salinan data di setiap server. Akibatnya, perisai berisi lebih banyak konten dan, sebagai hasilnya, mengurangi tekanan pada sumber klien.



gambar



Penciptaan infrastruktur seperti itu pasti akan menimbulkan satu kesulitan lagi. Mengingat jumlah server cache dalam grup, akan bodoh untuk mengasumsikan bahwa tidak ada yang bisa gagal. Dalam situasi seperti itu, seperti dalam kasus penambahan server baru ke kumpulan, cache dalam grup harus didistribusikan ulang secara optimal. Untuk melakukan ini, kami telah mengimplementasikan organisasi cache yang dipecah dengan algoritme hashing yang konsisten di blok upstream di nginx:



upstream cache_servers {
   hash $cache_key consistent;
   server edge1.dc1.gcorelabs.com;
   server edge2.dc1.gcorelabs.com;
   server edge3.dc1.gcorelabs.com;
}

      
      





Munculnya server yang tidak tersedia di kumpulan juga dipenuhi dengan masalah lain: server lain terus mengirim permintaan kepada mereka dan menunggu tanggapan. Untuk menghilangkan penundaan ini, kami menulis algoritme untuk mendeteksi server semacam itu di kumpulan. Sekarang, karena fakta bahwa mereka secara otomatis ditransfer ke keadaan bawah di grup hulu, kami tidak lagi mengakses server yang tidak aktif dan tidak mengharapkan data dari mereka.



Sebagai hasil dari pekerjaan ini, kami mengurangi biaya layanan untuk klien, menyelamatkannya dari biaya serius untuk mengatur infrastrukturnya sendiri dan secara signifikan mempercepat pengiriman data ke pengguna, terlepas dari semua kesulitan yang ada.



Siapa yang butuh cloud dengan CDN



Pekerjaan integrasi sudah selesai, dan pelanggan kami sudah menggunakan produk. Kami berbagi siapa di antara mereka yang mendapatkan hasil maksimal dari ini.



Katakanlah segera bahwa solusinya tidak berguna untuk semua orang. Kami tidak mengharapkan hal lain: untuk beberapa, hanya penyimpanan dan mesin virtual yang cukup, dan untuk seseorang - jaringan pengiriman konten. Misalnya, ketika seluruh audiens proyek berada di region yang sama, praktis tidak perlu menghubungkan CDN ke cloud. Untuk meminimalkan keterlambatan, dalam hal ini, server yang terletak tidak jauh dari pengguna sudah cukup.



Integrasi terungkap dalam segala kemuliaan saat Anda perlu memberikan konten yang berat dengan cepat dan jauh ke sejumlah besar pengguna. Berikut ini beberapa contoh bagaimana cloud dengan CDN membantu berbagai proyek:



  • Layanan streaming yang penting untuk latensi dan buffering memastikan operasi yang stabil dan siaran berkualitas tinggi;
  • Layanan hiburan online menghadirkan game berat ke berbagai belahan dunia lebih cepat dan mengurangi beban pada server, termasuk pada beban puncak;
  • Proyek media mempercepat waktu muat iklan dan tetap dapat diakses saat lalu lintas melonjak;
  • Toko online memuat lebih cepat di berbagai negara, termasuk selama promosi dan penjualan.


Kami terus melihat secara tepat bagaimana mereka menggunakan cloud dengan CDN. Kami, seperti Anda, tertarik pada angka: seberapa banyak beban pada infrastruktur berkurang, seberapa cepat pengguna menerima konten di wilayah tertentu, dan seberapa besar integrasi membantu menghemat uang. Kami akan membagikan semua ini dalam kasus mendatang.



All Articles