Koje vrste usluga postoje i kako funkcionišu na niskom nivou?
sobes.tech АИ
Одговор од АИ
Постоји неколико основних типова сервиса у контексту микросервисне архитектуре и распоређених система:
- Монолитићне апликације: Јединствена, недељива кодна база која садржи све функционалности апликације.
- Микросервиси: Низ малих, независних сервиса, сваки реализује одређену пословну логику. Интеракцију обављају преко API.
- Serverless (без сервера): Модел рачунања у којем провајдер облака динамички управља доделом и скалирањем ресурса. Развивач се фокусира само на код функција.
На ниском нивоу функционисање изгледа овако:
Монолитићно:
Извршава се као један процес. Сви компоненти се учитавају истовремено у меморију. Интеракција између компоненти се одвија преко позива функција или метода унутар истог адресног простора. Отпорност на грешке се постиже резервисањем целог монолита. Мащање је тешко, потребно је мащирати цео пример апликације. Употреба ресурса је често вишак.
Микросервиси:
Сваког микросервиса је посебан процес или скуп процеса. Ради у изолованом окружењу (контейнер, виртуелна машина). Интеракција се одвија преко мреже, обично преко HTTP/gRPC на основу синхроних или асинхроних протокола (нпр. RabbitMQ, Kafka за асинхроност). За сваки сервис може постојати свој стек технологија и база података. Мащање се одвија независно за сваки сервис. Обезбеђује високу отпорност (отказ једног сервиса не утиче на друге) и бољу употребу ресурса. Управљање постаје сложеније (потребни су Service Discovery, API Gateway, расподељено логовање и мониторинг).
Пример мрежне интеракције микросервиса:
// Захтев према Сервису А
GET /users/123 HTTP/1.1
Host: service-a.example.com
// Одговор од Сервиса А
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"username": "testuser"
}
Serverless:
Код функције се деплоји у облачно окружење. Провајдер облака покреће код функције као одговор на одређене догађаје (HTTP захтеви, поруке у реду, промене у бази података). Инфраструктуру (сервери, ОС) управља провајдер. Функције су обично краткотрајне и без стања (stateless). Мащање је аутоматско, засновано на броју догађаја. Плаћање се врши по потрошњи ресурса (број извршења, време рада). На ниском нивоу, провајдер користи контејнере или виртуелне машине за изолацију и извршавање функција, али овај ниво је скривен од корисника.
Пример Serverless функције (AWS Lambda):
# Једноставна Lambda функција
import json
def lambda_handler(event, context):
# Обрада улазећег догађаја
# Извршавање логике
response_body = {
"message": "Hello from Lambda!",
"input": event
}
return {
"statusCode": 200,
"body": json.dumps(response_body)
}
Упоредна табела:
| Карактеристика | Монолитићни | Микросервиси | Serverless |
|---|---|---|---|
| Архитектура | Једна кодна база | Независне услуге | Функције, управљане догађајима |
| Распоређивање | Један процес | Независно за сваку услугу | Управља га провајдер |
| Мащање | Хоризонтално (копирање) | Независно за сваку услугу | Аутоматско, по догађајима |
| Отпорност на грешке | Ниска | Висока (изоловане) | Висока (укорјењена) |
| Коришћење ресурса | Делимично вишак | Ефикасније | Плата по потрошњи |
| Комплексност управљања | Ниска | Висока | Ниска (за инфраструктуру) |