Cara menahan peningkatan beban pada sistem: kita berbicara tentang persiapan skala besar untuk Black Friday

Hei Habr!

Pada tahun 2017, selama Black Friday, beban meningkat hampir satu setengah kali lipat, dan server kami berada pada batasnya. Sepanjang tahun, jumlah klien telah meningkat secara signifikan, dan menjadi jelas bahwa tanpa persiapan awal yang matang, platform ini mungkin tidak dapat menahan beban tahun 2018.

Kami menetapkan tujuan yang paling ambisius: kami ingin sepenuhnya siap menghadapi lonjakan aktivitas apa pun, bahkan yang paling dahsyat sekalipun, dan mulai meluncurkan kapasitas baru terlebih dahulu sepanjang tahun.

CTO kami Andrey Chizh (chizh_andrey) menceritakan bagaimana kami mempersiapkan Black Friday 2018, tindakan apa yang kami ambil untuk menghindari kejatuhan, dan tentu saja hasil dari persiapan yang matang tersebut.

Cara menahan peningkatan beban pada sistem: kita berbicara tentang persiapan skala besar untuk Black Friday

Hari ini saya ingin berbicara tentang persiapan Black Friday 2018. Mengapa sekarang, ketika sebagian besar penjualan besar sudah berlalu? Kami mulai melakukan persiapan sekitar setahun sebelum acara berskala besar, dan melalui trial and error kami menemukan solusi optimal. Kami menyarankan Anda berhati-hati terhadap musim panas terlebih dahulu dan mencegah penipuan yang mungkin muncul pada saat yang paling tidak tepat.
Materinya akan bermanfaat bagi semua orang yang ingin mendapatkan keuntungan maksimal dari saham tersebut, karena Sisi teknis persoalannya tidak kalah dengan sisi pemasaran di sini.

Fitur lalu lintas pada penjualan besar

Berlawanan dengan kepercayaan populer, Black Friday bukan hanya satu hari dalam setahun, tetapi hampir seminggu penuh: penawaran diskon pertama tiba 7-8 hari sebelum penjualan. Lalu lintas situs web mulai tumbuh dengan lancar sepanjang minggu, mencapai puncaknya pada hari Jumat dan turun cukup tajam pada hari Sabtu ke tingkat normal toko.

Cara menahan peningkatan beban pada sistem: kita berbicara tentang persiapan skala besar untuk Black Friday

Hal ini penting untuk dipertimbangkan: toko online menjadi sangat sensitif terhadap β€œperlambatan” apa pun dalam sistem. Selain itu, lini buletin email kami juga mengalami peningkatan jumlah pengiriman yang signifikan.

Secara strategis penting bagi kita untuk melewati Black Friday tanpa gangguan, karena... Fungsi terpenting situs web dan buletin toko bergantung pada pengoperasian platform, yaitu:

  • Melacak dan mengeluarkan rekomendasi produk,
  • Penerbitan materi terkait (misalnya gambar desain blok rekomendasi, seperti panah, logo, ikon, dan elemen visual lainnya),
  • Menyediakan gambar produk dengan ukuran yang diperlukan (untuk tujuan ini kami memiliki "ImageResizer" - subsistem yang mengunduh gambar dari server toko, mengompresnya ke ukuran yang diperlukan dan, melalui server caching, menghasilkan gambar dengan ukuran yang diperlukan untuk setiap produk di setiap blok rekomendasi).

Faktanya, selama Black Friday 2019, beban layanan meningkat sebesar 40%, yaitu. jumlah kejadian yang dilacak dan diproses oleh sistem Retail Rocket di situs toko online telah meningkat dari 5 menjadi 8 ribu permintaan per detik. Karena kenyataan bahwa kami sedang mempersiapkan beban yang lebih serius, kami dapat bertahan dari lonjakan tersebut dengan mudah.

Cara menahan peningkatan beban pada sistem: kita berbicara tentang persiapan skala besar untuk Black Friday

Persiapan umum

Black Friday adalah waktu sibuk bagi semua retail dan e-commerce pada khususnya. Jumlah pengguna dan aktivitas mereka saat ini meningkat secara signifikan, jadi kami, seperti biasa, mempersiapkan diri secara matang untuk menghadapi masa sibuk ini. Mari kita tambahkan di sini fakta bahwa kami memiliki banyak toko online yang terhubung tidak hanya di Rusia, tetapi juga di Eropa, di mana tingkat kegembiraannya jauh lebih tinggi, dan tingkat minat kami lebih buruk daripada seri Brasil. Apa yang perlu dilakukan agar siap sepenuhnya menghadapi peningkatan beban?

Bekerja dengan server

Pertama, penting untuk mengetahui apa sebenarnya yang kami butuhkan untuk meningkatkan daya server. Pada bulan Agustus, kami mulai memesan server baru khusus untuk Black Friday - total kami menambahkan 10 mesin tambahan. Pada bulan November mereka sepenuhnya terlibat dalam pertempuran.

