Kaspi Жұма және Қара Жұма: интернет-дүкенді х10 трафикке қалай дайындап, құлап қалмауға болады
Сәлем, хастлерлер, фаундерлер және қатал B2B-директорлар! Байланыста Шарафутдинов Р. Күнтізбеде тамыз айы, демек қазақстандық e-commerce үшін ең ыстық күндер жақын қалды. Kaspi Жұма, 11.11, Қара Жұма, Жаңа жылдық сатылымдар — бұл маркетологтар шампан ашатын, ал сисадминдер мен DevOps-инженерлер корвалол мен энергетиктерді көптеп сатып алатын уақыт.
Таныс көріністі елестетіп көріңізші: сіз таргетингтік жарнамаға миллиондаған теңге құйдыңыз, керемет ұсыныстар дайындадыңыз, трафик әкелдіңіз. Клиенттер сайтқа кіреді, тауарларды себетке қосады, "Тапсырыс беру" түймесін басады және... 502 Bad Gateway немесе 503 Service Unavailable деген жазуы бар ақ экранды көреді. Сайт "құлады". Колл-орталықтың телефондары ашулы клиенттердің қоңырауларынан жарылып жатыр, әлеуметтік желілерде ашулы пікірлер жазылуда, ал сіз дүрбелеңмен хостинг-провайдерге қоңырау шаласыз, ол: "Сізде CPU жүктемесінің шегінен асып кетті, қымбатырақ тариф сатып алыңыз" деп жауап береді.
Мұндай күндері әрбір тоқтап тұрған минут миллиондаған шығын әкеледі. Бірақ неге қазіргі кезде сайттар әлі де құлайды? Ең бастысы — заманауи бұлттық технологияларды, атап айтқанда Google Cloud Run-ды пайдалана отырып, бұл мәселені қалай біржола ұмытуға болады? Бұл лонгридте мен құлаулардың анатомиясын талдаймын және инфрақұрылымды х10 трафикке дайындау бойынша қадамдық нұсқаулық беремін.
Апаттың анатомиясы: неге "классикалық" серверлер өледі
Шындыққа тура қарайық. Көптеген қазақстандық интернет-дүкендер, тіпті ірілері де әлі күнге дейін ескірген архитектурада жұмыс істейді. Бұл локальді деректер орталығында жалға алынған виртуалды серверде (VPS) айналатын монолитті қосымша (мысалы, Битрикс, Laravel немесе Django-да) болуы мүмкін.
Ресурстардың жетіспеушілігі мәселесін әдетте қалай шешеді? Вертикальді масштабтау арқылы. Сайт баяулай бастады ма? Жедел жад қосайық! Жеткіліксіз бе? Қуаттырақ процессор қояйық! Бұл белгілі бір шекке дейін жұмыс істейді. Бірақ кез-келген, тіпті ең қуатты сервердің өзінде физикалық шегі бар. Kaspi Жұма басталған күні сізге 50 емес, 5000 адам бір уақытта келгенде, бірде-бір "семіз" сервер бір уақытта қосылулар мен дерекқорға сұраныстардың мұндай көлемін жалғыз өзі тарта алмайды.
Сонымен қатар, вертикальді масштабтау дегеніміз, сіз бұл үлкен қуаттылықтар үшін жыл бойы төлейсіз, дегенмен олар сізге жылына бірнеше күн ғана қажет болады. Бұл экономикалық тұрғыдан тиімсіз.
Инфрақұрылым эволюциясы: Горизонтальді масштабтау
Мәселенің шешімі горизонтальді масштабтауда жатыр. Бұл сіз бір серверді қуаттырақ етпейсіз, керісінше параллель жұмыс істейтін және жүктемені баланстаушы (Load Balancer) арқылы өзара бөлісетін көптеген кішкентай клон-серверлерді қосасыз.
Бірақ 50 серверден тұратын паркті қолмен басқару — бұл тозақ. Оларды баптау, кодты синхрондау, ешқайсысының құлап қалмауын қадағалау қажет. Және мұнда сахнаға контейнерлер (Docker) және оркестрация жүйелері (Kubernetes) шығады. Алайда, Kubernetes — бұл күрделі, қызмет көрсету қымбат және штатта білікті DevOps-инженерлерін қажет етеді, ал оларды Қазақстанда күндіз шаммен іздеп таба алмайсың.
Міне, біз өзіміздің "күміс астауымызға" — Google Cloud Run-ға келдік.
Инфрақұрылымдық шығындарды салыстыру ($ / айына)
Дәстүрлі тұрақты серверлер (VPS) мен Cloud Run (Serverless) арасындағы трафик ауытқуына байланысты шығындар айырмашылығы.
Google Cloud Run: Қатал шынайылыққа арналған Serverless-сиқыр
Cloud Run дегеніміз не? Бұл сіздің stateless-контейнерлеріңізді автоматты түрде масштабтайтын Google-дың толық басқарылатын (serverless) есептеу платформасы. Сіз жай ғана Google-ға өз кодыңызды (Docker-контейнерге қапталған) бересіз, ал қалғанын — серверлерді provisioning, желіні баптау, жүктемені баланстау және масштабтауды — Google өз мойнына алады.
Бұл Kaspi Жұма кезінде қалай жұмыс істейді:
- Қалыпты күн: Сайтта 10 адам. Cloud Run сіздің қосымшаңыздың 1 инстансын (немесе үнемдегіңіз келсе 0) қосулы ұстайды. Сіз тиын төлейсіз.
- Сатылымның басталуы (00:01): Сайтқа күрт 1000 адам кіреді. Cloud Run миллисекундтар ішінде (!!) барлық сұраныстарды өңдеу үшін қосымшаңыздың 10, 50, 100 жаңа инстансын автоматты түрде көтереді. Әрбір клиент жылдам жауап алады.
- Жүктеменің төмендеуі: Трафик кеткен кезде, Cloud Run артық инстанстарды автоматты түрде "өлтіреді". Сіз пайдаланылмаған қуаттылықтар үшін төлеуді тоқтатасыз.
Сіз тек кодыңыз сұраныстарды нақты өңдейтін миллисекундтар үшін ғана төлейсіз. Бұл маусымдылығы айқын немесе ең жоғары жүктемелері бар бизнес үшін тамаша модель.
Сатылым басталған сәттегі автомасштабтау динамикасы
Трафиктің күрт өсуіне байланысты белсенді Cloud Run инстанстарының (контейнерлердің) миллисекунд ішінде өзгеруі.
GCP-дегі ақауға төзімді E-commerce архитектурасы
Cloud Run 100% жұмыс істеуі үшін қосымшаңыз бұған дайын болуы керек. Битрикс-тегі монолитті алып, оны Cloud Run-ға тастай салуға болмайды. Архитектура cloud-native болуы тиіс. Міне, біз ОЗАТ-та өз клиенттеріміз үшін енгізетін идеалды сетап осылай көрінеді:
1. Frontend және Backend-ті бөлу
Сіздің фронтендіңіз (React, Vue, Angular) статикаға компиляцияланып, аса жылдам CDN-желілері арқылы таратылуы керек, мысалы, Google Cloud CDN немесе Firebase Hosting. Статика ешқашан трафик ағымынан "құламайды", ол жай ғана бүкіл әлем бойынша (және Орталық Азияда да) шекаралық серверлерде кэштеледі. Сіздің Cloud Run-ыңыз тек пайдалы жұмыспен — API-сұраныстарды (авторизация, себет, чекаут) өңдеумен ғана айналысатын болады.
2. Деректер базасы — Cloud SQL немесе Spanner
Деректер базасы масштабтау кезінде жиі ең тар жерге айналады. Cloud Run 1000 инстанс көтере алады, бірақ егер олардың бәрі бір уақытта бір әлсіз PostgreSQL базасына барса, ол жай ғана "жатып қалады". Шешім: Google-дың басқарылатын дерекқор сервистерін пайдалану.
Cloud SQL оқу репликаларын (Read Replicas) оңай баптауға мүмкіндік береді. E-commerce-тегі сұраныстардың 90%-ы — бұл оқу (каталогты, тауар карточкасын қарау). Cloud Run бұл сұраныстарды репликаларға жіберіп, тек жазбалармен (тапсырысты рәсімдеу) айналысатын негізгі мастер-базаны жеңілдетеді.
3. Memorystore (Redis) көмегімен кэштеу
Деректер базасын одан әрі жеңілдету үшін біз Google Cloud Memorystore (басқарылатын Redis) енгіземіз. Ауыр сұраныстардың нәтижелері, тауарлар тізімі, категориялар — мұның бәрі жедел жадта кэштеледі. Клиент каталогты ашқанда, деректер дерекқорға мүлдем әсер етпестен миллисекундтар ішінде Redis-тен беріледі.
4. Асинхронды өңдеу (Cloud Pub/Sub + Cloud Tasks)
Сатылым кезінде чекаут найзағайдай тез жұмыс істеуі керек. Клиент "Сатып алу" түймесін басты — тапсырыс лезде қабылдануы керек. Бірақ егер тапсырыстан кейін чекпен email, растаумен SMS жіберу, лоялдылық бағдарламасынан бонустарды шегеру және 1С-ке деректерді жіберу қажет болса ше? Егер мұны синхронды түрде жасасаңыз, клиент сәттілік беті жүктелгенше 10 секунд күтеді.
Біз осы асинхронды тапсырмалардың барлығын кезектерге (Cloud Pub/Sub) шығарамыз. Тапсырысты рәсімдеу кезінде біз жай ғана кезекке "№123 тапсырыс жасалды" деген хабарлама тастаймыз және клиентке сәттілік бетін лезде көрсетеміз. Ал фонда жеке микросервистер (воркерлер) негізгі сайтты тежемей, хаттар жіберіп, 1С-ке қағып, бұл кезекті тыныш қана ажыратады.
х10 трафикке дайындалудың қадамдық жоспары
Егер сіз дүкеніңіздің келесі сатылымда аман қалғанын қаласаңыз, міне, дәл қазір (басталуға бір апта қалғанда емес) не істеу керек:
- Кодқа аудит және профильдеу жүргізіңіз: Баяу SQL-сұраныстарды, цикл ішіндегі циклдарды, ауыр суреттерді табыңыз.
- Docker енгізіңіз: Қосымшаңызды контейнерге қаптаңыз. Оны stateless етіңіз — ол локальді дискіде файлдар немесе сессияларды сақтамауы керек (Cloud Storage және Redis пайдаланыңыз). Контейнерді жергілікті тексеру үшін
docker run -p 8080:8080 my-appкомандасын қолданыңыз. - CI/CD баптаңыз: Жаңа кодты шығару процесі Cloud Build немесе GitLab CI арқылы автоматтандырылуы тиіс. Автоматты деплой үшін
gcloud builds submitқұралын пайдаланыңыз. FTP арқылы қолмен көшіру мүлдем болмауы керек! - БҚ миграциялаңыз: Деректерді басқарылатын базаға (Cloud SQL) көшіріңіз, бэкаптар мен репликацияны баптаңыз.
- Жүктемелік тестілеу: Бұл ең маңызды қадам. Теорияға сенбеңіз. JMeter немесе k6 сияқты құралдардың көмегімен стресс-тестті іске қосыңыз. Мысалы,
k6 run script.jsсценарийі арқылы жүктемені симуляциялаңыз. Ең жоғары трафиктен х10 жасанды трафик жасап, қай жерде үзілетінін көріңіз. Тар жерді түзетіп, тестті қайталаңыз.
ОЗАТ-тың нақты кейсі: Суға батқандарды құтқару
Өткен жылы Қара Жұмаға тура үш апта қалғанда бізге ірі шетелдік интернет-дүкен жүгінді. Олардың ағымдағы провайдері оларға қосымша қуаттылық бөле алмайтынын ескертті, ал өткен жылы олар үлкен пайдасын жоғалтып, 8 сағат бойы жатқан болатын.
Біз командамызды шұғыл жұмылдырдық. Біз олардың монолитті API-ын микросервистерге (Node.js) қайта жаздық, React-тегі фронтендке қаптадық және бәрін Google Cloud-қа көшірдік. API-ді Cloud Run-да, фронтендті — Firebase Hosting-те, базаны — Cloud SQL (PostgreSQL)-де өрістеттік.
X күні трафик олардың тарихи максимумынан 15 есе асып түсті! Cloud Run ең жоғары шегінде 180 инстансты автоматты түрде көтерді. Деректер базасы Redis және оқу репликаларының арқасында өзін тамаша сезінді, CPU load 40%-дан аспады. Сайт ұшты, беттер 0.5 секундта жүктелді. Сатылымның бүкіл кезеңінде бірде-бір құлау болған жоқ. Ал инфрақұрылымның шоты олардың жыл бойы "темір" жалдағаны үшін төлегенінен 30%-ға төмен болды, өйткені сатылымнан кейін біз жай ғана масштабтауды минимумға дейін жинап қойдық.
Дұрыс архитектура мен бұлттық технологиялардың күші осында.
ОЗАТ-тан тегін экспресс-аудит
Сайтыңыздың ең жауапты сәтте құлауын күтпеңіз. Инфрақұрылымды сатылым маусымына алдын ала дайындаңыз! Өтінім қалдырыңыз, және біздің Senior-инженерлер сіздің архитектураңызға тегін экспресс-талдау жасайды. Біз тар мойындарды табамыз, ең жоғары жүктемелерге дайындығын тексереміз және Cloud Run-ға миграциялау бойынша қадамдық жоспар береміз.
Аудитке өтінім қалдыруKaspi Жұма және Қара Жұма — бұл бизнес үшін инфарктқа себеп емес, мереке. Ең қажет кезде ұятқа қалдыратын локальді серверлік тіреулерді тамақтандыруды доғарыңыз. Бұлтқа өтіңіз, Cloud Run-ды пайдаланыңыз және жүйеңіздің өзі сізге ақша тауып жатқанда тыныш ұйықтаңыз.
Байланыста болған ОЗАТ командасы. Сіздерге жоғары конверсиялар мен 100% аптайм тілейміз!

Рустам Шарафутдинов
Google Cloud архитектурасы саласындағы сарапшы және 15 жылдан астам тәжірибесі бар Senior Full-Stack әзірлеушісі. Ақауға төзімді архитектураларға, жоғары жүктемелі жобаларды оңтайландыруға және AI (Vertex AI) интеграциясына маманданған.