Cloud-native backend architektúrák – melyiket szeressük?
Napjainkban a webes alkalmazásoknak egyre nagyobb követelményeknek kell megfelelni mind a teljesítmény, biztonság és a könnyű karbantarthatóság révén. A felhőalapú megoldások térhódításával új alternatív technológiák váltak elérhetővé a fejlesztők számára, hogy a mai elvárásoknak megfelelő megoldást tudjanak nyújtani.
Ebben a posztban áttekintjük, milyen lehetőségeink állnak rendelkezésre a felhőalapú backend fejlesztés terén.

Megoldandó kihívások a hagyományos backend architektúrákban
Először nézzük meg, hogy a klasszikus szoftverfejlesztési architektúrák esetében milyen kihívásokkal kell szembenéznünk. Manapság jellemzően monolith vagy microservice alapú megoldással találkozhatunk egy 3-tier alapú architektúrában.
Ezekben az esetekben az első, amivel szembetaláljuk magunkat, maga a telepítés, CI/CD és az üzemeltetés. A fejlesztőnek olyan tudásra is szükség lehet, amivel nem feltétlenül rendelkezik. Ilyen lehet például a PowerShell vagy az adott DevOps eszköz, futtató környezet komolyabb ismerete.
Egy telepítési folyamat másik fontos eleme a rollback esemény, arra az esetre, ha valamilyen hiba történik a telepítés során. Mind a telepítés, mind a rollback folyamat kialakítása meglehetősen komplex tud lenni attól függően, hogy az adott alkalmazás mennyire bonyolult.
Sok esetben az is elvárás a telepítési folyamattal szemben, hogy egy új verzió telepítése esetén a szolgáltatáskiesés a lehető legkisebb mértékű legyen.
Az elvárások közé tartozhat a skálázás is, ami bonyolult lehet vagy nem is lehet teljeskörűen megoldani, ezt több tényező is befolyásolhatja. Egy mai, modern webalkalmazás esetében a skálázhatóság az egyik legfontosabb kritérium, hogy azonnal képesek legyünk gond nélkül reagálni a megnövekedett felhasználásra.
Megoldási lehetőségek: Cloud-native backend architektúrák
A felhőalapú technológiák keresésekor hamar szembetűnik, hogy a különböző szolgáltatóknál megtalálható megoldások nagyban hasonlítanak egymásra, legyen az Google, Microsoft vagy Amazon. Ennek eredményeképpen a megfelelő technológia kiválasztásakor nem szükséges ismerni a különböző gyártóspecifikus beállításokat és funkciókat, elég csak ismerni a technológia alapjait, működési elvét.
Ennek a tudásnak a birtokában már meg tudjuk hozni azokat a döntéseket, amelyek alapján ki fogjuk tudni választani a számunkra megfelelő technológiát és architektúrát.
Miután kiválasztottuk, hogy mely megoldásokat szeretnénk használni a software kialakítása és a fejlesztés során, megvizsgálhatjuk a különböző gyártók által kínált egyedi funkciókat, árazást és ökoszisztémát.
A következőkben át fogunk nézni néhány lehetséges megoldási lehetőséget, amik jó alternatívák lehetnek a natív felhőalapú környezetben.
Functions-as-a-Service (FaaS)
Ez a technológia jelentősen eltér a hagyományos backend architektúráktól mind felépítésben, mind fejlesztési szemléletben. Míg egy klasszikus alkalmazás esetén a backend logikát egy egységben kezeljük, itt minden egyes funkció külön egységként készül és kerül telepítésre.
A legismertebb megoldások: Azure Functions, AWS Lambda és Google Cloud Functions. Ezek automatikusan kezelik a skálázást, az elérhetőséget és az eseményalapú futtatást – például HTTP kérés vagy időzített esemény esetén.
A funkciók egymástól függetlenül fejleszthetők és telepíthetők, ami jól illeszkedik a microservice architektúrákhoz. A technológia további előnye, hogy a funkciók csak akkor futnak, ha valóban szükség van rájuk – ez jelentős költségoptimalizálást eredményez.
Emellett könnyen integrálhatók más felhőszolgáltatásokkal, például eseménykezelő rendszerekkel vagy adatalapú szolgáltatásokkal. Ugyanakkor ez a megközelítés eltérő fejlesztési logikát és szemléletmódot igényel.
Container-based Services
Ha egy meglévő alkalmazást szeretnénk a felhőbe költöztetni, kézenfekvő megoldás lehet a konténerek használata. Ilyenkor az alkalmazás komponenseit például Docker segítségével konténerbe csomagoljuk, majd egy felhőszolgáltató platformján futtatjuk.
A legismertebb megoldások: Azure Container Apps, AWS App Runner, Google Cloud Run, illetve nagyobb kontroll esetén Azure Kubernetes Service (AKS), Amazon EKS, vagy Google Kubernetes Engine (GKE).
A konténeres megközelítés előnye, hogy egyedi futtatókörnyezetek is kialakíthatók. Különösen akkor előnyös ez, ha az alkalmazás nem futtatható natív PaaS vagy serverless környezetben, vagy ha komplexebb hálózati és konfigurációs igények merülnek fel.
Platform-as-a-Service (PaaS)
Ennek a megközelítésnek az a célja, hogy leegyszerűsítse az alkalmazások futtatását azáltal, hogy a fejlesztőnek nem kell a környezet konfigurálásával és üzemeltetésével foglalkoznia. A PaaS szolgáltatások – mint például az Azure App Service, Google App Engine vagy az AWS Elastic Beanstalk – automatikusan kezelik az infrastruktúrát, skálázást, verziókezelést és a folyamatos rendelkezésre állást.
A Container-based Services megoldáshoz képest a PaaS kevesebb konfigurációs lehetőséget ad, de jelentősen gyorsabb és egyszerűbb a bevezetése. Nem szükséges saját image-et építeni vagy orchestrátort fenntartani – ezzel szemben viszont kevésbé rugalmas a környezet beállítása, vagy az egyedi runtime igények támogatásában.
A PaaS elsősorban akkor ajánlott, ha a cél egy stabil, gyorsan bevezethető szolgáltatás, ahol az infrastruktúra rugalmassága nem elsődleges szempont és elegendőek a felhószolgáltatás által kínált eszközök.
Végszó
A cloud-native megközelítés nem csak technológiai irányzat, hanem szemléletváltás a modern backend fejlesztésben. A cél ma már nem csak az, hogy működő szolgáltatást szállítsunk, hanem az is, hogy azt rugalmasan, skálázhatóan és minimális üzemeltetési költséggel tudjuk működtetni.
A FaaS, konténeralapú és PaaS szolgáltatások különböző célokra optimalizált megoldások, amelyekből az igényeknek megfelelő architektúrákat alakíthatunk ki.
A különböző felhőszolgáltatók – legyen az Azure, AWS vagy Google Cloud – számos kapcsolódó szolgáltatást kínálnak, amelyekkel még tovább növelhetjük az alkalmazás rendelkezésre állását, automatizálhatjuk az üzembe állítást. Ezeket a komponenseket egymással kombinálva olyan ökoszisztémát építhetünk, amellyel sokkal gyorsabban tudunk válaszolni az új igényekre és az üzleti elvárásokra.
Önöknél a FaaS, a konténeralapú vagy a PaaS megközelítés vált be leginkább? Miért ne beszélgessünk a tapasztalataikról egy kávé mellett?

