Sissejuhatus arvutiprogrammide suhtlusse
Olulisus ettevõtluses
Tänapäeva ettevõtlus on muutunud järjest keerukamaks ja globaalsemaks. Ettevõtted peavad hallata keerulisi tarneahelaid, mis hõlmavad mitmeid osapooli, asukohti ja süsteeme. Sellises keskkonnas on arvutiprogrammide vaheline suhtlus muutunud kriitiliselt oluliseks, võimaldades:
- Reaalajas andmevahetus - Kaupade asukoha, oleku ja liikumise jälgimine kogu tarneahela ulatuses
- Protsesside automatiseerimine - Tellimuste töötlemine, laohaldus ja transpordi planeerimine ilma inimese sekkumiseta
- Andmete integreerimine - Erinevate süsteemide (ERP, WMS, TMS) vaheline sujuv andmevahetus
- Otsuste tegemise toetamine - Andmete kogumine ja analüüsimine optimaalsete logistiliste otsuste tegemiseks
- Klienditeeninduse parandamine - Täpsed tarneajad ja olekuteated klientidele
Ajalooline areng ja evolutsioon
1960-1970: Varased algused
- Failipõhine andmevahetus
- Pakettöötlus
- Suurarvutid
1980-1990: Võrgupõhised lahendused
- Klient-server arhitektuur
- EDI (Electronic Data Interchange)
- RPC (Remote Procedure Call)
1990-2000: Interneti ja veebiteenuste algus
- CORBA (Common Object Request Broker Architecture)
- DCOM (Distributed Component Object Model)
- Java RMI (Remote Method Invocation)
2000-2010: Veebiteenuste võidukäik
- XML ja SOAP
- WSDL (Web Services Description Language)
- REST (Representational State Transfer)
2010-2020: Mikroteenused ja pilv
- JSON - Kergem alternatiiv XML-ile
- Mikroteenuste arhitektuur
- Pilveteenused
- Konteineriseerimine (Docker, Kubernetes)
2020-tänapäev: API-majandus ja integratsioonid
- API-first lähenemine
- GraphQL
- Serverless arhitektuur
- Event-driven arhitektuur
- IoT (Internet of Things)
Arhitektuurilised kontseptsioonid
Klient-server arhitektuur
Klient-server arhitektuur on üks levinumaid mudeleid arvutiprogrammide vahelises suhtluses. See on fundamentaalne kontseptsioon, millel põhinevad paljud tänapäeva süsteemid, sealhulgas veebiteenused, andmebaasid ja hajussüsteemid.
Põhimõte
Klient-server arhitektuuris on rollid selgelt jaotatud:
- Server - pakub teenuseid, ressursse või funktsionaalsust
- Klient - kasutab serveri pakutavaid teenuseid
Suhtlus toimub tavaliselt järgmiselt:
- Klient algatab ühenduse, saates serverile päringu
- Server töötleb päringu ja genereerib vastuse
- Server saadab vastuse kliendile
- Klient töötleb vastuse
Eelised
- Selge rollide jaotus - vastutus on selgelt jagatud
- Tsentraliseeritud ressursid - andmed ja teenused on koondatud
- Skaleeritavus - servereid saab lisada vastavalt vajadusele
- Turvalisus - ligipääsu saab kontrollida tsentraalselt
Puudused
- Üksikpunkti rike (single point of failure) - serveri tõrge mõjutab kõiki kliente
- Võrgulatents - suhtlus võib olla aeglane kaugete klientide puhul
- Ressursside piiratus - server võib ülekoormatud saada
Hajussüsteemid
Hajussüsteem on arvutisüsteem, mille komponendid asuvad erinevates arvutites ja suhtlevad omavahel võrgu kaudu, kuid kasutajale näivad ühtse süsteemina.
Põhiomadused
- Hajutatus - komponendid töötavad erinevates arvutites
- Autonoomsus - komponendid töötavad iseseisvalt
- Läbipaistvus - süsteemi keerukus on kasutaja eest varjatud
- Skaleeritavus - süsteemi saab laiendada lisades uusi komponente
- Tõrkekindlus - ühe komponendi rike ei põhjusta kogu süsteemi riket
Väljakutsed
- Võrguprobleemid - latents, ebausaldusväärsus, ribalaiuse piirangud
- Koordineerimine - komponentide tegevuse sünkroniseerimine
- Järjepidevus - andmete järjepidevuse tagamine kõigis komponentides
- Turvalisus - hajutatud süsteemi kaitsmine on keerulisem
Suhtlusmeetodid
Sünkroonne vs. asünkroonne suhtlus
Arvutiprogrammide vahelises suhtluses on kaks peamist mudelit: sünkroonne ja asünkroonne suhtlus.
Sünkroonne suhtlus
Põhimõte: Klient saadab päringu ja ootab vastust enne jätkamist.
Analoogia: Telefonikõne - mõlemad osapooled on samaaegselt seotud.
Sünkroonse suhtluse eelised
- Lihtne mõista ja implementeerida
- Otsene tagasiside
- Lihtne veahaldus
Sünkroonse suhtluse puudused
- Blokeerib kliendi, kuni vastus saabub
- Ressursside raiskamine ootamise ajal
- Tundlik võrguprobleemide suhtes
Asünkroonne suhtlus
Põhimõte: Klient saadab päringu ja jätkab tööd ilma vastust ootamata.
Analoogia: E-kiri - saatja jätkab tegevust pärast kirja saatmist.
Asünkroonse suhtluse eelised
- Parem ressursside kasutus
- Suurem skaleeritavus
- Vastupidavus võrguprobleemidele
Asünkroonse suhtluse puudused
- Keerulisem implementeerida
- Keerulisem veahaldus
- Võib tekitada keerukaid olekuhalduse probleeme
Sõnumipõhine suhtlus
Sõnumipõhine suhtlus on asünkroonse suhtluse vorm, kus programmid vahetavad andmeid sõnumite kaudu, kasutades tavaliselt sõnumivahendajat (message broker).
Põhikomponendid
- Sõnumid - andmeüksused, mida vahetatakse
- Sõnumijärjekorrad - sõnumite ajutised hoiukohad
- Tootjad (producers) - loovad ja saadavad sõnumeid
- Tarbijad (consumers) - võtavad vastu ja töötlevad sõnumeid
- Sõnumivahendaja - haldab sõnumite liikumist tootjate ja tarbijate vahel
Sõnumiedastuse mustrid
- Point-to-Point - üks sõnum jõuab täpselt ühe tarbijani
- Publish-Subscribe - üks sõnum jõuab kõigi huvitatud tarbijateni
- Request-Reply - sõnumile oodatakse vastust, kuid asünkroonselt
- Competing Consumers - mitu tarbijat konkureerivad sõnumite pärast
Andmeformaadid
JSON (JavaScript Object Notation)
Kergekaaluline andmevahetusformaat, mis on inimestele lihtsasti loetav ja kirjutatav ning masinatele lihtsasti töödeldav ja genereeritav.
XML (eXtensible Markup Language)
Märgenduspõhine andmevahetusformaat, mis kasutab silte elementide ja nende atribuutide defineerimiseks.
Protocol Buffers
Google'i loodud binaarformaat andmete serialiseerimiseks, mis on kompaktsem ja kiirem kui XML või JSON.
YAML
Inimloetav andmeserialiseerimine formaat, mida kasutatakse sageli konfiguratsioonifailides.
CSV (Comma-Separated Values)
Lihtne tekstipõhine formaat tabelite andmete esitamiseks.
Turvaaspektid
Turvalisus on kriitiline aspekt arvutiprogrammide vahelises suhtluses. Kui programmid vahetavad andmeid, eriti võrkude kaudu, tuleb arvestada mitmete turvariskidega.
Levinud turvaprobleemid
- Autentimine - Suhtlevate osapoolte identiteedi kontrollimine
- Autoriseerimine - Tagamine, et osapooltel on vajalikud juurdepääsuõigused
- Andmete terviklikkus - Tagamine, et andmeid ei muudeta edastamise ajal
- Konfidentsiaalsus - Andmete kaitsmine volitamata juurdepääsu eest
- Mitteeitamine - Sõnumi saatmise eitamise vältimine
- Kättesaadavus - Tagamine, et teenused jäävad kättesaadavaks
Turvameetmed
- Krüpteerimine - Andmete konfidentsiaalsuse kaitsmine
- Digitaalsed allkirjad - Andmete terviklikkuse ja autentsuse tagamine
- Juurdepääsukontroll - Ressurssidele juurdepääsu piiramine
- Turvalised protokollid - HTTPS, SFTP jne kasutamine
- API võtmed ja tokenid - API-dele juurdepääsu kontrollimine
- Piirangud - Teenuste kuritarvitamise vältimine
Juhtumiuuringud
Logistikaettevõtte integratsioon
Globaalne logistikaettevõte rakendas hajussüsteemi, kus:
- Iga piirkond haldab oma lao- ja transpordisüsteeme
- Keskne süsteem koordineerib globaalseid operatsioone
- Andmed sünkroniseeritakse piirkondade vahel
- Kliendid näevad ühtset vaadet olenemata sellest, millises piirkonnas nende kaup asub
Laohaldussüsteem
Sünkroonse ja asünkroonse suhtluse näited logistikas:
- Sünkroonne: Laotöötaja skanneerib toote ja ootab kohest kinnitust, et toode on süsteemis registreeritud
- Asünkroonne: Tellimuse esitamine süsteemi, mis töötleb tellimusi järjekorras ja saadab hiljem e-kirja kinnitusega