Ինչպես դիմակայել համակարգի վրա ավելացած բեռներին. մենք խոսում ենք «Սև ուրբաթ» լայնածավալ նախապատրաստությունների մասին

Հե՜յ Հաբր։

2017 թվականին «Սև ուրբաթ»-ի ժամանակ բեռնվածությունն ավելացավ գրեթե մեկուկես անգամ, և մեր սերվերները գտնվում էին իրենց սահմանաչափի վրա։ Տարվա ընթացքում հաճախորդների թիվը զգալիորեն աճել է, և պարզ դարձավ, որ առանց մանրակրկիտ նախնական նախապատրաստման հարթակը կարող է պարզապես չդիմանալ 2018 թվականի բեռներին։

Մենք դրեցինք հնարավոր ամենահավակնոտ նպատակը. մենք ցանկանում էինք լիովին պատրաստ լինել ցանկացած, նույնիսկ ամենահզոր, ակտիվության և սկսեցինք նախապես գործարկել նոր հզորություններ ամբողջ տարվա ընթացքում:

Մեր տնօրեն Անդրեյ Չիժը (chizh_andrey) պատմում է, թե ինչպես ենք պատրաստվել 2018 թվականի «Սև ուրբաթին», ինչ միջոցներ ենք ձեռնարկել՝ անկումից խուսափելու համար և, իհարկե, նման զգույշ պատրաստության արդյունքները։

Ինչպես դիմակայել համակարգի վրա ավելացած բեռներին. մենք խոսում ենք «Սև ուրբաթ» լայնածավալ նախապատրաստությունների մասին

Այսօր ես ուզում եմ խոսել «Սև ուրբաթ 2018»-ի նախապատրաստական ​​աշխատանքների մասին: Ինչո՞ւ հիմա, երբ խոշոր վաճառքների մեծ մասը մնացել է մեր հետևում: Մենք սկսել ենք նախապատրաստվել լայնածավալ միջոցառումներից մոտ մեկ տարի առաջ, և փորձի ու սխալի միջոցով գտել ենք օպտիմալ լուծումը։ Խորհուրդ ենք տալիս նախապես հոգ տանել շոգ եղանակների մասին և կանխել խարդախությունները, որոնք կարող են հայտնվել ամենաանպատեհ պահին:
Նյութը օգտակար կլինի բոլորին, ովքեր ցանկանում են առավելագույն շահույթ քամել նման բաժնետոմսերից, քանի որ Հարցի տեխնիկական կողմն այստեղ չի զիջում մարքեթինգային կողմին։

Խոշոր վաճառքների ժամանակ տրաֆիկի առանձնահատկությունները

Հակառակ տարածված կարծիքի, սև ուրբաթը ոչ միայն տարվա մեկ օր է, այլ գրեթե մեկ շաբաթ. առաջին զեղչային առաջարկները հասնում են վաճառքից 7-8 օր առաջ: Կայքի տրաֆիկը սկսում է սահուն աճել ամբողջ շաբաթվա ընթացքում, հասնում է իր գագաթնակետին ուրբաթ օրը և բավականին կտրուկ իջնում ​​է շաբաթ օրը՝ հասնելով խանութի սովորական մակարդակին:

Ինչպես դիմակայել համակարգի վրա ավելացած բեռներին. մենք խոսում ենք «Սև ուրբաթ» լայնածավալ նախապատրաստությունների մասին

Սա կարևոր է հաշվի առնել. առցանց խանութները հատկապես զգայուն են դառնում համակարգի ցանկացած «դանդաղեցման» նկատմամբ: Բացի այդ, մեր էլփոստի տեղեկագրի գիծը նույնպես զգալի աճ է գրանցել ներկայացումների քանակով:

Մեզ համար ռազմավարական նշանակություն ունի առանց վթարների անցնել «Սև ուրբաթը», քանի որ... Կայքերի և խանութների տեղեկագրերի ամենակարևոր գործառույթը կախված է հարթակի աշխատանքից, մասնավորապես.

  • Հետևել և տրամադրել արտադրանքի առաջարկություններ,
  • Հարակից նյութերի թողարկում (օրինակ՝ առաջարկությունների բլոկների նախագծման պատկերներ, ինչպիսիք են սլաքները, լոգոները, պատկերակները և այլ տեսողական տարրեր),
  • Պահանջվող չափի արտադրանքի պատկերների տրամադրում (այս նպատակների համար մենք ունենք «ImageResizer» - ենթահամակարգ, որը ներբեռնում է պատկերը խանութի սերվերից, սեղմում այն ​​պահանջվող չափի մեջ և քեշավորման սերվերների միջոցով արտադրում է պահանջվող չափի պատկերներ յուրաքանչյուր ապրանքի համար: յուրաքանչյուր առաջարկությունների բլոկ):

