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
Digitaalse suhtluse illustratsioon

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)
Võrgu diagramm

1990-2000: Interneti ja veebiteenuste algus

  • CORBA (Common Object Request Broker Architecture)
  • DCOM (Distributed Component Object Model)
  • Java RMI (Remote Method Invocation)
Veebiteenuste diagramm

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)
Mikroteenuste diagramm

2020-tänapäev: API-majandus ja integratsioonid

  • API-first lähenemine
  • GraphQL
  • Serverless arhitektuur
  • Event-driven arhitektuur
  • IoT (Internet of Things)
Kaasaegse API diagramm

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:

  1. Klient algatab ühenduse, saates serverile päringu
  2. Server töötleb päringu ja genereerib vastuse
  3. Server saadab vastuse kliendile
  4. Klient töötleb vastuse
Klient-server arhitektuur

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
Hajussüsteemid

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ünkroonne suhtlus

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ünkroonne suhtlus

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.

JSON näide

XML (eXtensible Markup Language)

Märgenduspõhine andmevahetusformaat, mis kasutab silte elementide ja nende atribuutide defineerimiseks.

XML näide

Protocol Buffers

Google'i loodud binaarformaat andmete serialiseerimiseks, mis on kompaktsem ja kiirem kui XML või JSON.

Protocol Buffers näide

YAML

Inimloetav andmeserialiseerimine formaat, mida kasutatakse sageli konfiguratsioonifailides.

YAML näide

CSV (Comma-Separated Values)

Lihtne tekstipõhine formaat tabelite andmete esitamiseks.

CSV näide

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
Logistika integratsiooni näide

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