3. rész – Programozás az AI korában
A könyvtáros
Az első részben megnéztük, hogyan indul a projekt, majd a második részben jobban is kibontottuk a témát.
Rendszerarchitektúra kész
A rendszerarchitektúra meghatározza, hogy milyen számítógépeket, és azon milyen készen elérhető szoftvereket fogunk alkalmazni.
Mielőtt mondok egy példát, tisztázzunk néhány fogalmat.
Az adatokat általában ún. adatbázisokban tárolják a szoftverrendszerek. Ezek olyan programok, amelyek sokszor külön gépen futnak, és nagyon gyorsan képesek a korábban eltárolt adatokat előkeresni. Mint valamilyen nagyon gyors könyvtáros, irattáros, vagy a rendőrös filmekből a bizonyítéktár munkatársa. Azon kívül, hogy gyorsan tud válaszolni olyan kérésekre, hogy a TN-12-345-XF ügy bizonyítékait kérem, olyanokra is fel van készülve, hogy kérem azon ügyek bizonyítékait, amikben John Hutchins volt a letartóztató rendőr, vagy Jane Henry ellen követtek el valamit… az ennél összetettebb kérésekről (lekérdezések) ne is beszéljünk.
Sok olyan rendszer létezik, amelynek az adatbázisok szolgáltatják a lelkét, de sosem elegendő ez önmagában. Ha másért nem, azért, mert a megjelenítéssel kapcsolatos igényeink túlmutatnak az adatbázisok által képviselt megoldáson. Szeretnénk az adatokat egy szép és gyors weboldalon látni, amit a webböngészőnkben nyitunk meg.
Ma jellemzően az a folyamat, hogy a webböngészőnkkel megnyitunk egy weboldalt, ami egy komplett program, ami a böngészőnkben fut (a „frontend”). Az egyes felhasználók böngészőiben futó a frontend programok kommunikálnak egy központi szerverprogrammal (a „backend”), ami pedig sok egyéb között adatokat olvas az adatbázisból vagy ír az adatbázisba, de végső soron a frontend számára előre feldolgozott adatokat nyújt.
A fenti frontend-backend-adatbázis felépítés esetében a rendszerünk határain kívül esik a felhasználó számítógépének összes problémája: ha a frontend program be tud töltődni valaki számítógépén (az összes nagy böngésző összes főbb verzióján), akkor mi már jól végeztük a dolgunkat.
A frontend program letöltését lehetővé tevő rendszerkomponenst és a backendet most együtt „webkiszolgálónak” fogom nevezni.
A terheléselosztó egy külön számítógép, aminek az a feladata, hogy a frontendektől érkező kéréseket több backend/webkiszolgáló között szétossza, és így azok terhelését egészséges szint alatt tartsa.
Jöjjön akkor a példa: A felhasználó kéréseit két különböző, egymástól többszáz kilométerre lévő adatközpontban lévő egy-egy terheléselosztó (NGINX nevű program) fogadja, egymással párhuzamosan úgy, hogy ha egyikük meghibásodik, akkor a teljes forgalmat képes elvinni a másik is. Webkiszolgálóból 2-2 darab van a két adatközpontban, és ezek kapcsolódnak egy „replikált” MySQL adatbázishoz (a fő adatbázis az egyik adatközpontban van, a replika (másolat) a másikban). Az adatbázisok napi mentéssel rendelkeznek egy harmadik adatközpontban, katasztrófa esetére.
A fenti rendszerarchitektúra több számítógépet is tartalmaz.
Ha kíváncsi vagy a folytatásra és a cikksorozat további részeire, iratkozz fel hírlevelünkre!
Ízelítő a továbbiakból:
- Szerverek és üzemeltetés
- Szoftverarchitektúra
- Programírás A-Z-ig
- Tesztelés és frissítések
- Mi változott az elmúlt 30 évben?
(Képek forrása: freepik, StudiCore, BingAI)
Igen, érdekel a folytatás!