Sobes.tech
Middle

Milyen típusú szolgáltatások léteznek, és hogyan működnek alacsony szinten?

sobes.tech MI

Válasz az MI-től

Különböző fő típusai vannak a szolgáltatásoknak a mikroszolgáltatás-architektúrában és az elosztott rendszerekben:

  • Monolit alkalmazások: Egy egységes, oszthatatlan kódbázis, amely az alkalmazás összes funkcióját tartalmazza.
  • Mikroszolgáltatások: Kicsi, független szolgáltatások halmaza, mindegyik meghatározott üzleti logikát valósít meg. API-n keresztül kommunikálnak.
  • Serverless (kiszolgáló nélküli): Számítási modell, ahol a felhős szolgáltató dinamikusan kezeli az erőforrások kiosztását és skálázását. A fejlesztő csak a funkciók kódjára összpontosít.

Alacsony szinten működés így néz ki:

Monolit:

Egy folyamatként fut. Minden komponens egyszerre töltődik be a memóriába. A komponensek közötti kommunikáció funkcióhívások vagy metódushívások révén történik ugyanazon címtartományon belül. A hibatűrés a teljes monolit mentésével érhető el. A skálázás nehéz, az egész alkalmazás példányát kell skálázni. Az erőforrások gyakran túlzottak.

Mikroszolgáltatások:

Minden mikroszolgáltatás külön folyamat vagy folyamatcsoport. Elkülönített környezetben működik (konténer, virtuális gép). A kommunikáció hálózaton keresztül történik, általában HTTP/gRPC protokollokon keresztül szinkron vagy aszinkron módon (pl. RabbitMQ, Kafka az aszinkronitásért). Minden szolgáltatásnak saját technológiai verem és adatbázis lehet. A skálázás függetlenül történik minden szolgáltatás esetében. Magas hibatűrés biztosított (egy szolgáltatás hibája nem befolyásolja a többit), és jobb erőforrás-kihasználás. A menedzsment bonyolultabb (Service Discovery, API Gateway, elosztott naplózás és monitorozás szükséges).

Példa a mikroszolgáltatások hálózati kommunikációjára:

// Kérés az A Szolgáltatáshoz
GET /users/123 HTTP/1.1
Host: service-a.example.com
// Válasz az A Szolgáltatástól
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "username": "testuser"
}

Serverless:

A funkció kódja a felhő környezetében kerül telepítésre. A felhős szolgáltató a kódot futtatja bizonyos eseményekre reagálva (HTTP-kérések, sorokban lévő üzenetek, adatbázis-változások). Az infrastruktúrát (szerverek, OS) a szolgáltató kezeli. A funkciók általában rövid életűek és stateless-ek (állapot nélküli). A skálázás automatikus, az események számán alapul. A fizetés az erőforrás-felhasználás szerint történik (végrehajtások száma, futási idő). Alacsony szinten a szolgáltató konténereket vagy virtuális gépeket használ a funkciók izolálására és futtatására, de ez a szint el van rejtve a felhasználó elől.

Példa a Serverless-funkcióra (AWS Lambda):

# Egyszerű Lambda funkció
import json

def lambda_handler(event, context):
    # Bejövő esemény feldolgozása
    # Logika végrehajtása
    response_body = {
        "message": "Hello from Lambda!",
        "input": event
    }

    return {
        "statusCode": 200,
        "body": json.dumps(response_body)
    }

Összehasonlító táblázat:

Jellemző Monolit Mikroszolgáltatások Serverless
Architektúra Egységes kódbázis Független szolgáltatások Funkciók, események által vezéreltek
Telepítés Egy folyamat Minden szolgáltatás független Szolgáltató által kezelt
Skálázás Horizontális (másolás) Független minden szolgáltatásnál Automatikus, események szerint
Hibatűrés Alacsony Magas (el vannak izolálva) Magas (beépített)
Erőforrás-használat Részben redundáns Hatékonyabb Fogyasztás szerint fizetendő
Menedzsment bonyolultsága Alacsony Magas Alacsony (infrastruktúrához)