Optymalizacja wydatków na infrastrukturę
Krótkie podsumowanie
Efektywność finansowa infrastruktury opiera się na trzech aspektach:1. Przezroczysta wymierność (znaczniki, obciążenie zwrotne/zwrotne, $/jednostka wartości).
2. Dyscyplina inżynieryjna (prawowitość, automatyczna skala, prawidłowe klasy pamięci masowej/pamięci podręcznej/sieci).
3. Rozwiązania architektoniczne (gdzie „przepływ” bajtów i milisekund).
Celem jest obniżenie TCO przy zachowaniu SLO i szybkości rozwoju.
Business metrics and unit-economics
$/1000 RPS - koszt obsługi 1000 żądań na kluczowych trasach.
$/ms p95 to koszt zmniejszenia ogona opóźnienia o 1 ms (ważny dla konwersji).
$/player/month or $/deposit - for iGaming/fintech.
TCO = compute + storage + network egress + managed services + licencje + support.
Kapitalizacja długu technicznego: odnotować, ile kosztuje „niezapisane” opóźnienie/wyciek kłód.
- Jeśli API kosztuje 120 USD/h i daje 60k RPS w docelowym p95, to $/1000 RPS • 2 USD/h. Każdą optymalizację należy porównać z tą „ceną jednostkową”.
Inwentaryzacja i znakowanie
Tagi są wymagane: "," właściciel "," produkt "," usługa "," region "," cost-center "," poziom ".
Showback/Obciążenie zwrotne: Tygodniowy zespół/raporty serwisowe.
Kontrola zasobów „draw”: bez tagów - nie wdrażaj, nie przedłużaj.
sql
SELECT env, product, service,
SUM(cost_usd) AS cost_month,
SUM(rps) AS rps_month,
SUM(cost_usd)/NULLIF(SUM(rps)/1000,0) AS usd_per_1k_rps
FROM finops_daily
WHERE usage_date BETWEEN:from AND:to
GROUP BY 1,2,3;
Klasy praworządności i instancji
Profile procesora/pamięci: wziąć profile pod obciążeniem; zmniejszenie liczby wniosków/limitów do „punktu roboczego” procesora o 50-70%.
Rozmiar przykładu: N małe są często bardziej opłacalne niż M duże (lepsze pakowanie bin + CA).
Instancje ARM: tańsze z porównywalną wydajnością, jeśli stos jest kompatybilny.
Gorące/zimne baseny: Zachować niewielką rezerwę ciepła zamiast stałej „tłuszczu”.
Zniżki i wzorce konsumpcyjne
Zarezerwowane/plany oszczędności/zaangażowane wykorzystanie: Zarezerwuj zrównoważoną bazę (40-70% oszczędności).
Spot/Preemptible: dla zadań niekrytycznych/asynchronicznych, CI, analityki, pracowników pamięci podręcznej.
Strategia mieszania: baza - zarezerwowana, szczyty - na żądanie, tło - miejsce.
Automatyczne skalowanie i elastyczność
HPA/KEDA na sygnałach SLO (opóźnienie, opóźnienie kolejki, RPS), nie tylko na procesorze.
Cluster Autoscaler z ciepłymi basenami i obrazem pre-pull dla szybkich startów.
Skala-w dół z histerezy, aby nie „piły” klastry (anti-klaping).
Sieć i wyjście - spokojny pokarm budżetu
CDN/wielopoziomowa pamięć podręczna/tarcza pochodzenia zmniejszają opróżnienie pochodzenia.
Kompresja (Brotli/gzip), webp/avif, diff API (transfer tylko zmodyfikowane pola).
Połączenia grupowe do zewnętrznych interfejsów API, używać utrzymywanego/wznawianego budżetu.
Mniej rozmów wewnątrz DC: imprezy napędzane, masowanie, agregacja zdarzeń.
Przechowywanie i dane
Klasy przechowywania: gorący (NVMe), ciepły (gp2/gp3), zimny (S3/lodowiec/archiwum).
Zasady dotyczące cyklu życia: automatyczne tłumaczenie „starych” obiektów na tanie klasy.
Kompresja/partycja do DWH, TTL do tymczasowych tabel/migawek.
Unikaj zbędnej replikacji: rozsądne RF, ekonomiczne zasady migawek.
Buforowanie: Redis/Memcached dla hot-set zamiast „drogiej” bazy danych odczytuje.
Dzienniki, mierniki, szlaki - mądrze płacić
Dzienniki pobierania próbek (limit szybkości według poziomu/wzoru), dzienniki „strukturalne” zamiast rozmów.
Pobieranie próbek na podstawie ogona dla torów (zapisz p99 ogonów i błędów, wyciąć resztę agresywnie).
Metryki downsamplingowe: agregacja w bramach push-gate, przechowywanie wysokiej res tylko 7-14 dni.
Filtrowanie PII - zmniejsza zarówno ryzyko, jak i objętość.
Architektura i „koszt milisekundowy”
HTTP/2/3 + wznowienie: mniej uścisku dłoni → mniej procesora/wyjścia/opóźnienia.
Klucz pamięci podręcznej i TTL: wysoki wskaźnik trafienia - bezpośrednie pieniądze (mniej pochodzenia i DB).
gRPC/protobaf do serwisowania: mniej bajtów.
Partia/strumień dla zadań w tle; idempotencja → mniej rekolekcji.
Wybór bazy danych: nie przechowywać „wszystko w jednym” - tanie KV/bufory do częstych odczytów, analityki - w kolumnie DWH.
Schematy danych: krótkie pola/typy skompresowane, kontrola kardynalności indeksu.
DR, rezerwy i wielobranżowe
Cel biznesowy: RTO/RPO → koszt DR. Nie overpay dla aktywów-aktywów, jeśli istnieje wystarczająca ilość aktywów-zobowiązań.
Zachowaj zimne kopie zapasowe w taniej klasie, repliki różnicowe.
Pojedynczy pakiet PoR/regiony: każda strefa pociąga ≥ 60% szczytu → wytrzymać awarię sąsiada bez „złotej” redundancji.
Środowiska i CI/CD
Środowiska hibernacji/podglądu, auto-TTL.
CI biegacze na miejscu, pamięć podręczna artefaktu, ograniczenia współistnienia.
Dane testowe są kompaktowe, pokolenie on-the-fly, a nie przechowywanie gigabajtów.
Zarządzanie sprzedawcami i licencjami
Kwartalny przegląd wolumenów i typów cen.
Konkurencyjny dostawca wsparcia jest argumentem w negocjacjach.
Licencje (APM/security): Policz $ dla użytecznego sygnału, a nie dla „wszystkich dzienników świata”.
Procesy i zarządzanie
FinOps ceremonie: cotygodniowy raport zespołu, miesięczny przegląd kosztów (top 10 „przecieków”, pozycje akcji).
Bariery ochronne: kwoty projektu/przestrzeni kosmicznej, wpisy budżetowe, zakaz rozmieszczania niewykorzystanych zasobów.
Nienaganny po morzu na „incydenty cenowe” (wyciek kłód, uciekający autoskale).
IaC: wszystkie limity, klasy, TTL - w repozytorium, przegląd PR.
Lista kontrolna oszczędności
- Tagi/showback/obciążenie zwrotne są zawarte, nie ma zasobów „draw”.
- Prawowitość według profilu, ARM/inne typy oceniane.
- Zobowiązuje się zamknąć bazę, spot - background/analytics/CI.
- HPA/KEDA według mierników SLO, CA z ciepłymi basenami.
- CDN/cache wielopoziomowe, kompresja, klucz pamięci podręcznej bez hałasu.
- Sklepy: klasy, cykl życia, TTL, bufory na gorąco.
- Kłody/ścieżki: pobieranie próbek, filtry na podstawie ogona, filtry PII.
- DR by RTO/RPO, kopie zapasowe na zimno w taniej klasie.
- Środowiska z automatycznym TTL, CI na miejscu.
- Rytmy i bariery FinOps w IaC.
Częste błędy
„Optymalizacja bez metryk”: brak $/1000 RPS → nie można porównać opcji.
Odłączone/niewykorzystane zasoby wiszą na miesiące.
Przechowywanie „wszystkiego” w gorącej klasie, brak cyklu życia.
Dzienniki jako „czarna dziura”: 100% połknięcia, 0% użycia.
Automatyczna skala nad procesorem z wyłączeniem opóźnień/kolejek → nadpłata i regresja SLO.
Zbyt agresywny doktor bez biznesowego uzasadnienia.
Mikroservice „na pokaz” - wzrost ruchu międzywydziałowego i napowietrznego.
Mini playbooks
1) Szybki audyt konta (48 godzin)
1. Cięcie przez 10 najlepszych usług/region. 2) Dla każdego - $/1000 RPS, hit-ratio CDN, egress.
2. Zwiń klawisze TTL/pamięci podręcznej, wyłącz hałaśliwe dzienniki. 4) Włącz cykl życia na S3/facilities.
2) 25% redukcja wyjścia
1. Wielopoziomowy cache + tarcza, „stale-while-revalidate”. 2) Kompresuj obrazy do webp/avif.
2. Diff API i gzip/brotli na tekście. 4) Sprawdź powtarzające się żądania/przekłady.
3) Odcięcie kosztów DB
1. Top queries (p95/IO) → indeksy/butching. 2) Hot-set - Redis.
2. Archiwizacja starych danych (TTL), odczyt-repliki na tanim stosie.
4) Zakończenie „piły” skali
1. Zwiększenie stabilizacji/chłodzenia. 2) MinReplicas> 0 na szczycie.
2. Wstępne ogrzewanie połączeń/TLS. 4) Odciąć nadmiar przekładni.
Przykład „ekonomicznego” Nginx (kompresja, pamięć podręczna, SWR)
nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=EDGE:512m max_size=50g inactive=7d;
server {
listen 443 ssl http2 reuseport;
Compression brotli on; brotli_comp_level 5; gzip on;
Static: year, immutable location/assets/{
add_header Cache-Control "public, max-age=31536000, immutable" always;
try_files $uri =404;
}
Semi-dynamics: s-maxage + SWR location/catalog/{
proxy_cache EDGE;
add_header Cache-Control "public, s-maxage=600, max-age=120, stale-while-revalidate=900, stale-if-error=86400" always;
proxy_ignore_headers Set-Cookie;
proxy_pass https://origin_catalog;
}
}
iGaming/specyficzne dla fintechu
Szczyty (mecze/turnieje): podnieść 'minReplicas' z wyprzedzeniem i rozgrzać CDN/TLS, ale zachować punkt głowy - tylko na gorących utworów (katalogi, lobby, mecze), reszta - w trybie degradacji.
Płatności/PSP: pamięć podręczna katalogu (BIN, limity), idempotencja zmniejsza koszt zabrania, oddzielna pula wyjść dla dostawców whitelist.
Anty-oszustwa/boty: „szare” trasy i tanie wyzwania na krawędzi zamiast kosztownej głębokiej kontroli dla każdego żądania.
Żywa zawartość/dostawcy: pamięć podręczna na krawędzi + ograniczenie częstotliwości aktualizacji; Kontrakty CDN do przeglądu dla dużych wydarzeń.
Razem
Optymalizacja kosztów nie jest jednorazowym czyszczeniem, ale stałym procesem FinOps: zmierzyć wartość ($/unit), zautomatyzować opłacalne rozwiązania (cache/TTL/sampling), użyć rabatów i odpowiednich klas zasobów, zachować elastyczność pod SLO i nie komplikować architektury, gdzie nie płaci offu Zmniejszy to TCO przy zachowaniu szybkości produktu i stabilności platformy.