Bosh sahifa Wiki Serverless

Serverless

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

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:

  1. event keladi;
  2. platforma function uchun execution environment tayyorlaydi;
  3. code yuklanadi;
  4. handler chaqiriladi;
  5. natija qaytariladi;
  6. 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:

da saqlanadi.

Cold start

Yangi execution environment tayyorlanishi cold start.

Bosqichlar:

Cold start latency’ni oshiradi.

Keyingi invocation mavjud muhitda bajarilsa warm start bo‘lishi mumkin.

Cold startga ta’sir qiluvchi omillar

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:

  • invocation soni;
  • execution vaqti;
  • ajratilgan memory yoki CPU;
  • network;
  • storage

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.

Gateway:

bajarishi mumkin.

Function business logicni bajaradi.

Managed service

Serverless faqat function emas.

Managed:

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:

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:

Correlation ID eventlar orasida saqlanadi.

Security

Har function minimal IAM permission oladi.

Xavflar:

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