Treceți la conținut
Companie europeanăFondată în 2014Construit și administrat în EuropaPlăți securizate de Plățile cu cardul se procesează prin Stripe. Datele cardului dumneavoastră nu ajung niciodată pe serverele noastre.
GRADAX

Cum construiești infrastructură cloud scalabilă pentru afaceri în creștere

Cum am proiectat platforma noastră cloud pentru a face față vârfurilor de trafic de 10x.

Pe scurt

  • Provocarea. Când am început să oferim găzduire administrată și servicii cloud la GRADAX, majoritatea clienților noștri rulau sarcini previzibile.
  • Decizii de arhitectură. Am evaluat mai multe abordări înainte de a ne decide asupra stivei actuale.
  • Strategia de auto-scalare. Auto-scalarea pare simplă în teorie: când cererea crește, adaugi capacitate; când scade, o reduci. În practică, momentul și pragurile contează enorm.
  • Echilibrarea sarcinii. Echilibrarea încărcării la GRADAX funcționează pe două niveluri.
  • Optimizarea costurilor. Infrastructura cloud poate deveni costisitoare rapid, mai ales când rulați auto-scalare în mai multe regiuni.

Provocarea

Când am început să oferim găzduire administrată și servicii cloud la GRADAX, majoritatea clienților noștri rulau sarcini previzibile. Site-ul unui restaurant local primea trafic constant, poate un mic vârf în weekend. Site-ul de portofoliu al unui contabil abia mișca resursele serverului. Am dimensionat conservator și a funcționat. Dar pe măsură ce am integrat branduri de e-commerce, startup-uri SaaS și publicații media, tiparele de trafic au devenit extrem de imprevizibile.

Unul dintre clienții noștri, un marketplace românesc de modă, a organizat o vânzare flash care a generat de 14 ori traficul lor normal în mai puțin de nouăzeci de secunde. Gazda lor anterioară a cedat. Au venit la noi a doua zi cerând o garanție că nu se va mai întâmpla niciodată. Acea singură conversație ne-a forțat să regândim întreaga noastră filozofie de infrastructură. Nu mai puteam proiecta pentru medii, trebuia să proiectăm pentru extreme.

Provocarea principală avea trei aspecte: să gestionăm vârfurile bruște de trafic fără intervenție manuală, să menținem costuri rezonabile în perioadele liniștite și să păstrăm timpi de răspuns sub 200ms pentru audiențele europene și globale. Rezolvarea fiecăreia în izolare este simplă. Rezolvarea tuturor trei simultan a necesitat o arhitectură fundamental diferită.

Decizii de arhitectură

Am evaluat mai multe abordări înainte de a ne decide asupra stivei actuale. O arhitectură complet serverless era tentantă, dar introducea latențe de pornire la rece care încălcau obiectivele noastre de performanță, în special pentru aplicațiile Next.js randate pe server pe care se bazează clienții noștri. O configurație tradițională bazată pe VM ne oferea control, dar ne lipsea elasticitatea de care aveam nevoie. Am ajuns la un model hibrid: o bază de resurse de calcul dedicate susținută de pool-uri de servere cloud la cerere care pot porni în mai puțin de patru secunde.

Planul nostru de control rulează pe Kubernetes, orchestrând sarcinile pe mai multe zone de disponibilitate din fiecare regiune de centru de date. Aplicația fiecărui client este containerizată cu o imagine de runtime standardizată care include agentul nostru de monitorizare, forwarder-ul de loguri și endpoint-ul de verificare a stării. Această uniformitate face posibilă scalarea automată, fiecare container este interschimbabil, astfel încât orchestratorul poate adăuga sau elimina instanțe fără a se preocupa de particularitățile specifice mediului.

Pentru stratul de date, am adoptat o strategie de stocare pe niveluri. Datele fierbinți stau pe SSD-uri NVMe cu replicare pe două noduri. Datele calde trec pe SSD-uri standard după șapte zile. Datele reci se arhivează în object storage după treizeci de zile. Doar acest lucru ne-a redus costurile de stocare cu 40% fără niciun impact perceptibil asupra performanței clienților.

Un dashboard de analytics pe un monitor
Cum am proiectat platforma noastră cloud pentru a face față vârfurilor de trafic de 10x. O analiză aprofundată a auto-scalării, echilibrării încărcării și optimizării costurilor.

Strategia de auto-scalare

Auto-scalarea pare simplă în teorie: când cererea crește, adaugi capacitate; când scade, o reduci. În practică, momentul și pragurile contează enorm. Dacă scalezi prea târziu, utilizatorii se lovesc de erori. Dacă scalezi prea devreme, arzi bani pe resurse inactive. Am petrecut trei luni ajustând politicile noastre de scalare înainte de a fi suficient de încrezători să le rulăm în producție fără supraveghere umană.

