A mai világban adatok tömkelege száguld a mindent átszövő információs szupersztrádán, átlag halandók számára már-már nyomon követhetetlenül. Amikor az „internet” még születőben volt (a 20. század második feléről beszélünk), már akkor kialakultak a modern kori kommunikációs hálózataink strukturális alapkövei, sarokpontjai.
Ebben a bejegyzésben a célom nem az, hogy egy internettörténelmi áttekintést adjak, akit jobban érdekel a téma, az nyugodtan utánakeresgélhet, hogy is kezdődött minden, mi is volt az az Arpanet, és hasonlók, az ezzel foglalkozó szakirodalom magyarul is tekintélyes.
Amire én itt fókuszálnék, az egy specifikus téma: A 80-as években kialakult kliens-szerver architektúráról szólnék pár szót, inkább csak a saját szavaimmal foglalnám össze, hogy mit is jelent ez, annak érdekében hogy az egyik legalapvetőbb fogalom tisztába legyen téve, ha már egy olyan blogon vagyunk, aminek tartalma erőteljesen fog erre építeni.
Miért is fontos itt ez a kis „ismeretterjesztés?” Mert a mai világban – ezt tapasztalom – az embereknek lehet róla beszélni, de nem igazán tudják elképzelni, nem igazán tudják felfogni hogy miről is van szó. Példaképp,
tedd fel a kérdést az első szembejövő embernek: Te tudod hogy hol vannak „tárolva” a weblapok?
Mi az, hogy beütünk egy címet, és napszaktól, földrajzi helytől függetlenül (optimális esetben) ugyanaz a tartalom megjelenik? Az emberek jelentős része el sem tudja képzelni, hogy mi fut a háttérben.
Nem, nincs arra sem itt szükség, hogy feleslegesen regényeket zengjünk az átlag számára érdektelen részletekről: szóval maradunk a földön, és pofonegyszerűen fogunk beszélni alapvető dolgokról.
Első körben arról hogy mi az a szerver
A kliens-szerver (magyarul: ügyfél-kiszolgáló) szoftverarchitektúra egy sokoldalú, üzenetalapú és moduláris infrastruktúra amely azért alakult ki, hogy a használhatóságot, rugalmasságot, együttműködési lehetőségeket és bővíthetőséget megnövelje a centralizált, nagyszámítógépes, időosztásos rendszerekhez képest.
https://hu.wikipedia.org/wiki/Kliens-szerver_architekt%C3%BAra
Namost ha én ezt elolvasnám anélkül, hogy valaha hallottam volna róla, nem valószínű, hogy ez alapján a „definíció” alapján felfognám, hogy miről van szó. 😀 Úgyhogy legyünk egy kicsit gyakorlatiasabbak.
Menjünk egy kicsit még tovább a wikipedián fellelhető definíciókkal:
A kliens (angolul client) olyan számítógép amely hozzáfér egy (távoli) szolgáltatáshoz, amelyet egy számítógép hálózathoz tartozó másik gép nyújt.
https://hu.wikipedia.org/wiki/Kliens-szerver_architekt%C3%BAra
Egy ügyfél, azaz kliens kéréseket, lekérdezéseket küld a szervernek, és az ezekre való válaszokat fogadja, egyszerre általában csak kisszámú szerverhez (kiszolgálóhoz kapcsolódik).
A kiszolgáló vagy szerver (angolul server) olyan (általában nagy teljesítményű) számítógépet, illetve szoftvert jelent, ami más gépek számára a rajta tárolt vagy előállított adatok felhasználását, a kiszolgáló hardver erőforrásainak (például nyomtató, háttértárolók, processzor) kihasználását, illetve más szolgáltatások elérését teszi lehetővé.
https://hu.wikipedia.org/wiki/Kliens-szerver_architekt%C3%BAra
Egy szerver legfőbb funkciója, hogy a kliensektől várja a kéréseket, ezeket feldolgozza majd visszaküldi a választ. Általában nagy számú kliensnek van lehetősége kapcsolódni egy szerverhez egyidőben.
Alapjában véve tehát egy szerver vagy egy kliens az mindig egy hálózatra csatlakoztatott eszköz. A különbség abban van, hogy ő a kérdező, vagy a szolgáltató fél. Ennek megfelelően kell(ett már régen is) a hardvert is kialakítani, ennek az az eredménye, hogy a szerverek alapesetben régen is nagy teljesítményű (a felhasználás mikéntje és miértjéhez képest) számítógépek voltak.
A kliensek ezzel ellenben (régen jellemzően PC-k, ma már akár egy telefon vagy tablet) a szerverekhez képest csökkentett számítási képességű eszközök voltak. (Ez persze nem törvényszerű, két egyenlő „tudású” szerver is játszhat szerver-kliens szerepeket, felhasználástól függően).
Képzeljünk el egy egyszerű példát – egy weboldal esete
Szánt szándékkal egyszerűsítek a témában nem jártas olvasók kedvéért: képzeljük el, hogy böngészni szeretnénk az interneten. Bővebben? Meg akarjuk nézni a jövő heti időjárás-előrejelzést.
Ebben a kis példában azt kell elképzelnünk, hogy van valahol a világon egy számítógép, ami be van kapcsolva, és ő egy úgynevezett web-szerverként van „programozva”. Erre a „web típusú” szerverre valaki tartalmat tölt fel, ezen a szerveren tartalmat tesz elérhetővé mások számára, publikus módon.
A tartalom jelen esetben a jövő heti időjárás előrejelzés. Úgy kell elképzelni, hogy azért, hogy ez a tartalom éjjel-nappal elérhető legyen, ez
a világon bárhol lévő számítógép bizony ténylegesen folyamatosan be van kapcsolva – ez nem vicc.
Ahhoz viszont, hogy ezt a tartalmat elérjük, kell egy olyan eszközzel rendelkeznünk (pl. egy okostelefonnal), amin tudunk egy un. webböngésző-szoftvert „un. browser”-t futtatni, ez a program ugyanis képes lesz arra, hogy a hálózatra kliensként azaz ügyfélként csatlakozva a megfelelő paraméterek megadása után (jelen esetben weboldal internetes címe) lekérdezze és megjelenítse a vágyott tartalmat.
Tehát van két számítógép (2 eszköz). Az egyik folyamatosan üzemel, és tartalmat tesz elérhetővé, kérdés esetén válaszol. A másik igény esetén kérdéseket küld a szervernek, és a szervertől kapott válaszokat megjeleníti. Így működik a világ, így működik a webböngészés!
Minden alkalommal, amikor interneten keresztül egy szolgáltatást veszünk igénybe, egy tartalmat nyitunk meg, töltünk be, valójában kiszolgálók végeláthatatlan sokaságán át küldünk lekérdezéseket szerverparkokban üzemelő „kiszolgáló”-nak, akik a megfelelő szerverszolgáltatást biztosító szoftvereket futtatják.
Ha te weblapot szeretnél nézegetni, akkor webböngészővel csatlakozol egy webszerverre. Ha te egy internetes webáruházban nézegeted a termékeket, akkor egy weboldal mögé felállított termékadatbázis-szerverhez csatlakozol, és kérdezel le információkat. Ha te e-mailt olvasol, vagy küldesz, akkor egy levelező szerverre csatlakozol (pl. bejelentkezel g-mailbe).
Ha te Spotifyban zenét hallgatsz a telefonodon, akkor van a világban valahol egy szerver, ami az adatokat tárolja (ez egy vagy több valós vagy virtuális számítógép) és elérhetővé teszi, a te eszközöd, amin a zenét hallgatod pedig kliensként kérdezi le a kívánt tartalmat. Szóval nem bonyolult ez, na.
A kliens-szerver architektúra
Egy jól felállított kliens-szerver architektúrában az adat a szerver(ek)en tárolódik amelyek (általában sokkal erőteljesebb biztonsági ellenőrzéssel rendelkeznek és) jobban tudják szabályozni az erőforrásokhoz és adatokhoz való hozzáférést. Az adattárolás centralizált, könnyebb frissíteni az adatokat. Mit jelent ez? Képzeld el egyszerűen egy példán keresztül:
Ha van egy weblap, az fent van egy szerveren, azt egyszer kell frissíteni, és az összes kliens az új verzióhoz fog hozzáférni. Ha van egy központi tárhelyed a családi fotókkal, amint oda új tartalmat elhelyezel, az összes kliens (családtagok mobiltelefonjai) számára egyidejűleg elérhető centralizált tartalmat állítasz elő.
A szerver (az angol server szóból) vagy kiszolgáló az informatikában olyan (általában nagy teljesítményű) számítógépet vagy szoftvert jelent, ami más számítógépek számára a rajta tárolt vagy előállított adatok felhasználását, a szerver hardver erőforrásainak (például nyomtató, háttértárolók, processzor) kihasználását, illetve más szolgáltatások elérését teszi lehetővé.
https://hu.wikipedia.org/wiki/Szerver
A szerverek tehát biztosítják az integrált centralizációt (ugyanazok az adatok elérhetőek bárhonnan, és bárki által), az erőforrások megosztását (elvégeznek feladatokat a kliens-eszközeink helyett), a szünetmentes rendelkezésreállást (állandóan elérhetőek), az adatbiztonságot (biztonsági másolatok – külön téma lehetne).
Mindemellett biztosítják, hogy a rajtuk futó kiszolgálófunkciók alapján a kliensek megkapják, amit lekérdeztek. Manapság már egy helyi hálózatban funkcionalitástól és elképzeléstől függően szinte bármely eszköz lehet szerver, és kliens, az adott architektúra beállításától és koncepciójától, és a szoftveres ellátottságtól függően – más kérdés hogy nem minden eszköznek érdemes szervernek lennie.