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 teenus | Halda tooteid |
| Ostukorvi teenus | Halda ostukorvi |
| Kasutaja teenus | Halda kasutajate andmeid |
| Makse teenus | Töötle makseid |
| E‑posti teenus | Saada 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
- Ühenduse loomine (handshake)
Alustatakse tavapärase HTTP-päringuga. Kui server toetab WebSocketit, vahetatakse protokoll ja ühendus muudetakse püsivaks. - Kahepoolne suhtlus
Nii klient kui server saavad saata sõnumeid reaalajas ja asünkroonselt. - 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.