Sistemul nostru folosește un model de scalare predictivă suprapus peste declanșatori reactivi. Stratul predictiv analizează tiparele istorice de trafic, ziua săptămânii, ora din zi, tendințele sezoniere și evenimentele cunoscute precum lansările de produse sau campaniile de marketing pe care clienții le programează prin dashboard-ul nostru. Pre-provisionează capacitate cu cincisprezece minute înainte de cererea anticipată. Stratul reactiv urmărește metrici în timp real: utilizarea CPU, presiunea pe memorie, adâncimea cozii de cereri și latența P95. Dacă orice metrică depășește pragul, containere noi pornesc în câteva secunde.

Am construit și un mecanism personalizat de cooldown. După ce un vârf de trafic scade, nu demolăm imediat capacitatea suplimentară. În schimb, o menținem pentru o fereastră configurabilă (implicit: zece minute), deoarece vârfurile de trafic vin adesea în valuri. Aceasta previne churn-ul costisitor al pornirii și opririi repetate a containerelor în timpul evenimentelor susținute de trafic ridicat, precum Black Friday sau momentele virale pe rețelele sociale.

Echilibrarea sarcinii

Echilibrarea încărcării la GRADAX funcționează pe două niveluri. Nivelul exterior este o rețea globală anycast care direcționează utilizatorii către cel mai apropiat centru de date în funcție de latență, nu doar de geografie. Un utilizator din München ar putea fi direcționat către nodul nostru din Frankfurt sau către nodul din Amsterdam, în funcție de condițiile rețelei în timp real. Această decizie este reevaluată la fiecare șaizeci de secunde folosind sonde active de sănătate trimise din fiecare locație edge.

Stratul interior distribuie traficul între containerele dintr-un centru de date. Am renunțat devreme la simplul round-robin pentru că nu ține cont de starea containerului sau de încărcarea curentă. Balancerul nostru folosește un algoritm ponderat cu cele mai puține conexiuni, care ia în calcul numărul curent de cereri al fiecărui container, utilizarea CPU și rata recentă de erori. Containerele care se confruntă cu probleme primesc mai puține cereri, oferindu-le timp să își revină fără a fi scoase complet din rotație.

Am implementat și connection draining pentru opriri grațioase. Când auto-scaler-ul decide să elimine un container, mai întâi oprește trimiterea de noi conexiuni către acesta, apoi așteaptă până la treizeci de secunde pentru finalizarea cererilor existente. Astfel am eliminat erorile 502 care ne afectau iterațiile anterioare în timpul evenimentelor de scale-down.

Optimizarea costurilor

Infrastructura cloud poate deveni costisitoare rapid, mai ales când rulați auto-scalare în mai multe regiuni. Am adoptat o abordare disciplinată a gestionării costurilor încă din prima zi, tratând cheltuielile cu infrastructura ca pe o metrică de produs la fel de importantă ca uptime-ul sau latența. Fiecare decizie de arhitectură trece printr-o analiză a impactului asupra costurilor înainte de a ajunge în producție.

Cele mai mari economii au venit din dimensionarea corectă. Am construit un instrument de analiză care eșantionează utilizarea resurselor containerelor pe ferestre de paisprezece zile și recomandă alocări optime de CPU și memorie. Majoritatea clienților erau supra-dimensionați cu 30-50% conform estimărilor noastre inițiale. După dimensionarea corectă, am redus costurile de bază pentru compute cu 35% la nivelul întregii flote. Am negociat, de asemenea, acorduri de capacitate rezervată cu furnizorii noștri pentru volumul de bază, blocând tarife cu 45% sub prețurile on-demand.

Pentru clienții care doresc eficiență maximă a costurilor, oferim un nivel „burstable” care rulează pe infrastructură partajată în orele normale și scalează la resurse dedicate doar în perioadele de vârf. Acest nivel costă cu 60% mai puțin decât oferta noastră standard și este ideal pentru afacerile cu perioade previzibile de trafic redus, cum ar fi produsele SaaS B2B care nu înregistrează aproape nicio utilizare în afara orelor de program.

Monitorizare și observabilitate

Nu poți gestiona ceea ce nu poți măsura, iar într-un sistem distribuit cu scalare automată, vizibilitatea este totul. Am construit stiva noastră de observabilitate în jurul a trei piloni: metrici, loguri și urme. Fiecare container emite metrici structurate la intervale de cinci secunde care acoperă CPU, memorie, I/O pe disc, debit de rețea, număr de cereri, rata de erori și percentilele de latență a răspunsului. Acestea ajung într-o bază de date de serii temporale care păstrează date de înaltă rezoluție timp de șapte zile și date subeșantionate timp de treisprezece luni.