Pada saat yang sama, beberapa mesin build diinstal ulang untuk digunakan sebagai server Aplikasi. Kami segera mempersiapkan mereka untuk menggunakan fungsi yang berbeda: baik untuk mengeluarkan rekomendasi maupun untuk layanan ImageResizer, sehingga, bergantung pada jenis beban, masing-masing dapat digunakan untuk salah satu peran ini. Dalam mode normal, server Aplikasi dan ImageResizer memiliki fungsi yang jelas: yang pertama mengeluarkan rekomendasi, yang terakhir menyediakan gambar untuk surat dan blok rekomendasi di situs belanja online. Dalam persiapan untuk Black Friday, diputuskan untuk membuat semua server berfungsi ganda untuk menyeimbangkan lalu lintas di antara mereka tergantung pada jenis unduhan.

Kemudian kami menambahkan dua server besar untuk Kafka (Apache Kafka) dan mendapatkan cluster yang terdiri dari 5 mesin yang kuat. Sayangnya, semuanya tidak berjalan semulus yang kami inginkan: selama proses sinkronisasi data, dua mesin baru menempati seluruh lebar saluran jaringan, dan kami harus segera mencari cara untuk melakukan proses penambahan dengan cepat dan aman untuk proses tersebut. seluruh infrastruktur. Untuk mengatasi masalah ini, administrator kami harus dengan gagah berani mengorbankan akhir pekan mereka.

Bekerja dengan data

Selain server, kami memutuskan untuk mengoptimalkan file untuk meringankan beban dan langkah besar bagi kami adalah terjemahan file statis. Semua file statis yang sebelumnya dihosting di server dipindahkan ke S3 + Cloudfront. Kami sudah lama ingin melakukan ini, karena beban di server mendekati nilai batas, dan sekarang peluang besar telah muncul.

Seminggu sebelum Black Friday, kami meningkatkan waktu cache gambar menjadi 3 hari, sehingga jika ImageResizer mogok, gambar yang di-cache sebelumnya akan diambil dari cdn. Hal ini juga mengurangi beban pada server kami, karena semakin lama gambar disimpan, semakin jarang kami perlu mengeluarkan sumber daya untuk mengubah ukuran.

Dan yang tak kalah pentingnya: 5 hari sebelum Black Friday, moratorium diumumkan pada penerapan fungsi baru, serta pekerjaan apa pun dengan infrastruktur - semua perhatian ditujukan untuk mengatasi peningkatan beban.

Rencana untuk merespons situasi sulit

Tidak peduli seberapa berkualitas persiapannya, fakap selalu memungkinkan. Dan kami telah mengembangkan 3 rencana respons untuk kemungkinan situasi kritis:

  • pengurangan beban,
  • menonaktifkan beberapa layanan,
  • penghentian total layanan.

Rencana A: Kurangi beban. Seharusnya diaktifkan jika, karena lonjakan beban, server kami melampaui waktu respons yang dapat diterima. Dalam hal ini, kami telah menyiapkan mekanisme untuk mengurangi beban secara bertahap dengan mengalihkan sebagian lalu lintas ke server Amazon, yang hanya akan merespons semua permintaan dengan β€œ200 OK” dan memberikan respons kosong. Kami memahami bahwa ini adalah penurunan kualitas layanan, namun pilihan antara fakta bahwa layanan tidak berfungsi sama sekali atau tidak menampilkan rekomendasi untuk sekitar 10% lalu lintas sudah jelas.

Rencana B: Nonaktifkan layanan. Tersirat penurunan sebagian layanan. Misalnya, mengurangi kecepatan penghitungan rekomendasi pribadi untuk membongkar beberapa database dan saluran komunikasi. Dalam mode normal, rekomendasi dihitung secara real-time, membuat versi toko online yang berbeda untuk setiap pengunjung, namun dalam kondisi beban yang meningkat, mengurangi kecepatan memungkinkan layanan inti lainnya untuk terus bekerja.

Rencana C: jika terjadi Armageddon. Jika terjadi kegagalan sistem total, kami telah menyiapkan rencana yang memungkinkan kami terputus dengan aman dari pelanggan kami. Pembeli toko hanya akan berhenti melihat rekomendasi; kinerja toko online tidak akan terpengaruh sama sekali. Untuk melakukan ini, kami harus mengatur ulang file integrasi kami sehingga pengguna baru berhenti berinteraksi dengan layanan. Artinya, kami akan menonaktifkan kode pelacakan utama kami, layanan akan berhenti mengumpulkan data dan menghitung rekomendasi, dan pengguna hanya akan melihat halaman tanpa blok rekomendasi. Bagi semua yang sebelumnya telah menerima file integrasi, kami telah menyediakan opsi untuk mengalihkan catatan DNS ke Amazon dan rintisan 200 OK.

Hasil

Kami menangani seluruh beban bahkan tanpa perlu menggunakan mesin build tambahan. Dan berkat persiapan sebelumnya, kami tidak memerlukan rencana respons apa pun yang telah dikembangkan. Namun semua pekerjaan yang dilakukan merupakan pengalaman berharga yang akan membantu kita mengatasi gelombang lalu lintas yang paling tidak terduga dan besar.
Seperti pada tahun 2017, beban layanan meningkat sebesar 40%, dan jumlah pengguna di toko online meningkat sebesar 60% pada Black Friday. Semua kesulitan dan kesalahan terjadi selama periode persiapan, yang menyelamatkan kami dan klien kami dari situasi yang tidak terduga.

Bagaimana Anda menghadapi Black Friday? Bagaimana Anda mempersiapkan diri menghadapi beban kritis?

Sumber: www.habr.com

Tambah komentar