Փաստորեն, 2019 թվականի «սև ուրբաթ»-ի ընթացքում ծառայության բեռը ավելացել է 40%-ով, այսինքն. Միջոցառումների թիվը, որոնք Retail Rocket համակարգը հետևում և մշակում է առցանց խանութների կայքերում, աճել է վայրկյանում 5-ից մինչև 8 հազար հարցում: Շնորհիվ այն բանի, որ մենք պատրաստվում էինք ավելի լուրջ բեռների, մենք հեշտությամբ վերապրեցինք նման ալիքը։

Ինչպես դիմակայել համակարգի վրա ավելացած բեռներին. մենք խոսում ենք «Սև ուրբաթ» լայնածավալ նախապատրաստությունների մասին

Ընդհանուր պատրաստում

Սև ուրբաթը զբաղված ժամանակ է բոլոր մանրածախ առևտրի և հատկապես էլեկտրոնային առևտրի համար: Օգտատերերի թիվը և նրանց ակտիվությունն այս պահին զգալիորեն աճում է, ուստի մենք, ինչպես միշտ, մանրակրկիտ պատրաստվել ենք այս զբաղված ժամանակին։ Ավելացնենք այստեղ այն փաստը, որ մենք ունենք բազմաթիվ առցանց խանութներ միացված ոչ միայն Ռուսաստանում, այլև Եվրոպայում, որտեղ ոգևորությունը շատ ավելի բարձր է, և մենք ստանում ենք կրքի ավելի վատ մակարդակ, քան բրազիլական սերիաները: Ի՞նչ պետք է արվի, որպեսզի լիովին պատրաստ լինեք ավելացած բեռներին:

Աշխատանք սերվերների հետ

Նախ անհրաժեշտ էր պարզել, թե կոնկրետ ինչ է մեզ անհրաժեշտ սերվերի հզորությունը բարձրացնելու համար։ Արդեն օգոստոսին մենք սկսեցինք պատվիրել նոր սերվերներ հատուկ Սև ուրբաթ օրվա համար. ընդհանուր առմամբ մենք ավելացրինք 10 լրացուցիչ մեքենա: Նոյեմբերին նրանք լիովին մարտական ​​էին:

Միևնույն ժամանակ, շինարարական մեքենաներից մի քանիսը նորից տեղադրվեցին որպես Application սերվերներ օգտագործելու համար: Մենք անմիջապես պատրաստեցինք դրանք օգտագործելու տարբեր գործառույթներ՝ և՛ առաջարկություններ տալու, և՛ ImageResizer ծառայության համար, որպեսզի, կախված բեռի տեսակից, դրանցից յուրաքանչյուրը կարող է օգտագործվել այս դերերից որևէ մեկի համար: Նորմալ ռեժիմում Application և ImageResizer սերվերներն ունեն հստակ սահմանված գործառույթներ. առաջինը տալիս է առաջարկություններ, վերջիններս տրամադրում են նկարներ տառերի և առաջարկությունների բլոկների առցանց գնումների կայքերում: Սև ուրբաթին նախապատրաստվելիս որոշվեց ստեղծել բոլոր երկակի նշանակության սերվերները, որպեսզի հավասարակշռեն տրաֆիկը նրանց միջև՝ կախված ներբեռնման տեսակից:

Այնուհետև մենք ավելացրինք երկու մեծ սերվեր Kafka-ի համար (Apache Kafka) և ստացանք 5 հզոր մեքենաների կլաստեր: Ցավոք, ամեն ինչ այնքան հարթ չընթացավ, որքան մենք կցանկանայինք. տվյալների համաժամացման գործընթացում երկու նոր մեքենաներ զբաղեցրին ցանցի ալիքի ողջ լայնությունը, և մենք պետք է շտապ պարզեինք, թե ինչպես արագ և ապահով կերպով իրականացնել ավելացման գործընթացը: ամբողջ ենթակառուցվածքը։ Այս խնդիրը լուծելու համար մեր ադմինիստրատորները ստիպված էին խիզախորեն զոհաբերել իրենց հանգստյան օրերը:

Տվյալների հետ աշխատելը

Բացի սերվերներից, մենք որոշեցինք օպտիմիզացնել ֆայլերը՝ բեռը թեթևացնելու համար, և մեզ համար մեծ քայլ էր ստատիկ ֆայլերի թարգմանությունը։ Բոլոր ստատիկ ֆայլերը, որոնք նախկինում տեղակայված էին սերվերների վրա, տեղափոխվեցին S3 + Cloudfront: Մենք վաղուց էինք ցանկանում դա անել, քանի որ սերվերի ծանրաբեռնվածությունը մոտ էր սահմանային արժեքներին, և այժմ մեծ հնարավորություն է ստեղծվել։

Սև ուրբաթից մեկ շաբաթ առաջ մենք ավելացրինք պատկերների քեշավորման ժամանակը մինչև 3 օր, այնպես որ, եթե ImageResizer-ը խափանվի, նախկինում պահված պատկերները կվերցվեն cdn-ից: Այն նաև նվազեցրեց բեռը մեր սերվերների վրա, քանի որ որքան երկար է պահվում պատկերը, այնքան ավելի քիչ է անհրաժեշտ ռեսուրսներ ծախսել չափափոխելու վրա:

