Ենթակառուցվածքի ծախսերի օպտիմիզացումը
Live ռեզյումե
Ենթակառուցվածքի ֆինանսական արդյունավետությունը ապավինում է երեք բաների
1. Թափանցիկ չափումը (tegi, showback/chargeback, դոլար/արժեքի միավորը)։
2. Ինժեներական կարգապահություն (rightsizing, auto skayl, ճիշտ պահեստավորման դասարաններ/ցանցեր)։
3. Ճարտարապետական լուծումները (որտեղ «դուրս են գալիս» բայթերը և միլիսեքսունդները)։
Նպատակը 'նվազեցնել TCO-ն, պահպանելով SLO-ը և զարգացման արագությունը։
Բիզնես մետրերը և unit-economics-ը
/ 1000 RPS դոլարը հիմնական երթուղիներում 1000 հարցումների մշակման արժեքն է։
/ ms p95-ը 1 մսի վրա հետաձգման պոչի նվազեցման արժեքն է (կարևոր է փոխադարձության համար)։
/ խաղացող/ամիս կամ դոլար/դեպոզիտ - iGaming/fintech-ի համար։
TCO = comporation + storage + network egress + eded ծառայություններ + լիցենզիա + աջակցություն։
Տեխնիկական մեթոդի կապիտալիզացիան 'արձանագրել, թե որքան արժե «անպաշտպան» լապտենտությունը/լոբի արտահոսքը։
Օրինակ
Եթե API-ն արժե 120/ժամ դոլար և տալիս է 60k RPS նպատակային p95, ապա $/1000 RPS 242 դոլար։ Ցանկացած օպտիմիզացիա պետք է համեմատվի այս «միավորի արժեքի» հետ։
Բուլգարիզացիա և տեգիացիա
Թեգին պարտադիր է '«env», «owner», «ww.t», «ww.ru», «region», «cost-2019», «tier»։
Showback/Chargeback: Շաբաթական հաշվետվություններ թիմերի/ծառայությունների մասին։
«Ոչ» ռեսուրսների վերահսկումը 'առանց թեգերի, մենք չենք պտտվում, չենք երկարացնում։
SQL ուրվագիծ CPH զեկույցի համար (գաղափար)
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;
Rightsizing եւ instans դասարաններ
CPU/Memory-ն ավելացնում է 'վերցրեք ավելցուկը բեռի տակ։ նվազեցրեք հարցումները/սահմանները մինչև «աշխատանքային կետ» CPU 50-70 տոկոսը։
Ինստանսների չափը 'հաճախ ավելի շահավետ է, քան N-ը M-ի փոխարեն մեծ (ավելի լավ է bin-packing + CA)։
ARM instans: ավելի էժան է համեմատական արտադրողականության դեպքում, եթե համադրենք։
Տաք/սառը փամփուշտներ 'պահեք մի փոքրիկ warm-պահուստ մշտական «ճարպի» փոխարեն։
Զեղչեր և սպառման մոդելներ
Reserved/Savings Plans/Committed Use: Ամրագրեք կայուն հիմքը (տնտեսության 40-70 տոկոսը)։
Spot/Systemptible: ոչ ռիթմիկ/ասինխրոն առաջադրանքների համար, CI, վերլուծաբաններ, քաշ-գողեր։
Mix-ռազմավարություն 'հիմքը reserved, piki-on-demand, ֆոն-spot։
HPA/KEDA-ն SLO ազդանշաններով (latency, queue lag, RPS), ոչ միայն CPU-ով։
Cluster Autoscaler-ը warm pooice-ով և image pre-pox-ի արագ սկսելու համար։
Scale-down-ը հիստերեզիայի հետ, որպեսզի չփորձեն կլաստերներ (anti-flapping)։
Ցանցը և egress - բյուջեի հանգիստ «հրշեջը»
CDN/tiered-cache/origin-shield նվազեցնում են egress origin-ից։
Սեղմումը (Brotli/gzip), webp/avif, 71-API (փոխանցել միայն փոփոխված դաշտերը)։
Անցեք արտաքին API-ի զանգերը, օգտագործեք keepalive/retry-budget։
Ավելի քիչ chats DC-ի ներսում 'event-driven, batching, իրադարձությունների ագրեգացիա։
Մոսկվան և տվյալները
Պահեստավորման դասարանները ՝ տաք (NVMe), տաք (gp2/gp3), սառը (S3/Glacier/արխիվ)։
Lifecycle-քաղաքականությունը '«հին» օբյեկտների ավտոմատ թարգմանությունը էժան դասարանների համար։
Սեղմումը/PPH-ում, TTL-ում ժամանակավոր սեղանների/սարքավորումների վրա։
Չափազանց վերարտադրումից հրաժարվելը 'խելացի RF, տնտեսական medapshot քաղաքականություն։
Քեշինգը 'Redis/Memcached-ի համար hot-2019-ի փոխարեն «թանկ» ընթերցումների փոխարեն։
Logs, metrics, treiss - վճարել մտքով
Լոգարանների սեմպլացիա (rate-limit մակարդակում/ձևանմուշով), «կառուցվածքային» լոգներ ճակատի փոխարեն։
Tail-based sampling-ը հետքերի համար (պահպանում ենք «պոչերը» p99 և սխալները, մնացածը ագրեսիվ կտրվածք է)։
Downsampling metric 'push-խաղացողների ագրեգացիան, high-res պահպանումը միայն 7-14 օր։
PII ֆիլտրը նվազեցնում է ռիսկերը և ծավալը։
Ճարտարապետությունը և «Միլիսեկունդայի արժեքը»
HTTP/2/3 + resumption: handshake-ից ավելի քիչ CPU/egress/լատենտ։
Քեշի և TTL-ի բանալին 'բարձր hit-ratio-ը ուղղակի գումար է (ավելի քիչ origin և DB)։
GRPC/պրոտոբաֆը ծառայության ծառայության համար 'ավելի քիչ բայթ։
Batch/stream ֆոնային խնդիրների համար; իդեմենտենտալությունը ավելի քիչ է, քան ռետերանները։
BD 'Մի պահեք «ամեն ինչ մեկի մեջ»' էժան KV/cashi հաճախակի կարդալու համար, վերլուծաբանը 'MSH-ի սյունակում։
Տվյալների սխեմաները ՝ կարճ դաշտեր/սեղմված տեսակներ, ինդեքսների կարդինալիտի վերահսկողություն։
DR, պահուստներ և մուլտֆիլմերի շրջան
Բիզնեսի նպատակը ՝ RTO/RPO-ն է RF-ի արժեքը։ Մի վճարեք 2019-ի համար, եթե բավարար է լոկոմոտիվը։
Պահեք սառը պահուստային պատճենները էժան դասարանում, կրկնօրինակը դիֆերենցիալ է։
ROR/տարածաշրջանների միասնական փաթեթը, յուրաքանչյուր գոտի ձգում է 60% պիկի տրամագիծը, դիմակայում է հարևանի մերժմանը առանց «ոսկու» ավելցուկի։
Շրջապատումներ և CI/CD/CD
Սթեյջինգների/ավելի բարձր միջավայրերի, Avto-TTL-ի։
Runner-a CI-ն սպոտի վրա, արտեֆակտների քեշը, զուգահեռ սահմանափակումները։
Թեստային տվյալները կոմպակտ են, գեներացիա on-the-fly, ոչ թե գիգաբայթ։
Կառավարումը և ժողովները
Վերանայեք ծավալներն ու տեսակները մեկ անգամ։
Մրցակցային bekap-պրովայդերը փաստարկն է։
Լիցենզիաներ (APM/անվտանգություն) 'հաշվեք դոլարը օգտակար ազդանշանի համար, ոչ թե «աշխարհի բոլոր լույսերի» համար։
Գործընթացներ և կառավարում
FinOps-արարողություն 'շաբաթական զեկույց թիմերի մասին, ամսական Cost Review (լավագույն 10 «արտահոսք», action items)։
Guardrails: քվոտաներ նախագծի/նյարդային սպեյսի, բյուջե-ալտերտայի, ռեսուրսների տեղակայման արգելք առանց պիտակների։
Blameless post-More-ը «գնային պատահականներով» (լոգարանների արտահոսք, runaway autoscale)։
IaC: Բոլոր լիմիտները, դասարանները, TTL-ը 'ռեպոզացիայում, PR-ռևոյում։
Խնայողությունների թուղթ
- Tegi/showback/charjback ներառվել են, «ոչ» ռեսուրսներ չկան։
- Rightsizing-ը պրոֆիլներով, ARM/այլ տեսակներ գնահատվում են։
- Հանրային զեղչերը փակում են բազան, spot-ֆոն/վերլուծություն/CI։
- HPA/KEDA-ը SLO-մետրիկների վրա, CA-ն warm փամփուշտներով։
- CDN/tiered-cache, սեղմում, քեշի բանալին առանց աղմուկի։
- Lenta.ru: Դասարաններ, lifecycle, TTL, kashi hot-2019 համար։
- Logs/treiss 'սեմպիլացիա, tail-based, PII ֆիլտրեր։
- DR RTO/RPO, սառը bekaps էժան դասարանում։
- Շրջապատումներ Avto-TTL, CI spot-ում։
- FinOps-ռիթմեր և guardrails IaC-ում։
Տիպիկ սխալներ
«Օպտիմիզացիան առանց մետրի»: Ոչ/1000 RPS ռուբլիա չի կարելի համեմատել տարբերակները։
Անջատված/չօգտագործվող ռեսուրսները կախված են ամիսներով։
«Ամեն ինչ» պահելը տաք դասարանում, lifecycle բացակայությունը։
Լոգները որպես «սև անցք» '100 տոկոսը ingest, սպառման 0 տոկոսը։
Auto-scail CPU-ով առանց հաշվի առնելու latency/google-ը և SLO-report-ը։
Չափազանց ագրեսիվ DR առանց բիզնեսի հիմնավորման։
Միկրովեռվիսները «վագոնի համար» - փխրուն խառնուրդի և կեղծ։
Մինի պլեյբուկները
1) Արագ հաշիվը (48 ժամ)
1. Sreez-ը լավագույն 10 ծառայություններից/տարածաշրջանից։ 2) Յուրաքանչյուրը $/1000 RPS, hit-ratio CDN, egress։
2. Անջատել TTL/kash-բանալիները, անջատել «աղմկոտ» լոգները։ 4) Ներառել lifecycle-ը S3/օբյեկտների վրա։
2) egress նվազումը 25 տոկոսով
1. Tiered-cache+shield, `stale-while-revalidate`. 2) Սեղմել պատկերները webp/avif-ում։
2. Peter-API-ը և gzip/brotli տեքստը։ 4) Ստուգել երկրորդ հարցումները/գրանցումները։
3) BD-ի ծախսերի կրճատումը
1. Լավագույն հարցումները (p95/IO) մեջբերում են ինդեքսները/բատչիզացիան։ 2) Hot-set в Redis.
2. Հին տվյալների արխիվացումը (TTL), read-replicas էժան պողպատի վրա։
4) Դադարեցնել «փղերը» սկեյլա
1. Ավելացնել stabilization/cooldown։ 2) MinReplicas> 0 պիկի վրա։
2. Կոննեկտների կանխատեսումը/TSA։ 4) Կտրեք ավելորդ գետերը։
«Տնտեսական» Nginx (սեղմում, քաշ, 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/fintech համար
Պիկի (խաղեր/մրցույթներ) 'նախօրոք բարձրացնել «minReplicas» և տաքացնել CDN/TSA-ը, բայց պահել headro.ru կետով, միայն տաք ճանապարհների վրա (օրինակ և, լոբբի, խաղեր), մնացած' դեգրադային ռեժիմում։
Վճարումները/PSA: Գրողների քեշը (BIN, limits), գաղափարախոսությունը նվազեցնում է դուբլի արժեքը, առանձին egress-փամփուշտը պրովայդերների սպիտակ ցուցակների համար։
Անտիֆրոդ/բոտեր ՝ «մոխրագույն» երթուղիներ և էժան չելենջներ եզրին, փոխարենը թանկ խորը ստուգման փոխարեն, յուրաքանչյուր խնդրանքով։
Live-բովանդակություն/պրովայդերներ 'եզրին քեշը + հաճախականության սահմանափակումը։ CDN պայմանագրերը վերանայել մեծ։
Արդյունքը
Ծախսերի օպտիմիզացումը տարբեր մաքրություն չէ, այլ մշտական FinOps գործընթաց 'չափել արժեքը (դոլար/միավոր), ավտոմատիզացնել տնտեսական լուծումները (cash/TTL/սերմնավորում), օգտագործել զեղչեր և ռեսուրսների ճիշտ դասեր, պահպանել առաձգականությունը SLO-ի տակ և մի բարդացրեք ճարտարապետությունը, որտեղ այն չի վճարվում։ Այսպիսով, դուք կնվազեցնեք TCO-ն, պահպանելով ապրանքի արագությունը և պլատֆորմի կայունությունը։