Trasarea distribuită a fost partea care a necesitat cel mai mult timp pentru a fi corectată, dar a oferit cea mai mare valoare. Fiecare cerere primită primește un ID de trasare care o urmărește prin load balancer, containerul aplicației, stratul de cache și baza de date. Când un client raportează încărcări lente ale paginilor, putem accesa trasarea exactă și vedem precis unde s-a consumat timpul. În nouă din zece cazuri, blocajul este o interogare de bază de date neoptimizată sau o cheie de cache lipsă, nu infrastructura.

Sistemul nostru de alertare folosește niveluri de severitate pe trepte, corelate cu impactul asupra afacerii, nu doar cu praguri tehnice. Combinat cu monitorizarea securității site-ului, un singur container care rulează la temperatură ridicată este informativ. O rată de eroare susținută peste 1% în flota unui client este un avertisment. Orice scădere a disponibilității sub 99,9% într-o fereastră de cinci minute alertează imediat inginerul de gardă. Această abordare a redus zgomotul alertelor cu 70% comparativ cu sistemul nostru inițial bazat pe praguri.

Rezultate

După optsprezece luni de rulare a acestei arhitecturi în producție, cifrele vorbesc de la sine. Am menținut o disponibilitate de 99,97% pentru toate sarcinile clienților, inclusiv în timpul a trei evenimente majore de trafic care au depășit fiecare de 50 de ori încărcarea de bază. Platforma a gestionat peste 2,8 miliarde de cereri doar în ultimul trimestru, cu un timp global de răspuns P95 de 142 de milisecunde. Niciun client nu a experimentat întreruperi din cauza eșecurilor de scalare.

Din perspectiva costurilor, clienții noștri economisesc colectiv aproximativ 40% față de configurațiile echivalente pe principalii furnizori de cloud public. Sistemul de scalare automată a prevenit anul trecut o cheltuială inutilă de aproximativ 180.000 € pentru resurse de calcul, prin reducerea capacității în afara orelor de vârf în loc să ruleze la capacitate maximă 24/7. Pentru clientul nostru din domeniul modei, cel a cărui vânzare fulger a declanșat întreaga poveste, factura lunară pentru infrastructură a scăzut cu 52% după migrarea pe platforma noastră, deși gestionează un trafic de 3 ori mai mare decât înainte.

Îmbunătățirile operaționale au fost la fel de semnificative. Timpul mediu de detectare a problemelor de performanță a scăzut de la 12 minute la sub 90 de secunde. Timpul mediu de rezolvare a scăzut de la 45 de minute la 8 minute în medie. Echipa noastră de infrastructură, care anterior petrecea 60% din timp pe intervenții reactive, petrece acum 80% din timp pe îmbunătățiri proactive și dezvoltarea de funcționalități noi.

Privind înainte

Nu ne-am terminat. Următoarea fază a foii noastre de parcurs pentru infrastructura cloud se concentrează pe trei domenii: edge computing, planificarea capacității bazată pe AI și programarea conștientă de carbon. Testăm în prezent noduri de edge compute în douăsprezece orașe suplimentare, care ar permite sarcinilor sensibile la latență, precum optimizarea imaginilor și răspunsurile API, să ruleze mai aproape de utilizatorii finali. Benchmark-urile preliminare arată o reducere de 40% a latenței P99 pentru utilizatorii aflați la mai mult de 1.000 de kilometri de cel mai apropiat centru de date al nostru.

Pe partea de AI, antrenăm un model de prognoză a capacității pe doi ani de date istorice din toate sarcinile clienților. Scopul este să prezicem tiparele de trafic cu 24 de ore înainte, cu suficientă încredere pentru a pre-aloca capacitate înainte de vârfuri, eliminând chiar și scurta creștere de latență care apare în timpul evenimentelor reactive de scalare. Rezultatele inițiale sunt promițătoare, modelul atingând 89% acuratețe la predicțiile traficului de vârf din ziua următoare.

În final, explorăm programarea conștientă de carbon care ar muta sarcinile neurgente precum backup-urile, procesarea în lot și pre-randarea în momentele în care rețeaua electrică locală are cea mai mare proporție de energie regenerabilă. Acest lucru se aliniază cu angajamentul nostru mai larg pentru infrastructură sustenabilă și le oferă clienților noștri conștienți de mediu o metrică tangibilă pe care o pot menționa. Dacă doriți să aflați cum aceste îmbunătățiri pot beneficia afacerea dumneavoastră, contactați echipa noastră. Ne așteptăm să lansăm toate cele trei capabilități înainte de sfârșitul anului 2026.

Discutați cu oamenii care vor face lucrarea.

Fără account manageri și fără predări. Persoana de la primul apel rămâne în proiect.