Račun za infrastrukturu rastao je mjesecima, tiho i uporno, kao i kod većine timova: nekoliko cloud servera "za svaki slučaj", managed baza većeg razreda "da imamo prostora", i gomila servisa uključenih davno, s razlogom kojeg se nitko više ne sjeća. Kad je mjesečni iznos prešao granicu boli, sjeo sam i proveo sustavno rezanje. Rezultat: račun manji za oko 90%, bez gubitka performansi — dapače, stranice su postale brže. Evo točno što sam napravio, korak po korak.

Korak 1: Izmjerio sam što stvarno koristimo (najotrežnjujući dan)

Prvo pravilo štednje: ne možete rezati ono što ne vidite. Tjedan dana metrika pokazao je da naši serveri prosječno koriste manje od 10% CPU-a i oko trećinu memorije. Plaćali smo kapacitet dimenzioniran za promet kakav smo imali dva puta godišnje, po pola sata. To je najčešća situacija u industriji — infrastruktura se dimenzionira prema strahu, ne prema podacima.

Korak 2: Statika na CDN, dinamika samo gdje mora biti

Najveći konceptualni pomak: shvatiti koliko malo naše aplikacije mora biti dinamično. Marketinške stranice, blog, dokumentacija — sve to sada je statički generirano i poslužuje se s CDN-a praktički besplatno. Server obrađuje samo ono što se stvarno mijenja po korisniku: prijave, API pozive, obradu podataka. Promet prema serverima pao je za red veličine, a vrijeme učitavanja se prepolovilo, jer gotov HTML s ruba mreže uvijek pobjeđuje generiranje na zahtjev.

Korak 3: S premium clouda na "dosadan" VPS

Za ono što je ostalo dinamično, usporedio sam cijene: instanca kod velikog cloud providera naspram ekvivalentnog (zapravo jačeg) VPS-a kod europskih ponuđača poput Hetznera — razlika je bila višestruka, u korist VPS-a. Veliki cloud plaćate za elastičnost, globalnu skalu i ekosustav servisa. Ako vam treba "dva pouzdana servera u Europi", plaćate avion da biste vozili do dućana. Preselili smo se; migracija je trajala vikend.

Korak 4: Baza — najskuplja navika

Managed baza velikog razreda bila je pojedinačno najskuplja stavka. Tri poteza: smanjenje na razred koji odgovara stvarnom opterećenju (vidi korak 1), uvođenje agresivnijeg cachinga pred bazom (Redis za sesije i najčešće upite), i čišćenje upita koji su bespotrebno mljeli podatke — dva najgora N+1 upita generirala su lavovski dio opterećenja. Baza sada radi na razredu tri stepenice nižem, mirno.

Korak 5: Inventura servisa-duhova

Prošao sam račun stavku po stavku i za svaku postavio pitanje: "što se pokvari ako ovo ugasimo?" Rezultati: monitoring servis koji dublira drugi monitoring servis, staging okruženje uključeno 24/7 za tim koji ga koristi dva sata tjedno (sada se pali po potrebi), backup na dvije lokacije od kojih jednu nitko nikad nije testirao, i par razvojnih instanci pokrenutih za davno završene eksperimente. Trećina računa bili su — duhovi.

Korak 6: Slike i promet

Bandwidth je tiha stavka koja raste s uspjehom. Prebacivanje slika na moderne formate (WebP/AVIF) uz automatsko skaliranje kroz CDN smanjilo je količinu prenesenih podataka za više od pola. Korisnici s mobitela zahvalni, račun također.

Rekapitulacija: odakle je došlo tih 90%

PotezPribližan doprinos uštedi
Statika + CDN umjesto server-renderiranja~25%
Prelazak na VPS~30%
Baza: manji razred + caching~20%
Gašenje servisa-duhova~15%
Optimizacija slika i prometa~10%

Upozorenja prije nego što ovo ponovite

  • Vaših 90% možda je tuđih 40%. Naš slučaj je bio ekstreman jer je infrastruktura bila ekstremno predimenzionirana. Ali gotovo svaki tim koji nikad nije radio ovu vježbu nađe barem trećinu.
  • Elastičnost ima cijenu i njen izostanak ima cijenu. VPS ne skalira jednim klikom. Za naš stabilan promet to je nebitno; za viralni B2C proizvod bilo bi presudno.
  • Sat inženjerskog rada nije besplatan. Migracija i optimizacija koštale su radne dane — povrat se računa u mjesecima, i kod nas se isplatio višestruko.

Zaključak

Najveća lekcija: račun za infrastrukturu nije prirodna pojava koja samo raste — to je zbroj odluka, od kojih većina više nema razlog postojanja. Jedan dan mjerenja, jedan vikend migracije i navika da se svaka stavka računa jednom godišnje pogleda u oči. To je cijela tajna iza dramatičnog naslova.