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%
| Potez | Približ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.




