Bagi mereka yang gelisah dengan pemasaran atau baru saja masuk ke arus, "Black Friday" adalah hype, pesanan gila dan kerumunan pelanggan.
Adalah baik untuk menyiapkan infrastruktur untuk gelombang masuk terlebih dahulu, tetapi siapa yang kita pikirkan tentang hal-hal seperti itu sebelumnya? Namun terkadang, keputusan untuk berpartisipasi dibuat sehari sebelumnya.
Jadi, hari libur konsumerisme dimulai, server toko online mulai berkedip riang, call center terlalu panas, dan layanan pengiriman menawarkan pengiriman di suatu tempat di bulan Januari.
Apa yang harus dilakukan, bersantai dan melihat fakap secara filosofis, atau perkelahian dengan berani?

Saya menemani infrastruktur server toko online selama Black Friday, dan saya tidak pernah dihubungi sebelumnya atau diberi waktu untuk mempersiapkan. Saya berbagi pengalaman saya dengan mereka yang akan menerima pesanan yang sama hari ini.
(Anda beruntung jika dapat melakukannya dengan benar, yaitu, mengatur pemantauan selama beberapa bulan, menganalisis lalu lintas, kemacetan, arsitektur proyek, melakukan tes stres, jika perlu, membangun kembali arsitektur bersama dengan pengembang, menghubungkan kapasitas server tambahan terlebih dahulu. kita akan berbicara tentang pendekatan yang tepat di lain waktu, di sini tentang tindakan kebakaran).
Kami mengatur pemantauan
Saya pikir pemantauan adalah hal utama dalam hal apa pun. Masih akan ada masalah, tetapi berkat jadwal pemantauan, Anda dapat memahami di mana kemacetan sekarang.
Jika memungkinkan, saya menggunakan solusi seperti Zabbix / Prometheus / ELK (tergantung arsitekturnya), jika tidak, saya dengan cepat menghubungkan SaaS seperti okmeter.io. Bahkan jika penjualan hanya berlangsung sehari, Anda tidak akan dapat melihat banyak indikator di monitor seperti hari zulu berturut-turut.
Masih alat yang hebat adalah blackfire.io/newrelic.com untuk profil, pinba.org untuk menganalisis halaman "memperlambat" secara umum.
blackfire / newrelic akan membantu untuk menyelesaikan masalah pada halaman tertentu, pinba akan membantu Anda melihat halaman mana yang paling sering dimuat dan berjalan paling lama (ini semua di luar kotak dalam Bitrix, misalnya, tetapi cobalah untuk pergi ke panel adminnya dan bekerja di sana ketika server dan situs ini sudah sangat buruk).
Potong kelebihannya
Saya mematikan semua yang dapat dimatikan: modul yang tidak diperlukan secara kondisional saat ini, segala macam kecantikan, dll.
Penjualan adalah proses yang sederhana, diskon besar pada sejumlah produk. Pengunjung dengan mata menyala ingin memilih produk sampai terjual habis, memesan, mendapat diskon, melakukan pembayaran.
Berlangganan buletin, mendaftar di situs, polling tentang kualitas layanan - semua ini tidak tertarik pada klien sekarang, modul-modul ini dapat dinonaktifkan atau disederhanakan. Saya mematikan semua yang tanpanya situs dapat bekerja dengan tenang selama beberapa hari.
Contoh dari praktik: selama Black Friday, saya melakukan debug pada server yang sedang berjalan di bawah banyak lalu lintas, dan setelah 2 jam ternyata modul layanan pengiriman sangat lambat, yang mengakses layanan eksternal dan secara otomatis menghitung biaya pengiriman untuk setiap pesanan. Ketika lalu lintas tumbuh ratusan kali, layanan eksternal ini tidak lagi berfungsi.
Anda bisa duduk dan berpikir, dan apa yang bisa jatuh di situs Anda / di aplikasi seluler / dll?
Membiarkan jatuh
Saya sedang mempersiapkan fakta bahwa layanan apa pun akan jatuh. Dalam hal ini, Anda harus menunjukkan kepada pengunjung setidaknya sesuatu.
Misalnya, modul layanan pengiriman yang tidak berfungsi atau formulir pembayaran tidak boleh memblokir seluruh pesanan, pengguna dapat kembali besok dan menyelesaikan pesanannya.
Pada halaman kesalahan 50-an, saya menunjukkan surat atau nomor telepon departemen penjualan.
error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; }
Naikkan salinan situs
Jika dimungkinkan untuk memiliki salinan situs untuk menguji perubahan, ini sangat bagus. Saya tidak berbicara tentang sistem penempatan yang mapan :)
Omong-omong, layanan cloud yang modis akan memungkinkan Anda untuk dengan cepat dan mudah membuat salinan dari server pertempuran.
Studi kasus: satu situs, infrastruktur yang saya bantu pertahankan selama Black Friday, setelah dioptimalkan oleh pengembang (sebagian sedang dalam perjalanan), menambah sumber daya, mengoptimalkan perangkat lunak, mulai bekerja kurang lebih lumayan dengan lalu lintas yang padat, tetapi masih sangat banyak melambat saat melakukan pemesanan. Pengguna berpikir bahwa pesanan tidak dikirim, dan untuk berjaga-jaga, mereka menekan tombol checkout beberapa kali. Beberapa angka menekan tombol 300 kali! Tes stres hebat :) Ratusan kali lebih banyak pengunjung, dan sekitar 300 pesanan lebih banyak! :)
Layanan CDN
Anda dapat melakukannya tanpa CDN, tetapi jika server secara objektif tidak dapat mengatasi kembalinya jumlah statis yang diperlukan, itu perlu.
Anda dapat dengan cepat menghubungkan CDN untuk CMS populer seperti
1C-Bitrix ,
Wordpress . Tetapi Anda tidak dapat mengkonfigurasi CDN saat bepergian, Anda harus berhati-hati sebelumnya.
AntidDoS
Saya sangat merekomendasikan menghubungkan layanan AntiDDoS, dan pastikan terlebih dahulu (jika tidak, di bawah beban yang tiba-tiba, tanpa beradaptasi dengan lalu lintas normal, mereka mungkin mulai memblokir pengunjung yang sah).
Untuk jangka waktu tertentu ini dapat dilakukan secara gratis:
Tambahkan Kemampuan Server
Kami melihat kemungkinan penambahan sumber daya. Dimungkinkan untuk menambahkan sumber daya ke server utama, membuat simpul baru untuk memparalelkan kueri, simpul untuk mysql, dll. Jika bukan diri Anda sendiri, maka agen outsourcing yang dipekerjakan di samping akan berterima kasih banyak untuk itu.
Akan lebih mudah jika penyedia Anda memiliki kemampuan untuk meng-host server fisik dan cloud (Selectel.ru, Servers.com).
Fuh, ayo pergi
Yang paling berbahaya adalah menit pertama setelah buletin. Cache belum memanas, ada beberapa statistik, Anda masih belum tahu kemampuan sistem (jika Anda belum melakukan tes serius sebelumnya).
Beberapa konfigurasi
Caching di nginx
Kami akan membuat cache 500 MB selama 3 jam untuk semua halaman kecuali halaman pesanan.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=blackfriday_cache:180m max_size=500m inactive=7d; # blackfriday_cache, 180 proxy_cache_key "$request_method$scheme$host$request_uri"; proxy_cache_use_stale error timeout invalid_header http_500; map $uri $cookie_nocache { # , ; 1 - , 0 - "/order" "1"; "/bitrix" "1"; default "0"; } location / { .... proxy_hide_header "Set-Cookie"; # proxy_ignore_headers "X-Accel-Expires"; proxy_ignore_headers "Expires"; proxy_ignore_headers "Cache-Control"; proxy_ignore_headers "Set-Cookie"; add_header X-Cache $upstream_cache_status; ... proxy_no_cache $cookie_nocache; # , map; 1 - proxy_cache blackfriday_cache; # proxy_cache_valid 180m; # 180 proxy_cache_valid 404 1m; # 404 - 1 .... proxy_pass http://backend; # } location @backend { .... # }
Banyak bahan tambahan, tautan:
Saluran 100 mbit memungkinkan Anda memberikan 12 halaman dengan berat 1 MB per detik, ini adalah 43 ribu per jam; nginx mampu memberikan volume seperti itu bahkan pada server yang murah.
Kami mendistribusikan permintaan di beberapa node (situs harus siap bekerja dengan beberapa node web)
Melalui Round-Robin DNS
(hati-hati di sini, metode ini tidak lagi didukung dengan benar oleh banyak penyedia DNS)
$ dig lifehacker.ru +short 136.243.37.180 136.243.37.178
Melalui upstream nginx
$ cat nginx.conf upstream backend { server backend1.yoursite.com; server backend2.yoursite.com; } server { server_name yoursite.com; location / { proxy_pass http://backend; } } location @backend { .... # }
Melalui Cloudflare, Qrator, dll.
Mereka memiliki kemampuan untuk mengatur beberapa backend langsung dari panel, pembaruan konfigurasi biasanya instan.
Dengan tenang
Kebetulan tidak mungkin untuk memastikan pekerjaan yang sempurna, tetapi hal utama untuk bisnis adalah bahwa sistem pada dasarnya bekerja. Biarkan itu melambat, tetapi seharusnya memungkinkan pengguna untuk melakukan pemesanan, dan tidak terus-menerus menekan F5. "Menyedihkan, menghambat, membagi saraf semua orang", ribuan pelanggan menggunakannya pada saat yang sama, dan mereka membuat, membuat, membuat pesanan, dan masing-masing dari mereka bernilai. Saya melihat contoh di mana dalam satu hari toko membuat perputaran enam bulan, dan hasilnya sepadan dengan semua saraf.
Penjualan yang sukses untuk Anda :)