Serverless funksiýalary we cold start
1) cold start näme we näme üçin ýüze çykýar
Cold start - wakany gaýtadan işlemezden ozal täze ýerine ýetiriş izolýasiýasy (sandbox/konteýner/mikro-VM) döredilende goşmaça gizlinlik. Adaty konweýer:1. Gurşaw allokasiýasy (konteýner/mikro-VM, iş wagty ýüklemek).
2. VPC/ENI, syrlary, faýllary, konfigurasiýalary birikdirmek.
3. Kody başlamak (modullary import etmek, DB birikdirmek, modelleri ýüklemek).
4. Handler ýerine ýetirildi.
Warm start (reuse) 1-3 ädimlerini sypdyrýar. Cold start ähtimallygy iň ýokary derejelerde, iş wagtyndan soň, paralellik ýokarlananda we kod/konfigurasiýa täzelenende ýokarlanýar.
2) Nädip ölçemeli we maksat goýmaly (SLO)
Metrikler: 'init _ duration' (başlangyç), 'duration _ total', "sowuk uçuşlaryň paýy", p95/p99 latency, iş wagtyndan soň endiklere birikdirmegiň ýalňyşlyklary.
Telemetriýany aýyrmak: platforma ýazgylary + öz bellikleri (mysal üçin, 'context' bar bolsa 'cold = true/false'. isColdStart 'ýa-da statiki utgaşmada öz baýdagy).
SLO-maksatlar (mysal): API "login" p95 ≤ 200 ms, paýy cold ≤ 3%; Fon tabşyryklary - p95 ≤ 1 s. "Pul" ugurlary üçin - aýratyn, has berk.
3) cold start azaltmagyň esasy gollary
3. 1 Konkarrensi we ýylylyk dolandyryşy
Provisioned Concurrency/Min Instances: N ýyly gurşawy saklaýar. Möhüm tutawaçlar üçin ulanyň.
Warmers/gyzdyrma: workerleri ýyly saklamak üçin meýilleşdirilen jaňlar (cron/scheduler). Muny akylly ediň (sebit, wagt, ýük).
Burst-buferler: garaşylýan belentliklerden öň paralellik çägini öňünden ýokarlandyryň.
3. 2 Gaplamak we garaşlylyk
Kiçi deploy-artefakt: tree-shaking, '-only prod' garaşlylyk, gatlaklar (AWS Layers) uly lib üçin.
Lazy-init: ilkinji gezek gireniňizde handleriň içindäki agyr modullary import ediň; baglanyşyklary ýalta açyň.
Yssy çeşmeler: warm başlamak üçin global sebitdäki SDK/baglanyşyk müşderilerini kesiň.
3. 3 Tor we VPC
VPC bolmasa, hususylyga mätäç bolmadyk funksiýalar üçin (ýogsam ENI-attach onlarça-ýüzlerçe ms goşýar).
VPC hökman bolsa, VPC-ekonom üpjün ediji re modeimini (ENI-howuzlar/optimizasiýa), DB proxy (RDS Proxy/Cloud SQL Auth Proxy) we connection pooling ulanyň.
3. 4 Diller we randaýlar
Node. js/Go iň çalt başlaýar; Python - adatça çalt, ýöne uly importlara duýgur; Java/.NET - GraalVM/AOT we profil bolmasa has kyn.
JVM üçin SnapStart/CRaC/Graal Native; üçin. NET — trimmed Self-Contained.
3. 5 Başlangyç we state
Islegiň ýoluna däl-de, init phase (init phase) -a gymmat bahaly başlangyç getiriň.
Ýerli keş (TTL) bilen on-demand konfigurasiýalary/syrlary ýükläň.
Ulanyjy ýagdaýyny ýatda saklamaň - diňe keş signallary/konnektorlar.
4) cold start täsirini azaldýan binagärlik nusgalary
4. 1 Asinhron we nobatlar
Soragy kabul edýäris → tassyklaýarys → nobata goýýarys/teker (SQS/PubSub/Queue Storage) → jogap berýäris 202/Accepted → fon bilen gaýtadan işleýäris.
Işjeň däl amallar (tölegler, hasabatlar, agyr hasaplamalar) üçin amatlydyr.
4. 2 Precompute/Pre-cache
Girişleri/kataloglary/fiç-baýdaklary öňünden trigger (CRON/wakalar) boýunça döretmek we KV/keş/edge-de saklamak.
4. 3 Fan-out/Fan-in
Uzak operasiýany birnäçe gysga funksiýalara bölýäris (Map/Reduce-meňzeş) → wagt we gaýtalanma töwekgelçiligi az.
4. 4 Edge-offload
Iň ýönekeý barlaglary (JWT/HMAC, geo-redirekt, antibot) RTT tygşytlamak we origini düşürmek üçin edge (Workers/Functions @Edge) -de ýerine ýetirýäris.
5) Tejribe: konfigikler we usullar
5. 1 AWS Lambda (provisioned + RDS Proxy)
hcl
Terraform sketch: enable provisioned concurrency on the sales version of the resource "aws_lambda_provisioned_concurrency_config" "api" {
function_name = aws_lambda_function. api. function_name qualifier = aws_lambda_alias. prod. name provisioned_concurrent_executions = 20
}
RDS Proxy for connection pool "aws_db_proxy" "rds_proxy" {
name = "pg-proxy"
engine_family = "POSTGRESQL"
idle_client_timeout = 1800 require_tls = true
}
Node. js (ýalta başlangyç we reuse):
js let pgClient ;//reuse between warm runs let cold = true;
exports. handler = async (event, ctx) => {
const isCold = cold; cold = false;
if (!pgClient) {
const { Client } = await import('pg'); // lazy import pgClient = new Client({ host: process. env. PG_PROXY, ssl: true });
await pgClient. connect();
}
const t0 = Date. now();
const data = await pgClient. query('select 1');
return {
statusCode: 200,
headers: { 'x-cold-start': String(isCold), 'x-elapsed-ms': String(Date. now()-t0) },
body: JSON. stringify({ ok: true })
};
};
5. 2 GCP Cloud Run / Cloud Functions (min instances)
yaml
Cloud Run service. yaml apiVersion: serving. knative. dev/v1 kind: Service metadata: { name: api }
spec:
template:
metadata:
annotations:
autoscaling. knative. dev/minScale: "5" # keep warm run containers. googleapis. com/cpu-throttling: "false"
spec:
containerConcurrency: 80 containers:
- image: gcr. io/proj/api:latest env:
- { name: DB_HOST, value: "10. 0. 0. 5" }
5. 3 Azure Functions (AlwaysOn/PreWarm)
AlwaysOn bilen Premium/Elastic meýilnamalary; pre-warmed instances ≥ çaklama p95 paralelligi.
6) Wagtlar, retralar, möhletler
Umumy möhleti (client-side) sözbaşy ('x-deadline-ms '/' grpc-timeout') arkaly geçiriň, funksiýanyň içinde 'per-hop timeout' -y gysgaldyň.
Diňe idempotent amallary üçin gaýtalanmalar; Idempotency-Key we de-duplikasiýany ulanyň.
Öň API üçin - hedging (p90-dan soň gaýtalanýan haýyş) we uzak aralyga garaşlylyk üçin circuit breaker.
7) DB/keş/syrlar bilen işlemek
Howuzlar/Proxy (RDS Proxy/Cloud SQL Proxy/pgBouncer) müňlerçe gysga konektiň ýerine.
Fonda täzelenen gysga TTL syr + ýatda kesh.
Kesh (Redis/Memcached/KV): "agyr" kataloglary init-e ýüklemek, ýöne wagt çäkleri bilen.
8) Kody guramak we ýygnamak
Dar use-case üçin aýratyn hendlerler; bir "galyň" bandl = uzyn init.
ESBuild/Rollup: Ulanylmaýan zady aýyryň, diňe kritiki zady birleşdiriň.
Gatlaklar (Layers/Extensions) - üpjün edijiniň keşini gaýtadan ulanmak üçin uly lipler (OpenSSL modelleri, SDK) üçin.
9) Pikleri barlamak we simulýasiýa etmek
"Sowuk" başlangyç sintetikasy: min instances-i zor bilen öçüriň we paralel traffigi ädimler bilen kowuň.
A/B: cold, p95 paýyny, konnektiň ýalňyşlygyny DB/syrlara, çykdajylara deňeşdiriň.
GameDay: iň ýokary ýük × 2 iň ýokary derejeden, ýylylygy öçürmek.
10) Bahasy (FinOps)
Min instances/provisioned concurrency puluň bahasy - diňe gyzgyn ugurlar üçin açyň.
Ýerine ýetiriş möhletini azaldyň: keş, gysga wagt, gereksiz SDK-lardan ýüz öwürmek.
Egress (daşarky API çagyryşlaryny) we logirlemegi göz öňünde tutuň.
11) Antipatternler
Onlarça megabaýt garaşlylygy bolan bir monolit handler.
Her jaňda hökmany DB birikdirmek (reuse/proxy bolmazdan).
"Mümkin boldugyça" ähli funksiýalar üçin VPC.
Uzyn wagtlar we kör retralar → "guýruklar" we fantom hasaplar.
Gije-gündiziň dowamynda "hemme zady" gyzdyrmak.
Gözleg ýolunda gizlin başlangyç (lentisya init> 100 ms - init/kese geçiriň).
12) iGaming/Maliýe aýratynlyklary
Pul ýollary (goýumlar/netijeler): provisioned/min instances, aýry-aýry SLO-lary saklaň, wagtlary we gaýtalamalary berk çäklendiriň (idempotentlik hökmanydyr).
KYC/PSP: durnuksyz daşarky API - kweue worker, öň tarapda - 202/polling/webhuk.
Düzgünleşdiriji we audit: üýtgemeýän loglar (WORM), "Idempotency-Key" bilen gelýän wakalaryň magazineurnaly, "trace _ id" baglanyşygy.
Data residency: PII işleýän funksiýalary sebitleýin hasaplarda/taslamalarda ýerleşdiriň; PII bilen edge-kesh ýok.
13) Prod-taýynlyk çek-sanawy
- SLI/SLO kesgitlenildi: p95/p99, cold paýy, marşrutlar boýunça maksat bahalary.
- Möhüm funksiýalarda provisioned/min instances goşuldy; konkarrensi çaklamasy.
- Bandle iň az; agyr libalar gatlaklara çykaryldy; lazy-import/başlangyç.
- SDK/DB müşderileriniň Reuse; RDS/SQL Proxy sazlandy; baglanyşyk howuzy.
- VPC diňe zerur ýerlerde; ENI/proxy optimizirlendi; dolandyryjy arkaly syrlar + TTL ýerli keşi.
- Wagt/möhletler/retrailer: backoff + jitter; diňe dempotent gaýtalanmalar.
- Sintetika "cold" + ýük synaglary; cold we p99 paýynyň ýokarlanmagy üçin alertler.
- Runbooks: provisioned nädip köpeltmeli, minScale nädip üýtgetmeli, degradasiýany nädip açmaly.
- iGaming üçin: aýratyn SLO/dashbordlar "pul ýollary", Idempotency-Key, WORM-audit.
14) TL; DR
Sowuk başlangyç gutulgysyz, ýöne dolandyrýarys: möhüm ýerlerde ýyly ýagdaýlary saklaň, bandllary azaldyň, lazy-init we reuse birikmelerini ulanyň, artykmaç VPC-den gaça duruň, nobat/workerlerde agyr amallary geçiriň we ýeňil düzgünler üçin edge ulanyň. Möhüm maliýe ýollary üçin - aýratyn SLO, idempotentlik we berk taýmautlar; cold paýyny ölçäň we ýylylygy diňe töleýän ýerinde açyň.