Cloud Computing · FINOPS

Ekonomia chmury: jak optymalizować koszty infrastruktury IT

Zespół SysOps Zdalny Admin·18 grudnia 2025·5 min czytania

Optymalizacja kosztów chmury sprowadza się głównie do trzech rzeczy: eliminacji marnotrawstwa (nieużywanych zasobów), właściwego doboru rozmiaru zasobów (right-sizing) i wyboru odpowiedniego modelu zakupowego (on-demand vs. rezerwacje vs. spot). W praktyce te trzy kroki często obniżają rachunek o 10–30% bez żadnych zmian w aplikacji.

Dlaczego chmura może wyjść drożej niż serwery on-prem, skoro miała „skalować się sama”?

Bo chmura jest jak taksówka z włączonym taksometrem — działa świetnie, dopóki wiesz, dokąd jedziesz i kto płaci. Koszty rosną, gdy:

  • zasoby działają 24/7, choć są potrzebne tylko 8/5,
  • instancje są przewymiarowane „na wszelki wypadek”,
  • storage rośnie bez polityk retencji,
  • płacisz za transfer danych (egress) i ruch między strefami,
  • masz zdublowane narzędzia do monitoringu i logowania,
  • nikt nie jest właścicielem kosztów, więc wszystko „toczy się samo”.

Najczęściej problem nie jest techniczny, tylko organizacyjny: brak odpowiedzialności, brak zasad i brak widoczności.

Czym jest FinOps i dlaczego bez niego optymalizacja kosztów to jednorazowa akcja?

FinOps to praktyka współpracy IT, finansów i biznesu, która dba o to, żeby koszty chmury były:

  • mierzone i przypisane do właścicieli,
  • kontrolowane na bieżąco (a nie po fakcie),
  • optymalizowane w stałym cyklu, a nie „zrywami”.

W firmach, w których wdrażam ten model, różnica jest prosta: wcześniej koszty to „koszt chmury”, później — „koszt produktu, usługi lub zespołu”. I dopiero wtedy da się nimi zarządzać.

Od czego zacząć, żeby w tydzień znaleźć największe oszczędności?

Jeśli chcesz szybkich efektów, zacznij od 5 najczęstszych źródeł marnotrawstwa:

  1. Bezczynne zasoby
    Stare dyski, snapshoty, adresy IP, load balancery, środowiska testowe, których nikt już nie używa.
  2. Przewymiarowane instancje
    CPU na poziomie 5–15%, RAM na 20% przez większość dnia.
  3. Środowiska dev i test działające w nocy i w weekendy
    To klasyczny „cichy wyciek”.
  4. Logi i metryki bez limitów
    Nadmierna retencja, zbyt szczegółowe logowanie, zdublowana telemetria.
  5. Transfer danych i architektura sieci
    Ruch między strefami i regionami, a zwłaszcza egress do internetu lub do innego dostawcy.

W praktyce te pięć obszarów daje najszybsze i najmniej inwazyjne cięcia.

Jak zbudować widoczność kosztów, jeśli dziś widzisz tylko jedną fakturę „za chmurę”?

Zaczynasz od prostego modelu alokacji kosztów.

Tagowanie i własność

Wprowadź minimalny zestaw tagów/etykiet, bez fajerwerków:

  • owner (osoba lub zespół),
  • service lub product,
  • env (prod, stage, dev),
  • cost_center (jeśli go masz).

Bez tego nie da się rozmawiać o tym, „co optymalizujemy”, bo nikt nie wie, „czyje to jest”.

Budżety i alerty

Ustaw budżety dla:

  • środowiska,
  • produktu,
  • zespołu.

Najważniejsze są alerty „wczesnego ostrzegania”, a nie tylko „przekroczyliśmy”.

Raport tygodniowy zamiast miesięcznego

W chmurze miesiąc to wieczność. Tygodniowy rytm pozwala wyłapać odchylenia, zanim urosną.

Które decyzje architektoniczne najbardziej wpływają na koszty?

Najprościej: płacisz za to, co działa, co przechowujesz i co przesyłasz.

Moc obliczeniowa

  • autoskalowanie zamiast stałej liczby instancji,
  • dopasowanie typów instancji do profilu obciążenia (CPU vs. RAM),
  • harmonogramy wyłączania dla środowisk non-prod.

Storage

  • klasy storage dopasowane do sposobu użycia (gorące vs. archiwalne),
  • polityki cyklu życia, retencja, sprzątanie śmieci,
  • kontrola nad snapshotami i kopiami zapasowymi.

Sieć

  • minimalizacja ruchu między strefami i regionami,
  • cache i CDN tam, gdzie ma to sens,
  • trzymanie danych i mocy obliczeniowej blisko siebie.

Z mojego doświadczenia „najdroższe chmury” to często te, w których architekturę zbudowano jak on-prem — tylko na fakturze widać to szybciej.

Jak dopasować rozmiar zasobów (right-sizing), nie psując wydajności?

