Як вытрымаць павышаныя нагрузкі на сістэму: расказваем пра маштабную падрыхтоўку да Чорнай Пятніцы.

Прывітанне, Хабр!

У 2017 годзе падчас Чорнай Пятніцы нагрузкі выраслі амаль у паўтара раза, і нашы серверы знаходзіліся на мяжы магчымасцей. За год колькасць кліентаў значна вырасла, і стала зразумела, што без уважлівай папярэдняй падрыхтоўкі платформа можа проста не вытрымаць нагрузак 2018 года.

Мэта паставілі самую амбіцыйную з магчымых: мы хацелі быць поўнасцю гатовымі да любых, нават самых магутных, усплёскаў актыўнасці і пачалі загадзя выводзіць новыя магутнасці на працягу года.

Наш CTO Андрэй Чыж (chizh_andrey) распавядае, як мы рыхтаваліся да Чорнай Пятніцы 2018, якія меры прынялі, каб пазбегнуць падзенняў, і, вядома, жа аб выніках такой дбайнай падрыхтоўкі.

Як вытрымаць павышаныя нагрузкі на сістэму: расказваем пра маштабную падрыхтоўку да Чорнай Пятніцы.

Сёння хачу расказаць аб падрыхтоўцы да Чорнай Пятніцы 2018. Чаму зараз, калі большасць буйных распродажаў ззаду? Мы пачалі рыхтавацца прыкладна за год да маштабных акцый, і метадам спроб і памылак знайшлі аптымальнае рашэнне. Рэкамендуемы і вам загадзя паклапаціцца аб гарачых сезонах і прадухіліць факапы, якія могуць усплыць у самы непадыходны момант.
Матэрыял будзе карысны ўсім, хто жадае выціснуць максімальны профіт з падобных акцый, т.я. тэхнічны бок пытання не саступае тут маркетынгавай.

Асаблівасці трафіку на вялікіх распродажах

Насуперак ходкаму меркаванню, чорная Пятніца - гэта не адзін дзень у годзе, а практычна цэлы тыдзень: першыя прапановы аб зніжках паступаюць за 7-8 дзён да распродажу. Трафік сайтаў пачынае плаўна расці ўвесь тыдзень, даходзіць да свайго піка ў пятніцу і даволі рэзка спадае ў суботу да рэгулярных паказчыкаў крамы.

Як вытрымаць павышаныя нагрузкі на сістэму: расказваем пра маштабную падрыхтоўку да Чорнай Пятніцы.

Гэта важна ўлічваць: інтэрнэт-крамы становяцца асабліва адчувальныя да любых "запаволенняў" у сістэме. Акрамя таго, наш кірунак email-рассыланняў таксама адчула значны прырост колькасці адпраўак.

Для нас стратэгічна важна прайсці Чорную Пятніцу без падзенняў, т.я. ад працы платформы залежыць найважнейшы функцыянал працы сайтаў і рассылак крам, а менавіта:

  • Трэкінг і выдача таварных рэкамендацый,
  • Выдача спадарожных матэрыялаў (напрыклад, выяваў афармлення блокаў рэкамендацый, такіх як стрэлкі, лагатыпы, абразкі і іншыя візуальныя элементы),
  • Выдача таварных малюнкаў патрэбнага памеру (для гэтых мэт у нас ёсць “ImageResizer” — падсістэма, якая спампоўвае выяву з сервера крамы, сціскае яе да патрэбнага памеру і праз серверы, якія кэшуюць, выдае выявы патрэбнага памеру для кожнага тавару ў кожным блоку рэкамендацый).

Фактычна ў перыяд Чорнай пятніцы 2019 г. нагрузка на сэрвіс вырасла на 40%, г.зн. колькасць падзей, якія адсочвае і апрацоўвае сістэма Retail Rocket на сайтах інтэрнэт-крам вырасла з 5 да 8 тысяч запытаў у секунду. За кошт таго, што мы рыхтаваліся да больш сур'ёзных нагрузак, такі ўсплёск мы перажылі лёгка.

Як вытрымаць павышаныя нагрузкі на сістэму: расказваем пра маштабную падрыхтоўку да Чорнай Пятніцы.

Агульная падрыхтоўка

Чорная Пятніца - гарачая пара для ўсяго рытэйла і для ecommerce у прыватнасці. Колькасць карыстальнікаў і іх актыўнасць у гэты час расце ў разы, таму мы як заўсёды грунтоўна рыхтаваліся да гэтай напружанай сітавіны. Дадамо сюды факт, што да нас падключана мноства інтэрнэт-крам не толькі ў Расіі, але і ў Еўропе, дзе ажыятаж бывае значна вышэй, і атрымаем узровень напалу страсцей больш моцнага за бразільскі серыял. Што трэба зрабіць, каб быць поўнасцю гатовымі да павышаных нагрузак?

Праца з серверамі

Для пачатку было неабходна высветліць, чаго менавіта нам бракуе для павелічэння магутнасці сервераў. Ужо са жніўня мы пачалі заказваць новыя серверы спецыяльна пад Чорную Пятніцу - усяго дадалі 10 дадатковых машын. Да лістапада яны ўжо былі поўнасцю ў баі.

