Hajusrakendus

See on rakendus, mis töötab rohkem kui ühel arvutil ja koosneb rohkem kui ühest osast. Osad jooksevad tavaliselt eraldi protsessides/masinates ja suhtlevad võrgu kaudu.


Kuidas osad omavahel suhtlevad?

Levinud viisid ja protokollid:

  • HTTP/REST (JSON või XML payload)
  • gRPC (Protobuf)
  • Sõnumijärjekorrad – nt RabbitMQ, Kafka (event‑põhine sidumine)
  • WebSocket (püsiv, kahepoolselt avatud kanal)

Kõige lihtsam hajusrakenduse variant

Frontend + Backend

  • Frontend (brauseri rakendus või mobiilirakendus) kuvab kasutajaliidest.
  • Backend (server/rakendus) pakub API-sid ja äriloogikat.

Keerulisem variant: mikroteenused (mikroservised)

Mikroteenustega hajusrakendus on süsteem, mis on:

  • jaotatud mitmeks väikeseks iseseisvaks teenuseks (mikroteenused),
  • kus iga teenus teeb ühe konkreetse ülesande,
  • teenused suhtlevad omavahel võrgu kaudu (nt API-de, sõnumite või sündmuste kaudu),
  • ning koos moodustavad nad ühe suure rakenduse ehk hajusrakenduse.

Näide (lihtsustatud): veebipood

Selle asemel, et kogu pood oleks üks suur monoliit, jagatakse see teenusteks:

MikroteenusÜlesanne
Toote teenusHalda tooteid
Ostukorvi teenusHalda ostukorvi
Kasutaja teenusHalda kasutajate andmeid
Makse teenusTöötle makseid
E‑posti teenusSaada kinnitus- ja teavitusmeile

Iga teenus võib töötada eraldi serveris või konteineris (nt Docker), kuid koostöös annavad nad kasutajale kogemuse justkui ühest rakendusest.


Plussid

  • Paindlikkus – saad arendada/juurutada üht teenust ilma kogu süsteemi peatamata.
  • Skaalitavus – skaleeri ainult koormatud teenust (nt maksed), mitte kõike.
  • Tõrketaluvus – ühe osa rike (nt e‑post) ei vii kogu süsteemi alla.
  • Tehnoloogiline vabadus – iga teenus võib kasutada sobivaimat keelt/andmebaasi.

Miinused

  • Keerukam arhitektuur – teenuste orkestreerimine, võrguvead, konsistents.
  • Rohkem operatiivtööd – logimine, monitooring, CI/CD, observability.
  • Andmelepped – skeemid ja lepingud (API, sündmused) vajavad haldust.
  • SSR võib olla raskem – serveripoolne renderdus nõuab andmete koondamist mitmest teenusest.

Andmeformaadid

XML

  • Võimaldab valideerida (nt XSD skeemiga).
  • Võimaldab kasutada stiililehti (XSLT) transformatsioonideks.

JSON

  • Kerge ja inimloetav, laialt kasutusel veebi- ja mobiili-API-des.
  • Skeemideks saab kasutada JSON Schema‘t.


WebSocket

WebSocket on reaalajas kahepoolne suhtluskanal kliendi (nt veebibrauser) ja serveri vahel. Erinevalt tavalisest HTTP-st loob WebSocket püsiva ühenduse, mille kaudu saab andmeid saata mõlemas suunas ilma iga kord uut ühendust loomata.

Kuidas WebSocket töötab

  1. Ühenduse loomine (handshake)
    Alustatakse tavapärase HTTP-päringuga. Kui server toetab WebSocketit, vahetatakse protokoll ja ühendus muudetakse püsivaks.
  2. Kahepoolne suhtlus
    Nii klient kui server saavad saata sõnumeid reaalajas ja asünkroonselt.
  3. Madal latentsus
    Ühendus jääb avatuks, seega välditakse korduvaid TCP/HTTP ülesehitusi.

Tüüpilised kasutusjuhud: chat-rakendused, live-teavitused, mängud, reaalajas armatuurlauad.


Kokkuvõte

Hajusrakendus võib olla nii lihtne (frontend+backend) kui ka keeruline (mikroteenused). Valik sõltub funktsionaalsusest, koormusest, meeskonna võimekusest ja haldusvalmidusest. Mikroteenused lisavad paindlikkust ja skaleeritavust, kuid toovad kaasa suurema arhitektuurilise ja operatiivse keerukuse.