FinOps w praktyce: Zobacz, jak firma produkcyjna z sektora automotive zmniejszyła wydatki na AWS o 31%. Konkretne strategie i narzędzia.
Globalna firma produkcyjna z sektora automotive zmagała się z niekontrolowanym wzrostem wydatków na AWS. W ciągu 18 miesięcy rachunki wzrosły z 2,1 do 4,7 miliona dolarów miesięcznie. Zespół finansowy nie rozumiał, gdzie dokładnie trafiają te pieniądze. Ani jedna osoba nie mogła powiedzieć, który produkt, klient ani projekt generuje te koszty. Problem nie był brak narzędzi — był brak odpowiedzialności i widoczności.
Zespół FinOps wdrożony w ciągu 6 miesięcy osiągnął redukcję wydatków o 31,2% bez degradacji wydajności. Dokładnie tak: 1,47 miliona dolarów oszczędności miesięcznie bez żadnych zwolnień instancji produkcyjnych ani kompromisów SLA. To nie teoria — to konkretna implementacja z mierzalnymi wynikami.
Dlaczego koszty chmury wymykają się spod kontroli
Według raportu Flexera 2024 State of the Cloud, 82% organizacji identyfikuje zarządzanie kosztami chmury jako główne wyzwanie. Średnie marnotrawstwo w wydatkach chmurowych wynosi 32%. W przypadku firm produkcyjnych ten problem jest szczególnie ostry — złożone środowiska hybrydowe, sezonowość produkcji i legacy systems tworzą idealne warunki do nieefektywnej alokacji zasobów.
Pierwszy audit kosztów w opisywanej firmie ujawnił kilka krytycznych problemów. Ponad 40% instancji EC2 działało w trybie 24/7 mimo że środowiska deweloperskie były wykorzystywane tylko w godzinach pracy. Storage S3 zawierał 2,3 petabajta danych, z czego 890 terabajtów nie było dostępne przez ponad 180 dni. Natychmiastowe opłaty za transfer danych wynosiły 127 000 dolarów miesięcznie tylko dlatego, że logi i metryki były przesyłane przez NAT Gateway zamiast przez VPC Endpoint.
Główny inżynier platformy powiedział mi później: „Przez trzy lata kupowaliśmy instancje jak pizzę — zawsze za dużo, bo nie wiedzieliśmy ile naprawdę potrzebujemy. Nikt nie pytał o rzeczywiste wykorzystanie. Budget alarmy w AWS Cost Explorer były ustawione na 500% planu, więc nikogo nie alarmowały".
Strukturalne przyczyny marnotrawstwa
Marnotrawstwo chmurowe rzadko wynika z jednego błędu. To kumulacja decyzji podejmowanych z dobrymi intencjami w kontekście braku informacji. Zespoły programistów dostają limit kart kredytowych AWS i kupują co potrzebują. Każdy sprint dodaje nowe zasoby. Nikt nie usuwa zasobów testowych po zakończeniu projektu. Analityk FinOps w Gartnerze nazwał to zjawisko „cloud sprawl" — niekontrolowane rozrastanie się infrastruktury bez centralnego zarządzania.
W firmie produkcyjnej kluczowym problemem okazała się również sezonowość. Produkcja samochodów ma cykl Q4-Q1 związany z nowymi modelami. Zespoły IT, nie znając dokładnie harmonogramów produkcyjnych, utrzymywały maksymalną pojemność przez cały rok. W miesiącach letnich wykorzystanie compute wynosiło średnio 23%. Latem 2023 roku firma płaciła za 77% niepotrzebnej mocy obliczeniowej.
Trzeci problem: brak tagów kosztowych. Z 12 000 zasobów AWS tylko 34% miało przypisany tag CostCenter. Bez tego nie można nawet zacząć rozmowy o optymalizacji — nie ma danych, na podstawie których można podejmować decyzje.
Strategia FinOps: fazy i framework
Skuteczna transformacja FinOps wymaga podejścia trójfazowego. W opisywanym przypadku zespół realizował to w cyklu 6-miesięcznym, ale dla mniejszych organizacji fazy mogą się nakładać lub trwać dłużej. Kluczowa jest sekwencja — nie optymalizujesz kosztów, zanim nie masz widoczności. Nie budujesz widoczności, zanim nie masz danych.
Faza 1: Establish — podstawy widoczności
Pierwsze 8 tygodni poświęcono wyłącznie na tagging i agregację danych. Zespół wdrożył AWS Organizations z Account Vending Machine dla nowych kont. Wymuszono standard tagów przez Service Control Policies:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireCostTags",
"Effect": "Deny",
"Action": [
"ec2:RunInstances",
"rds:CreateDBInstance",
"lambda:CreateFunction"
],
"Resource": "*",
"Condition": {
"Null": {
"aws:RequestTag/CostCenter": "true",
"aws:RequestTag/Environment": "true",
"aws:RequestTag/Owner": "true"
}
}
}
]
}
Ta polityka wymuszała rezygnację z uruchomienia dowolnego zasobu bez trzech obowiązkowych tagów. Przez pierwsze dwa tygodnie zespół programistów protestował — potem zaakceptował jako standard.
Równolegle wdrożono AWS Cost Explorer z CUR (Cost and Usage Report) w rozdzielczości dziennej. Konfiguracja Cost Allocation Tags objęła 47 tagów biznesowych. Grafana Cloud została zintegrowana jako centralny dashboard do wizualizacji cost data obok metryk wydajnościowych — jedno narzędzie do obserwacji zarówno wydajności jak i kosztów.
Faza 2: Optimize — konkretne działania oszczędnościowe
Po 8 tygodniach zespół miał pełną widoczność. Teraz przyszedł czas na akcję. Wdrożono cztery główne ścieżki optymalizacji:
Rightsizing instancji**: AWS Cost Explorer generuje Rightsizing Recommendations na podstawie 14 dni historycznego wykorzystania CPU i memory. W tej firmie analityk FinOps przeszedł przez każdą rekomendację ręcznie — automatyczne stosowanie przy 12 000 zasobów byłoby zbyt ryzykowne. Wynik: 847 instancji zmniejszono lub zastąpiono instancjami z rodziny burstable (T3). Oszczędność: 312 000 dolarów miesięcznie.
Zastąpienie On-Demand Savings Plansami: Dla przewidywalnych obciążeń produkcyjnych wykupiono 3-letnie Savings Plans. Compute na poziomie 1,2 miliona dolarów rocznie zostało zabezpieczone z 40% rabatem względem cen on-demand. Łączna oszczędność na rocznym kontrakcie: 480 000 dolarów.
Optymalizacja storage: Przeniesienie 890 TB cold data z S3 Standard na S3 Glacier Instant Retrieval. Dostępność millisekundowa, koszt storage spadł z 0,023 USD/GB do 0,004 USD/GB. Dodatkowo wdrożono S3 Intelligent-Tiering dla danych o zmiennej częstotliwości dostępu.
Scheduled scaling dla non-production: Środowiska deweloperskie i testowe — 340 instancji — były wyłączane automatycznie między 20:00 a 6:00 oraz w weekendy. Lambda trigger na CloudWatch Events:
import boto3
import datetime
def lambda_handler(event, context):
ec2 = boto3.client('ec2')
today = datetime.datetime.now()
# Weekend shutdown
if today.weekday() >= 5:
filters = [{'Name': 'tag:Environment', 'Values': ['dev', 'test']}]
instances = ec2.describe_instances(Filters=filters)
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
if instance['State']['Name'] == 'running':
ec2.stop_instances(InstanceIds=[instance['InstanceId']])
# Night shutdown (weekdays 20:00-06:00)
elif today.hour >= 20 or today.hour < 6:
filters = [{'Name': 'tag:Environment', 'Values': ['dev', 'test']}]
instances = ec2.describe_instances(Filters=filters)
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
if instance['State']['Name'] == 'running':
ec2.stop_instances(InstanceIds=[instance['InstanceId']])
Ta jedna lambda funkcja wygenerowała oszczędność 89 000 dolarów miesięcznie.
Faza 3: Operate — utrzymanie i ewolucja
Ostatnia faza to kultura. Bez ciągłego monitorowania oszczędności znikną w ciągu kwartału. Wdrożono comiesięczny FinOps Review z CFO, VP Engineering i kierownikami produktów. Każdy dział dostał własny cost dashboard w Grafana Cloud i budżet z alerty przy 80% wykorzystania — nie przy 500% jak wcześniej.
Ustanowiono również rolę Cloud FinOps Engineer — dedicated resource odpowiedzialny za ciągłą optymalizację. Jego zadania: analizować rekomendacje AWS Cost Explorer, weryfikować Savings Plans coverage, raportować anomalie kosztowe.
Typowe błędy w implementacji FinOps
Przez ostatnie 15 lat obserwowałem dziesiątki nieudanych prób wdrożenia FinOps. Zidentyfikowałem pięć błędów, które pojawiają się konsekwentnie.
Błąd 1: Zakładanie, że tagging rozwiąże problem sam. Tagging to podstawa, nie rozwiązanie. Bez procesów egzekwowania tagów i regularnych auditów, tagi znikają w ciągu sześciu miesięcy. W jednej firmie po roku 67% zasobów miało puste tagi mimo początkowej zgodności na poziomie 98%. Egzekwowanie wymaga Service Control Policies lub AWS Config rules z automatycznymi akcjami.
Błąd 2: Optymalizacja przed widocznością. Redukcja instancji bez danych o wykorzystaniu prowadzi do degradacji wydajności. Zespoły muszą zrozumieć baseline'y obciążeń. W jednym przypadku firma zmniejszyła instancje produkcyjne na podstawie samych sugestii Cost Explorera — pierwszy spike ruchowy spowodował cascade failure i 4-godzinną awarię.
Błąd 3: Jeden FinOps practitioner na 500+ zasobów. FinOps to nie etat — to praktyka organizacyjna. Jeden specjalista na dużą infrastrukturę oznacza reaktywne zarządzanie. Potrzebujesz partycypacji zespołów produktowych. W skutecznych organizacjach FinOps jest odpowiedzialnością distributed: każdy zespół ma własny cost owner.
Błąd 4: Ignorowanie commitów na rzecz elastyczności. Savings Plans i Reserved Instances mają złą reputację wśród programistów obawiających się lock-in. Prawda jest taka, że 70-80% typowych workloadów jest przewidywalnych. Zbyt duża zależność od on-demand oznacza płacenie premium za luksus elastyczności, który nie jest wykorzystywany.
Błąd 5: Koncentrowanie się na storage zamiast compute. Storage to zwykle 10-15% rachunku. Compute to 60-70%. Firmy spędzają miesiące na archiwizacji danych, oszczędzając 50 000 dolarów miesięcznie, podczas gdy rightsizing compute mógłby przynieść 300 000 dolarów oszczędności w tygodniu.
Rekomendacje i kolejne kroki
Jeśli Twoja firma wydaje na chmurę więcej niż 500 000 dolarów miesięcznie, FinOps powinien być priorytetem strategicznym — nie inicjatywą IT. Zacznij od auditu, nie od narzędzi. Zainstaluj AWS Cost Explorer lub Azure Cost Management, poczekaj na akumulację danych przez 30 dni, a potem analizuj.
Use Savings Plans when your compute baseline is stable for at least 6 months. Zamiast próbować przewidzieć wszystkie obciążenia, commit na 60-70% obecnego wykorzystania i zostaw resztę jako on-demand buffer.
Use Grafana Cloud when you need unified observability combining cost metrics with performance data. Przy 15+ usługami monitorującymi koszty w izolacji, integracja w jednym dashboardzie eliminuje context switching i przyspiesza troubleshooting.
Use Kubernetes cost optimization when your EKS/AKS/GKE clusters show consistent underutilization. Kubecost lub AWS Compute Optimizer dla Kubernetes analizuje request vs actual allocation — zwykle ujawnia 40-60% marnotrawstwa w definicjach resource requests.
Use Reserved Instance/Savings Plan coverage alerts when you have multiple teams making independent compute purchases. Without alerts, teams will consume committed capacity without visibility, leaving money on the table.
Następny krok jest prosty: otwórz AWS Cost Explorer, przejdź do zakładki Cost Anomaly Detection, włącz alerting na poziomie 1000 dolarów. Jeśli w ciągu tygodnia dostaniesz alert — masz problem. Jeśli nie — Twój monitoring jest źle skonfigurowany.
FiOps to maraton, nie sprint. Pierwsze 30% oszczędności osiągniesz w ciągu 90 dni. Kolejne 20% wymaga zmian architektonicznych, które zajmą miesiące. Ale nawet te początkowe 30% wystarczy, żeby sfinansować cały program FinOps z marży oszczędności — i jeszcze zostawić CFO z uśmiechem na twarzy.
Weekly cloud insights — free
Practical guides on cloud costs, security and strategy. No spam, ever.
Comments