У той жа час частка білдаў машын была пераўсталяваная для выкарыстання ў выглядзе Application сервераў. Мы адразу падрыхтавалі іх для выкарыстання розных функцый: і для выдачы рэкамендацый, і для сервісу ImageResizer, каб у залежнасці ад тыпу нагрузкі кожную з іх можна было выкарыстоўваць для адной з гэтых роляў. У штатным рэжыме ў Application і ImageResizer сервераў выразна пазначаныя функцыі: першыя займаюцца выдачай рэкамендацый, другія – пастаўляюць выявы для лістоў і рэкамендацыйных блокаў на сайце інтэрнэт-крам. У ходзе падрыхтоўкі да Чорнай Пятніцы вырашана зрабіць усё сервера падвойнага прызначэння, каб балансаваць трафік паміж імі ў залежнасці ад тыпу загрузкі.

Затым мы дадалі два вялікіх сервера для Кафкі (Apache Kafka) і атрымалі кластар з 5 магутных машын. Нажаль, усё мінула не так гладка, як жадалася бы: падчас сінхранізацыі дадзеных дзве новыя машыны занялі ўсю шырыню сеткавага канала, і прыйшлося экстрана разбірацца як правесці працэс дадання хутка і бяспечна для ўсёй інфраструктуры. Для вырашэння гэтага пытання нашым адміністратарам прыйшлося доблесна ахвяраваць выходнымі.

Праца з дадзенымі

Апроч сервераў, мы вырашылі аптымізаваць файлы для палягчэння нагрузкі і вялікім крокам для нас стаў пераклад статычных файлаў. Усе статычныя файлы, якія раней хасціліся на серверах, павялі на S3+Cloudfront. Даўно жадалі гэта зрабіць, паколькі нагрузка на сервер была блізкая да лімітавых значэнняў, і вось з'явілася выдатная нагода.

За тыдзень да Чорнай Пятніцы павялічылі час кэшавання карцінак да 3-х дзён, каб у выпадку падзення ImageResizer, раней закэшаваныя выявы былі атрыманы з cdn. Таксама гэта знізіла нагрузку на нашы серверы, паколькі чым даўжэй захоўваецца малюнак, тым радзей нам трэба марнаваць рэсурсы на рэсайз.

І апошняе, але не па важнасці: за 5 дзён да Чорнай Пятніцы быў аб'яўлены мараторый на дэплой любога новага функцыяналу, а таксама на любыя работы з інфраструктурай - уся ўвага накіравана на тое, каб справіцца з павышанымі нагрузкамі.

Планы рэагавання на складаныя сітуацыі

Якой бы якаснай падрыхтоўка ні была, факапы заўсёды магчымы. І мы распрацавалі 3 планы рэагавання на магчымыя крытычныя сітуацыі:

  • зніжэнне нагрузкі,
  • адключэнне некаторых сэрвісаў,
  • поўнае адключэнне сэрвісу.

План A: зніжэнне нагрузкі. Павінен быў быць задзейнічаны, калі з-за ўсплёску нагрузкі нашыя сэрвэры выйдуць за дапушчальныя таймінгі адказу. На гэты выпадак мы падрыхтавалі механізмы паступовага зніжэння нагрузкі за кошт пераключэння часткі трафіку на сервера Amazon, якія на ўсе запыты проста аддавалі б "200 OK" і давалі пусты адказ. Мы разумелі, што гэта дэградацыя якасці сервісу, але выбар паміж тым, што сервіс не працуе зусім ці не паказвае рэкамендацыі для прыкладна 10% трафіку, відавочны.

План B: адключэнне сэрвісаў. Разумеў частковую дэградацыю сэрвісу. Напрыклад, зніжэнне хуткасці разліку персанальных рэкамендацый дзеля разгрузкі некаторых баз дадзеных і каналаў сувязі. У штатным рэжыме рэкамендацыі разлічваюцца ў рэжыме real-time, ствараючы для кожнага наведвальніка сваю версію інтэрнэт-крамы, але ва ўмовах падвышаных нагрузак зніжэнне хуткасці дазваляе іншым core сэрвісам працягнуць працу.

План C: на выпадак армагедона. Калі адбудзецца поўная адмова сістэмы, мы падрыхтавалі план, які дазволіць бяспечна адключыць нас ад кліентаў. Пакупнікі крам проста перастануць бачыць рэкамендацыі, прадукцыйнасць інтэрнэт-крамы ніяк не пацерпіць. Для гэтага прыйшлося б абнуліць наш інтэграцыйны файл, каб новыя карыстачы перасталі ўзаемадзейнічаць з сэрвісам. Гэта значыць, мы адключылі б працу нашага галоўнага трэкінг кода, сэрвіс перастаў бы збіраць дадзеныя і разлічваць рэкамендацыі, а карыстач проста бачыў бы старонку без блокаў рэкамендацый. Для ўсіх тых, хто раней ужо атрымаў інтэграцыйны файл, мы прадугледзелі варыянт пераключэння DNS запісы на Амазон і заглушку 200 OK.

Вынікі

Мы зладзіліся са ўсёй нагрузкай нават без неабходнасці задзейнічаць дадатковыя білд машыны. І дзякуючы своечасовай падрыхтоўцы, нам не спатрэбіўся ніводны з распрацаваных планаў рэагавання. Але ўся праведзеная праца - бясцэнны вопыт, які дапаможа нам спраўляцца з самымі нечаканымі і вялізнымі наплывамі трафіку.
Як і ў 2017 годзе, нагрузка на сэрвіс вырасла на 40%, а колькасць карыстальнікаў у інтэрнэт-крамах за Чорную Пятніцу павялічылася на 60%. Усе цяжкасці і памылкі прыпалі на падрыхтоўчы перыяд, што выратавала нас і нашых кліентаў ад непрадбачаных сітуацый.

А як вы перажываеце Чорную Пятніцу? Як рыхтуецеся да крытычных нагрузак?

Крыніца: habr.com

Дадаць каментар