Right-sizing robisz metodycznie:

  1. Zbierz metryki obciążenia (CPU, RAM, I/O, sieć) z ostatnich 14–30 dni.
  2. Używaj percentyli, a nie średnich (np. P95).
  3. Zmniejszaj zasoby stopniowo i obserwuj wpływ na opóźnienia i błędy.
  4. Dodaj zabezpieczenia, czyli wartości minimalne i maksymalne w autoskalowaniu.
  5. Powtarzaj to cyklicznie, bo aplikacje zmieniają się w czasie.

Najczęstszy błąd to „cięcie na ślepo”. Najlepszy wzorzec to „zmniejsz, obserwuj, zautomatyzuj”.

Kiedy opłacają się rezerwacje, Savings Plans i kontrakty, a kiedy lepiej zostać przy on-demand?

Praktyczna zasada:

  • On-demand: gdy obciążenie jest zmienne, krótkotrwałe lub eksperymentalne.
  • Rezerwacje lub savings plans: gdy masz stabilną bazę produkcyjną.
  • Spot/preemptible: gdy workload toleruje przerwanie (batch, renderowanie, ETL, część CI).

W praktyce robię to tak:

  • najpierw tnę marnotrawstwo,
  • dopiero potem „zamrażam” koszty rezerwacjami, bo inaczej rezerwujesz niewłaściwy rozmiar.

Jak obniżyć koszty Kubernetesa i kontenerów, które „miały być tańsze”?

Kubernetes bardzo łatwo robi się drogi, bo ukrywa realne zużycie.

Najskuteczniejsze działania:

  • ustaw requesty i limity dla CPU/RAM — bez nich przepalasz node’y,
  • używaj autoskalowania (HPA i cluster autoscaler) z rozsądnymi progami,
  • wyłączaj środowiska non-prod na noc,
  • kontroluj koszt logów klastra, bo potrafi przewyższyć koszt mocy obliczeniowej,
  • dziel klastry, a przynajmniej namespace’y, według produktów i środowisk, żeby było jasne, kto „przepala” budżet.

Z mojego doświadczenia pierwsze oszczędności w K8s wynikają z uporządkowania requestów i przycięcia logów — strojenie node pooli przychodzi dopiero później.

Jak obniżyć koszty logowania, metryk i observability bez utraty bezpieczeństwa?

Zasada jest taka: loguj mądrzej, nie więcej.

  • skróć retencję tam, gdzie nie jest wymagana,
  • rozdziel poziomy logowania dla prod i non-prod,
  • odfiltruj szum (health checki, spam debugowy),
  • trzymaj pełne logi krócej, a agregaty i alerty dłużej,
  • ujednolić narzędzia, bo zdublowana telemetria kosztuje podwójnie.

W praktyce koszty observability potrafią wymknąć się spod kontroli szybciej niż same serwery.

Jakie KPI warto ustawić, żeby optymalizacja była ciągła, a nie jednorazowa?

Polecam 8 KPI, które są proste i naprawdę działają:

  • dzienny i tygodniowy koszt na produkt,
  • koszt na środowisko (prod vs. non-prod),
  • udział kosztów „nieprzypisanych” (nieotagowanych),
  • wykorzystanie zasobów (CPU/RAM) vs. rozmiar, za który płacisz,
  • koszt logowania i metryk na usługę,
  • koszt transferu danych,
  • koszt na transakcję lub na użytkownika (jeśli potrafisz go policzyć),
  • liczba „zasobów zombie” znalezionych i usuniętych w miesiącu.

KPI muszą prowadzić do decyzji. Jeśli nikt na ich podstawie nie działa, to tylko wykresy.

Jak wygląda sensowny 90-dniowy plan optymalizacji kosztów chmury?

Dni 1–14: szybkie oszczędności

  • tagowanie i własność,
  • usunięcie nieużywanych zasobów,
  • harmonogramy wyłączania non-prod,
  • podstawowe alerty budżetowe.

Dni 15–45: stabilizacja i automatyzacja

  • right-sizing i autoskalowanie,
  • polityki retencji storage i logów,
  • wstępny model alokacji kosztów na produkt.

Dni 46–90: optymalizacja zakupów i dojrzałość FinOps

  • rezerwacje dla stałej bazy,
  • instancje spot dla batchy i CI,
  • stały rytm raportowania i przeglądów kosztów,
  • katalog standardów „jak uruchamiamy usługi”, żeby chaos nie wrócił.

Jakie błędy najczęściej niszczą oszczędności?

  1. Rezerwacje zrobione przed usunięciem marnotrawstwa.
  2. Brak właściciela kosztów — „wszyscy i nikt”.
  3. Cięcie kosztów bez monitorowania wydajności i SLO.
  4. Oszczędności tylko w mocy obliczeniowej, przy ignorowaniu kosztów logów i transferu.
  5. Brak automatyzacji, przez co koszt wraca w ciągu 2 miesięcy.

Chmura nagradza dyscyplinę. Bez niej zawsze będzie droższa, niezależnie od tego, jak nowoczesna jest.