Serverless — application code’ni server infratuzilmasini bevosita boshqarmasdan ishga tushirish modeli. Cloud provider server, runtime, scale va ko‘p operatsion vazifalarni boshqaradi.
Serverless “server umuman yo‘q” degani emas. Serverlar mavjud, ammo developer ularni provision, patch va scale qilish bilan kamroq shug‘ullanadi.
Serverless ikki asosiy ko‘rinishda uchraydi:
- Function as a Service;
- managed backend service’lar.
Function as a Service
FaaS’da developer kichik function yoki handler deploy qiladi.
Function event kelganda ishga tushadi.
Event manbalari:
Provider kerakli instance’larni avtomatik yaratadi.
Execution modeli
Oddiy jarayon:
- event keladi;
- platforma function uchun execution environment tayyorlaydi;
- code yuklanadi;
- handler chaqiriladi;
- natija qaytariladi;
- environment saqlanishi yoki yo‘q qilinishi mumkin.
Developer environment doim saqlanadi deb hisoblamaydi.
Stateless tamoyil
Serverless function odatda stateless yoziladi.
Local memory va disk:
- keyingi invocationda bo‘lishi mumkin;
- yo‘qolishi mumkin;
- boshqa instance’da mavjud emas.
Doimiy state:
- database;
- object storage;
- cache;
- external service
da saqlanadi.
Cold start
Yangi execution environment tayyorlanishi cold start.
Bosqichlar:
- container yoki sandbox;
- runtime;
- code download;
- dependency load;
- initialization.
Cold start latency’ni oshiradi.
Keyingi invocation mavjud muhitda bajarilsa warm start bo‘lishi mumkin.
Cold startga ta’sir qiluvchi omillar
- runtime turi;
- package hajmi;
- dependency soni;
- memory setting;
- network initialization;
- VPC ulanishi;
- global initialization;
- region;
- provisioned concurrency.
Latency-sensitive API’da cold start alohida o‘lchanadi.
Auto scaling
Platforma request yoki event soniga qarab parallel instance yaratadi.
Bu tez scale beradi.
Biroq downstream tizimlar:
bunday parallelizmni ko‘tara olmasligi mumkin.
Concurrency limit qo‘yiladi.
Pay-per-use
Narx ko‘pincha:
asosida hisoblanadi.
Kam yoki notekis yukda foydali.
Doimiy yuqori workload’da dedicated service arzonroq bo‘lishi mumkin.
Execution limit
FaaS platformalari quyidagilarni cheklashi mumkin:
- maksimal execution vaqti;
- memory;
- temporary disk;
- package hajmi;
- concurrent invocation;
- response size;
- environment variable;
- open connection.
Uzoq batch job boshqa compute model talab qilishi mumkin.
Event delivery
Event bir necha marta yetkazilishi mumkin.
Function idempotent bo‘lishi kerak.
Masalan, queue message qayta kelganda:
- duplicate order;
- ikki email;
- ikki payment
yuz bermasligi kerak.
Event ID yoki business key ishlatiladi.
Retry
Platforma xato bo‘lsa functionni avtomatik qayta chaqirishi mumkin.
Retry siyosati event turiga bog‘liq.
Muhim jihatlar:
- maksimal urinish;
- backoff;
- dead-letter queue;
- timeout;
- poison message;
- idempotency.
Asynchronous invocation
Function eventni qabul qiladi va darhol clientga natija bermasligi mumkin.
Platforma queue orqali qayta ishlaydi.
Failure dead-letter queue yoki destinationga yuboriladi.
Monitoring faqat function logi bilan cheklanmaydi.
HTTP function
API gateway HTTP requestni functionga uzatadi.
bajarishi mumkin.
Function business logicni bajaradi.
Managed service
Serverless faqat function emas.
Managed:
- database;
- object storage;
- queue;
- authentication;
- workflow;
- analytics
xizmatlari ham server boshqaruvini yashiradi.
Application ko‘p managed service’larni event bilan bog‘laydi.
Vendor lock-in
Function code portable bo‘lishi mumkin, ammo:
- event formati;
- IAM;
- deployment;
- monitoring;
- managed database;
- workflow
providerga xos bo‘lishi mumkin.
Adapter va open standard ayrim couplingni kamaytiradi, lekin to‘liq yo‘q qilmaydi.
Observability
Serverless muhitda instance qisqa yashaydi.
Kerakli signal:
- invocation count;
- error;
- duration;
- cold start;
- throttle;
- concurrency;
- retry;
- queue age;
- cost;
- trace.
Correlation ID eventlar orasida saqlanadi.
Security
Har function minimal IAM permission oladi.
Xavflar:
- ortiqcha role;
- environmentdagi secret;
- dependency;
- public endpoint;
- event injection;
- logdagi maxfiy data.
Functionlar soni ko‘p bo‘lsa permission inventory muhim.
Deployment
Function artifact versionlanadi.
Alias yoki traffic split orqali:
boshqariladi.
Code, infrastructure va permission birgalikda version control’da saqlanadi.
Serverless va container
Container serverless platformada ham ishga tushishi mumkin.
Farq packagingda emas, operating modelda:
- avtomatik scale;
- requestga qarab ishga tushish;
- infra boshqaruvining providerga o‘tishi;
- consumption billing.
Function package
Deployment package faqat kerakli code va dependencylarni saqlaydi. Juda katta package cold start va upload vaqtini oshiradi. Native dependency target runtime va architecture uchun build qilinadi.
Database connection
Har parallel invocation yangi database connection ochsa connection limit tez tugaydi. Connection reuse warm environmentda ishlashi mumkin, ammo proxy yoki managed connection pool kuchliroq boshqaruv beradi.
Workflow
Bir nechta uzoq bosqichni bitta function ichida kutish o‘rniga workflow engine state, retry va timeoutni boshqaradi. Har bosqich alohida idempotent task bo‘lishi mumkin.
Local test
Function handler lokal runtime yoki emulator bilan test qilinadi. Provider IAM, event delivery va scale xatti-harakati faqat haqiqiy environmentda to‘liq ko‘rinadi.
Observed concurrency
Scale qarori request sonigagina emas, real concurrent execution va downstream capacityga qarab baholanadi.
Bog‘liq tushunchalar
Function as a Service, Cold start, Event-driven architecture, Auto scaling, Managed service, Idempotency, API Gateway, Concurrency, Vendor lock-in