Bagaimana untuk menahan beban yang meningkat pada sistem: kita bercakap tentang persediaan berskala besar untuk Black Friday

Hai Habr!

Pada 2017, semasa Black Friday, beban meningkat hampir satu setengah kali ganda dan pelayan kami berada pada hadnya. Sepanjang tahun, bilangan pelanggan telah meningkat dengan ketara, dan menjadi jelas bahawa tanpa persiapan awal yang teliti, platform itu mungkin tidak dapat menahan beban 2018.

Kami menetapkan matlamat yang paling bercita-cita tinggi yang mungkin: kami mahu bersedia sepenuhnya untuk sebarang, malah yang paling berkuasa, lonjakan aktiviti dan mula melancarkan kapasiti baharu lebih awal sepanjang tahun.

CTO kami Andrey Chizh (chizh_andrey) menceritakan bagaimana kami bersedia untuk Black Friday 2018, apakah langkah-langkah yang kami ambil untuk mengelakkan kejatuhan, dan, sudah tentu, hasil daripada penyediaan yang teliti itu.

Bagaimana untuk menahan beban yang meningkat pada sistem: kita bercakap tentang persediaan berskala besar untuk Black Friday

Hari ini saya ingin bercakap tentang persiapan untuk Black Friday 2018. Mengapa sekarang, apabila kebanyakan jualan utama berada di belakang kita? Kami mula menyediakan kira-kira setahun sebelum acara berskala besar, dan melalui percubaan dan kesilapan kami menemui penyelesaian yang optimum. Kami mengesyorkan agar anda menjaga musim panas lebih awal dan mengelakkan penipuan yang mungkin timbul pada saat yang paling tidak sesuai.
Bahan itu akan berguna kepada semua orang yang ingin memerah keuntungan maksimum daripada saham tersebut, kerana Bahagian teknikal isu ini tidak kalah dengan bahagian pemasaran di sini.

Ciri-ciri trafik pada jualan besar

Bertentangan dengan kepercayaan popular, Black Friday bukan hanya satu hari setahun, tetapi hampir sepanjang minggu: tawaran diskaun pertama tiba 7-8 hari sebelum jualan. Trafik tapak web mula berkembang dengan lancar sepanjang minggu, mencapai kemuncaknya pada hari Jumaat dan turun dengan ketara pada hari Sabtu ke paras biasa kedai.

Bagaimana untuk menahan beban yang meningkat pada sistem: kita bercakap tentang persediaan berskala besar untuk Black Friday

Ini penting untuk dipertimbangkan: kedai dalam talian menjadi sangat sensitif terhadap sebarang "kelembapan" dalam sistem. Selain itu, barisan surat berita e-mel kami juga mengalami peningkatan yang ketara dalam bilangan penyerahan.

Secara strategik penting bagi kita untuk melalui Black Friday tanpa ranap, kerana... Fungsi paling penting laman web dan surat berita kedai bergantung pada pengendalian platform, iaitu:

  • Menjejak dan mengeluarkan cadangan produk,
  • Pengeluaran bahan berkaitan (contohnya, imej reka bentuk blok cadangan, seperti anak panah, logo, ikon dan elemen visual lain),
  • Menyediakan imej produk dengan saiz yang diperlukan (untuk tujuan ini kami mempunyai "ImageResizer" - subsistem yang memuat turun imej dari pelayan kedai, memampatkannya kepada saiz yang diperlukan dan, melalui pelayan caching, menghasilkan imej saiz yang diperlukan untuk setiap produk dalam setiap blok cadangan).

Malah, semasa Black Friday 2019, beban pada perkhidmatan meningkat sebanyak 40%, i.e. bilangan acara yang dijejaki dan diproses oleh sistem Roket Runcit di tapak kedai dalam talian telah meningkat daripada 5 kepada 8 ribu permintaan sesaat. Disebabkan fakta bahawa kami sedang bersiap untuk beban yang lebih serius, kami terselamat daripada lonjakan sedemikian dengan mudah.

Bagaimana untuk menahan beban yang meningkat pada sistem: kita bercakap tentang persediaan berskala besar untuk Black Friday

Latihan am

Black Friday ialah masa yang sibuk untuk semua runcit dan e-dagang khususnya. Bilangan pengguna dan aktiviti mereka pada masa ini meningkat dengan ketara, jadi kami, seperti biasa, bersedia dengan teliti untuk masa sibuk ini. Mari tambahkan di sini fakta bahawa kami mempunyai banyak kedai dalam talian yang disambungkan bukan sahaja di Rusia, tetapi juga di Eropah, di mana keterujaannya jauh lebih tinggi, dan kami mendapat tahap keghairahan yang lebih teruk daripada siri Brazil. Apakah yang perlu dilakukan untuk bersedia sepenuhnya untuk beban yang meningkat?

Bekerja dengan pelayan

Pertama, adalah perlu untuk mengetahui apa sebenarnya yang kami perlukan untuk meningkatkan kuasa pelayan. Sudah pada bulan Ogos, kami mula memesan pelayan baharu khusus untuk Black Friday - secara keseluruhan kami menambah 10 mesin tambahan. Menjelang November mereka berada dalam pertempuran sepenuhnya.

Pada masa yang sama, beberapa mesin binaan telah dipasang semula untuk digunakan sebagai pelayan Aplikasi. Kami segera menyediakan mereka untuk menggunakan fungsi yang berbeza: kedua-duanya untuk mengeluarkan pengesyoran dan untuk perkhidmatan ImageResizer, supaya, bergantung pada jenis beban, setiap satu daripadanya boleh digunakan untuk salah satu peranan ini. Dalam mod biasa, pelayan Aplikasi dan ImageResizer mempunyai fungsi yang ditakrifkan dengan jelas: pengesyoran keluaran terdahulu, yang terakhir membekalkan imej untuk surat dan blok pengesyoran di tapak web beli-belah dalam talian. Sebagai persediaan untuk Black Friday, ia telah memutuskan untuk membuat semua pelayan dwi-tujuan untuk mengimbangi trafik antara mereka bergantung pada jenis muat turun.

