Architektura kosztów
1) Zasady i role
Koszt jako funkcja. Cena jest częścią UX/produktów i rozwiązań architektonicznych.
Wspólna odpowiedzialność. Inżynierowie, platforma/DevEx, finanse, produkt - pojedyncza pętla zwrotna.
Jedno źródło prawdy. Katalog tagów/etykiet, słownik kosztów i źródła danych.
Oglądaj → Optymalizacja → Zarządzaj pętlą. Wbudowane deski rozdzielcze, automatyczne bramy i zasady.
Role: Value Architect, FinOps Analyst, Product Owner, Platform Team.
2) Model wartości danych
Ekonomia jednostki:- Dla API: '$/1000 requests', '$/millisecond CPU', '$/GB egress'.
- Dla danych: '$/GB-month of storage', '$/request to the database', '$/million messages'.
- Dla użytkownika: „CAC”, „ARPU/ARPPU”, „Margines brutto”, „LTV: CAC”.
- Dla strumienia: '$/transaction', '$/deposit', '$/test run'.
cost_record {
ts, provider, account, region, service, usage_qty, usage_unit,
list_price, net_price, discounts,
tags: { env, team, product, feature, tenant, cost_center, pii, tier },
resource_id, allocation_keys: {req_id?, tenant_id?, dataset?}
}
Złote znaczniki (wymagane): „z”, „zespół”, „produkt”, „funkcja”, „cost _ center”, „właściciel”, „pii”, „poziom (gorący/ciepły/zimny)”, „region”.
3) Przypisanie: obciążenie zwrotne/zwrotne
Showback: przejrzyste raporty na temat zespołów/funkcji bez ładowania transferów wewnętrznych.
Obciążenie zwrotne: dystrybucja według zasad: koszty bezpośrednie dla → właściciela; udostępnione zasoby - według klawiszy: RPS, CPU sekund, GB godzin, objętość zdarzeń.
cluster_cost = sum(provider_cost where resource in "k8s-node:")
weights = { service: cpu_seconds(service)/total_cpu_seconds }
for service in services:
charge[service] = direct_cost(service) + cluster_cost weights[service]
4) Polityka jako kodeks
Zasady budżetowe: limity według wartości „w/w/w”; automatyczne ostrzeganie/rozmieszczanie bloku przy przewidywanym nadmiarze.
Wymagania dotyczące etykietowania: zasoby bez obowiązkowych znaczników - odmowa w kontrolerze dopuszczenia.
Ograniczenia profilu: zakaz dużych maszyn w „dev”, TTL w zakresie zasobów efemerycznych, minimalne rezerwacje.
yaml policy: require-tags-and-limits deny_if_missing_tags: [team, product, env, cost_center, owner]
constraints:
env==dev:
max_instance_type: "c6i. large"
ttl_hours: 72
5) Obliczenia: Modele redukcji kosztów
Poprawny rozmiar (rightsizing): automatyczne dopasowywanie vCPU/RAM w oparciu o p95/p99, sezonowość i zagłówek.
Automatyczne skalowanie: docelowe (CPU/RPS/lag), funkcje krokowe; ochrona przed thrashem przez histerezę.
Wybór modelu ceny: na żądanie vs spot/preemptible, Reserved Instances/Savings Plans; mieszanina dla krytycznych i tła.
Rurociągi wsadowe: okna „taniego” obciążenia, kompresji partii, kolejek priorytetowych.
Żądania buforowania i koalescencji: ograniczenie odczytów z drogich źródeł.
Optymalizacja krawędzi/sieci: HTTP/2/3, utrzymać się przy życiu, kompresja, CDN.
if rps > target1. 2 for 3m: replicas += ceil(rps/target); cool_down 5m if rps < target0. 6 for 10m: replicas = max(min_replicas, replicas-1)
6) Przechowywanie i dane: gorące/ciepłe/zimne
Łzawienie: gorące dane (natychmiastowy dostęp), ciepłe (rzadkie żądania), zimne/archiwum.
Formaty: kolumna (Parkiet/ORC) do analizy, kompresji i podziału według daty/klucza.
TTL/ILM: ustaw politykę życia: „hot 7d → ciepłe 90d → cold 365d → usuń”.
Warstwa pamięci podręcznej: Redis/Memcached z żądaniem koalescingu, brak ochrony przed burzą.
Kwoty i budżety na wnioski: przewidywalne limity kosztownych przyłączeń/skanów.
yaml dataset: events_main lifecycle:
- phase: hot; duration: 7d; storage: nvme
- phase: warm; duration: 90d; storage: ssd; compress: zstd
- phase: cold; duration: 365d; storage: object; glacier: true
- phase: purge; duration: 0d
7) Sieć i wyjście
Zminimalizuj ruch międzyregionalny: kopie lokalne i agregacja krawędzi.
CDN i bufory: tarcza pochodzenia, rozsądny TTL, walidacja/niepełnosprawność.
Protokoły: binarne (gRPC) do rozmów, kompresja tylko tam, gdzie jest to korzystne.
Dedup wydarzenia i filtrowanie na producenta: „nie nosić śmieci”.
8) Obserwowalność i koszt SRE
Karty kosztów telemetrii: '$/log-GB', '$/metric-series', '$/trace'.
Pobieranie próbek i agregacja: pobieranie próbek na podstawie ogona, mierniki redukcyjne, zachowywanie znaczenia (wskaźniki SLO - wyższy priorytet).
Deadup kłód i „log-sanitation”: zakaz PD, redukcja pól fantomowych, ograniczenia wielkości zdarzenia.
9) CI/CD i środowiska testowe
Efemeral stoi z auto-TTL, środowisko „przez PR”.
Perf-dym w PR: krótkie okresy wczesnej wyceny „kosztu dochodzenia”.
Pamięć podręczna/artefakty: ponowne użycie pojemnika, kompilacje.
Bramy: budowanie/wdrażanie jest odrzucane, jeżeli „cena opóźnienia „/RPS uległa pogorszeniu w stosunku do wartości wyjściowej> X%.
10) Prognozy, budżety i anomalie
Prognozy: sezonowość/trend, wydarzenia (kampanie, wydania), funkcja → korelacja wartości.
Budżety według poziomu: zespół/produkt/funkcja/najemca; eskalacja przy 80/90/100%.
Anomalie: nagłe szczyty według usług/regionu/konta; automatyczne „bisect” i rolki flagi.
if forecast(month_end_cost) > budget0. 9 and variance ↑:
alert(team_owner)
suggest: rightsizing + RI/SP coverage + ILM tighten
11) Zamówienia i Handel
RI/Plans Savings/Committed Use: Pokrycie stabilnej podstawy; monitorować zasięg i „niewykorzystane” wartości procentowe.
Spot/Preemptible: zadania tła i tolerancyjny przepływ pracy; zaznaczenie punktu kontrolnego i szybkie ponowne uruchomienie.
Licencje i SaaS: matryca ROI, alternatywny benchmarking, okresowy „przegląd fitness sprzedawcy”.
12) Wielofunkcyjny i rozliczeniowy
Podział według najemcy: logiczne/fizyczne rozdzielenie, limity i kwoty.
Ograniczenia świadomości najemcy/ratowniki: zapobiec „hałaśliwemu sąsiadowi”.
Modele użytkowania: rozliczanie według zdarzeń, RPS, woluminy danych; przejrzyste wskaźniki dla klientów.
13) Bezpieczeństwo i zgodność jako czynnik kosztów
Krypta i przechowywanie: FPE/klucze - koszty KMS/HSM; Optymalizacja częstotliwości operacji.
kopie przepisów: oddzielne zatrzymania „prawne” od zatrzymań operacyjnych; archiwum jest tańsze niż „wieczne ciepłe” przechowywanie.
Minimalizacja danych: mniej danych - mniej rachunków i ryzyka.
14) Inżynieria anty-wzorców (drogie!)
Czat API bez partii i buforowania.
Nieograniczone kolejki i nieograniczony paralelizm - wzrost opóźnień i liczenia.
Zero TTL i gorące klucze bez koalesingu.
Deski rozdzielcze z milionami liczb serii.
Zasoby bez znaczników → „szare” wydatki bez właściciela.
Brak ILM/TTL → wzrost magazynowania na zawsze.
15) Narzędzia i artefakty (sprzedawca neutralny)
Katalog znaczników (schemat + linter w CI).
Ekstraktor kosztów (wykorzystanie agregacji/rozliczenie, normalizacja w jednym formacie).
Ekonomika desek rozdzielczych (API-cost, dataset-cost, najemca-koszt).
Automatyczne edycje (rightsizer, RI/SP-recommendation, ILM-enforcer).
Polityka kosztów (wstęp/OPA/Kyverno) i czerwone linie budżetowe.
16) Mini przepisy kulinarne
Formuła „Cena żądania” (HTTP)
request_cost = (cpu_ms $/cpu_ms) +
(mem_mb_s $/mb_s) +
(egress_mb $/mb) +
(db_calls $/call) +
(cache_ops $/op miss_penalty)
Szybki audyt serwisowy
Top 3 drogie punkty końcowe o $/1000 req.
Hit/miss pamięci podręcznej i kluczy burzowych.
Niewykorzystane listy zasobów.
Retencja ILM i danych.
Zakres RI/SP (%).
Polityka retry ekonomicznej
retry = min(3, floor(budget_ms / (base_timeout_ms 1. 5^attempt)))
jitter = uniform(0. 5..1. 5)
17) Lista kontrolna architekta wartości
1. Zdefiniowane mierniki jednostkowe ('$/req', '$/GB-month', '$/txn') i właściciele?
2. Egzekwowane zasady? Czy niewykorzystane zasoby są zablokowane?
3. Wdrożono raporty o obciążeniu zwrotnym/zwrotnym oraz raporty dotyczące produktu/funkcji?
4. Autoskalowa i prawowita konfiguracja, zdefiniowana?
5. Tonowane dane (gorące/ciepłe/zimne), stosowane ILM/TTL?
6. Odpływ i przepływy międzyregionalne zminimalizowane? CDN/bufory włączone?
7. Obserwowalność zoptymalizowana (próbkowanie, retencja, obniżenie samplingu)?
8. Czy bramy regresji CI/CD i kontrole polityki są aktywne?
9. Czy prognozy/budżety/analiza anomalii są zautomatyzowane?
10. RI/SP/Spot mix pokrywa obciążenia bazowe?
11. Czy istnieją kwoty, limity i przejrzyste wskaźniki użytkowania dla wielu najemców?
12. FinOps runbook i miesięczny plan przeglądu kosztów udokumentowane?
Wniosek
Architektura wartości nie jest „oszczędnością za wszelką cenę”, ale zarządzaniem wartością: ile każda milisekunda kosztuje i ile przychodów generuje. Poprzez wbudowanie kosztów w architekturę, procesy i narzędzia (tagi, polityki, bramy, deski rozdzielcze, ILM, autoskale), otrzymasz platformę, na której decyzje są podejmowane na podstawie metryki i ekonomii, a nie intuicji. To przyspiesza produkt, zmniejsza ryzyko i sprawia, że biznes jest przewidywalnie opłacalny.