Եվ վերջին, բայց ոչ պակաս կարևորը. Սև ուրբաթից 5 օր առաջ մորատորիում է հայտարարվել ցանկացած նոր ֆունկցիոնալության, ինչպես նաև ենթակառուցվածքի հետ կապված ցանկացած աշխատանքի վրա. ամբողջ ուշադրությունն ուղղված է ավելացած բեռներին դիմակայելուն:

Դժվար իրավիճակներին արձագանքելու պլաններ

Անկախ նրանից, թե որքան որակյալ է պատրաստումը, ֆակապները միշտ էլ հնարավոր են։ Եվ մենք մշակել ենք հնարավոր կրիտիկական իրավիճակների արձագանքման 3 պլան.

  • բեռի նվազեցում,
  • որոշ ծառայությունների անջատում,
  • ծառայության ամբողջական անջատում.

Պլան Ա. Նվազեցնել բեռը: Պետք է ակտիվացվեր, եթե ծանրաբեռնվածության աճի պատճառով մեր սերվերները դուրս գան արձագանքման ընդունելի ժամկետներից: Այս դեպքում մենք պատրաստել ենք բեռը աստիճանաբար նվազեցնելու մեխանիզմներ՝ երթևեկի մի մասը տեղափոխելով Amazon սերվերներ, որոնք պարզապես կպատասխանեն բոլոր հարցումներին «200 OK» և դատարկ պատասխան կտան։ Մենք հասկացանք, որ սա ծառայության որակի անկում է, բայց ընտրությունը այն բանի միջև, որ ծառայությունն ընդհանրապես չի աշխատում կամ առաջարկներ չի ցույց տալիս տրաֆիկի մոտավորապես 10%-ի համար, ակնհայտ է։

Պլան Բ. անջատել ծառայությունները: Ծառայության ենթադրյալ մասնակի դեգրադացիա. Օրինակ՝ նվազեցնելով անձնական առաջարկությունների հաշվարկման արագությունը՝ որոշ տվյալների բազաների և կապի ուղիների բեռնաթափման նպատակով։ Նորմալ ռեժիմում առաջարկությունները հաշվարկվում են իրական ժամանակում՝ յուրաքանչյուր այցելուի համար ստեղծելով առցանց խանութի այլ տարբերակ, սակայն ավելացած բեռի պայմաններում արագության նվազեցումը թույլ է տալիս մյուս հիմնական ծառայություններին շարունակել աշխատել:

Պլան Գ՝ Արմագեդոնի դեպքում. Եթե ​​համակարգի ամբողջական խափանում է տեղի ունենում, մենք պատրաստել ենք ծրագիր, որը թույլ կտա մեզ ապահով կերպով անջատվել մեր հաճախորդներից: Խանութի գնորդները պարզապես կդադարեն տեսնել առաջարկություններ, առցանց խանութի աշխատանքը ոչ մի կերպ չի տուժի: Դա անելու համար մենք պետք է զրոյացնենք մեր ինտեգրացիոն ֆայլը, որպեսզի նոր օգտվողները դադարեն շփվել ծառայության հետ: Այսինքն՝ մենք կանջատեինք մեր հիմնական հետևելու կոդը, ծառայությունը կդադարեցներ տվյալների հավաքագրումը և առաջարկությունների հաշվարկը, իսկ օգտատերը պարզապես կտեսներ էջ՝ առանց առաջարկությունների բլոկների։ Բոլոր նրանց համար, ովքեր նախկինում ստացել են ինտեգրացիոն ֆայլ, մենք տրամադրել ենք DNS գրառումը Amazon-ին և 200 OK կոճակին անցնելու տարբերակը:

Արդյունքները

Մենք ամբողջ բեռը վարեցինք նույնիսկ առանց լրացուցիչ կառուցման մեքենաներ օգտագործելու անհրաժեշտության: Եվ նախապես պատրաստվածության շնորհիվ մենք մշակված արձագանքման պլաններից ոչ մեկի կարիքը չունեինք։ Բայց կատարված ամբողջ աշխատանքը անգնահատելի փորձ է, որը կօգնի մեզ հաղթահարել երթևեկության ամենաանսպասելի և հսկայական հոսքերը:
Ինչպես 2017 թվականին, ծառայության վրա բեռը ավելացել է 40%-ով, իսկ առցանց խանութներում օգտատերերի թիվը սև ուրբաթ օրը աճել է 60%-ով։ Բոլոր դժվարությունները և սխալները տեղի են ունեցել նախապատրաստական ​​շրջանում, որոնք մեզ և մեր հաճախորդներին փրկել են անկանխատեսելի իրավիճակներից։

Ինչպե՞ս եք դիմանում սև ուրբաթին: Ինչպե՞ս եք պատրաստվում կրիտիկական բեռներին:

Source: www.habr.com

Добавить комментарий