Kemudian kami menambah dua pelayan besar untuk Kafka (Apache Kafka) dan mendapat sekumpulan 5 mesin berkuasa. Malangnya, segala-galanya tidak berjalan lancar seperti yang kami mahu: semasa proses penyegerakan data, dua mesin baharu menduduki keseluruhan lebar saluran rangkaian, dan kami perlu segera memikirkan cara menjalankan proses penambahan dengan cepat dan selamat untuk keseluruhan infrastruktur. Untuk menyelesaikan isu ini, pentadbir kami terpaksa mengorbankan hujung minggu mereka dengan berani.

Bekerja dengan data

Sebagai tambahan kepada pelayan, kami memutuskan untuk mengoptimumkan fail untuk meringankan beban dan langkah besar bagi kami ialah terjemahan fail statik. Semua fail statik yang sebelum ini dihoskan pada pelayan telah dialihkan ke S3 + Cloudfront. Kami telah lama ingin melakukan ini, kerana beban pada pelayan hampir dengan nilai had, dan kini peluang besar telah muncul.

Seminggu sebelum Black Friday, kami menambah masa caching imej kepada 3 hari, supaya jika ImageResizer ranap, imej yang dicache sebelum ini akan diambil daripada cdn. Ia juga mengurangkan beban pada pelayan kami, kerana semakin lama imej disimpan, semakin jarang kami perlu membelanjakan sumber untuk mengubah saiz.

Dan akhir sekali: 5 hari sebelum Black Friday, moratorium telah diumumkan mengenai penggunaan mana-mana fungsi baharu, serta pada mana-mana kerja dengan infrastruktur - semua perhatian ditujukan untuk mengatasi beban yang meningkat.

Rancangan untuk bertindak balas kepada situasi yang sukar

Tidak kira betapa berkualiti tinggi penyediaannya, fakaps sentiasa boleh dilakukan. Dan kami telah membangunkan 3 pelan tindak balas untuk kemungkinan situasi kritikal:

  • pengurangan beban,
  • melumpuhkan beberapa perkhidmatan,
  • penutupan sepenuhnya perkhidmatan.

Pelan A: Kurangkan beban. Seharusnya diaktifkan jika, disebabkan oleh lonjakan dalam beban, pelayan kami melampaui masa respons yang boleh diterima. Dalam kes ini, kami telah menyediakan mekanisme untuk mengurangkan beban secara beransur-ansur dengan menukar sebahagian trafik kepada pelayan Amazon, yang hanya akan membalas semua permintaan dengan "200 OK" dan memberikan respons kosong. Kami memahami bahawa ini adalah penurunan kualiti perkhidmatan, tetapi pilihan antara fakta bahawa perkhidmatan itu tidak berfungsi sama sekali atau tidak menunjukkan pengesyoran untuk kira-kira 10% trafik adalah jelas.

Pelan B: Lumpuhkan perkhidmatan. Kemerosotan sebahagian tersirat perkhidmatan. Contohnya, mengurangkan kelajuan mengira cadangan peribadi untuk memunggah beberapa pangkalan data dan saluran komunikasi. Dalam mod biasa, pengesyoran dikira dalam masa nyata, mencipta versi kedai dalam talian yang berbeza untuk setiap pelawat, tetapi dalam keadaan beban yang meningkat, mengurangkan kelajuan membolehkan perkhidmatan teras lain terus berfungsi.

Pelan C: sekiranya berlaku Armageddon. Jika kegagalan sistem yang lengkap berlaku, kami telah menyediakan pelan yang membolehkan kami terputus hubungan dengan pelanggan kami dengan selamat. Pembeli kedai hanya akan berhenti melihat cadangan; prestasi kedai dalam talian tidak akan terjejas dalam apa jua cara. Untuk melakukan ini, kami perlu menetapkan semula fail penyepaduan kami supaya pengguna baharu berhenti berinteraksi dengan perkhidmatan tersebut. Iaitu, kami akan melumpuhkan kod penjejakan utama kami, perkhidmatan akan berhenti mengumpul data dan mengira pengesyoran, dan pengguna hanya akan melihat halaman tanpa sekatan pengesyoran. Bagi semua mereka yang sebelum ini telah menerima fail integrasi, kami telah menyediakan pilihan untuk menukar rekod DNS kepada Amazon dan 200 OK stub.

Keputusan

Kami mengendalikan keseluruhan beban walaupun tanpa perlu menggunakan mesin binaan tambahan. Dan terima kasih kepada persediaan awal, kami tidak memerlukan sebarang pelan tindak balas yang dibangunkan. Tetapi semua kerja yang dilakukan adalah pengalaman yang tidak ternilai yang akan membantu kami menghadapi kemasukan trafik yang paling tidak dijangka dan besar.
Seperti pada 2017, beban pada perkhidmatan meningkat sebanyak 40%, dan bilangan pengguna di kedai dalam talian meningkat sebanyak 60% pada Black Friday. Semua kesukaran dan kesilapan berlaku semasa tempoh persediaan, yang menyelamatkan kami dan pelanggan kami daripada situasi yang tidak dijangka.

Bagaimana anda menghadapi Black Friday? Bagaimanakah anda bersedia untuk beban kritikal?

Sumber: www.habr.com

Tambah komen