Tekintsük ehhez a szoftverkészítés tevékenységét a korszerű, agilis megközelítésben. Ez egy részfeladatok rendszeres ismétlésére épülő folyamat, mely magába foglalja szoftverfejlesztési életciklus minden elemét. Úgymint: tervezés, elemzés, programozás, futtatható formátumra hozás, egység tesztelés, átvételi tesztelés.
A programozási fázis utáni feladatok nagyban automatizálhatók, amire szükség is van ahhoz, hogy a tesztelés ne vonjon el emberi erőforrást a csapattól, valamint, hogy minél gyorsabb visszacsatolás érkezzen a fejlesztőkhöz a legutóbbi változtatások helyességéről. Ezek az automatikus lépések gyakorlatilag folyamatosan integrálják a fejlesztők által eszközölt forráskód módosításokat az alkalmazásba. Innen a fázis neve: Continuous Integration. Könnyen belátható, hogy ez a módszertan a hagyományos, vízesés jellegű metódusokhoz képest – ahol a visszacsatolásokra sokszor hónapokat kellett várni – sokkal rugalmasabb, alacsonyabb kockázatú, az üzleti környezet folyamatos változásaihoz sokkal könnyebben alkalmazkodni képes projekteket eredményez.
A Continuous Integration továbbgondolása a Continuous Delivery és a Continuous Deployment. A Continuous Delivery az újonnan a programba épített funkció elérhetővé tételét jelenti. Ennek keretében kitelepítik egy tesztszerverre – ez még nem az ügyfélé –, megint csak automatizáltan. Ez egy közbülső rendszer, ahol már a potenciális felhasználók is meg tudják nézni. Itt egyfajta minőségbiztosítási eljáráson esik át a funkció.
A Continuous Deployment pedig az utolsó fázis, amikor mindez – automatizmus útján – kikerül az éles rendszerre.
A cél az egész folyamat során az, hogy idejekorán és automatikusan minél pontosabban leteszteljük a programot. A rengeteg teszt lefuttatása azonban nagyon sok időt vesz igénybe, és nagymértékben leterheli a rendszert. Ehhez erőforrások kellenek.
És itt juthat ismét szerephez a Kubernetes.
Minthogy bizonyos folyamatok több erőforrást igényelnek, mások kevesebbet – a tesztek számától és jellegétől, a tesztelt rendszerelemek szükségleteitől, az automatizmusok párhuzamosítottságának mértékétől függően – dinamikusan kell a végrehajtásba bevont erőforrásokat skálázni. Ennek egyik lehetséges technológiája a konténerizáció, annak pedig egy jól működő, nyílt forrású támogató platformja a Kubernetes.
A feladat ugyanakkor csupán messziről tekintve tűnhet egyszerűnek, ahogy közelebb ér az ember, kiderül, hogy rendkívül komplex. Mint a repülés: jól néz ki, hogy csak felszállunk a gépre és az elrepít nyaralni, de közben a pilótafülke gombok százaiból áll. Itt is ez a helyzet. Könnyű elkezdeni a Kubernetes-szel dolgozni, de a hatékony használathoz már nagyon kell hozzá érteni.
A világ ugyanakkor erre tart.
A fejlesztői társadalom ugyanis valósággal „rácuppant”, hiszen ezzel a megoldással nagyon sok hasznos dolgot el lehet érni, amire eddig nem nyílt lehetőség. A kapcsolódó eszközök fejlődési üteme szédítő: havonta számos újdonság lát napvilágot a közösség jóvoltából, tovább könnyítve a használatát. Folyamatos tanulásban vagyunk.
Az ügyfelek pedig igazán elégedettek lehetnek.
A CI/CD koncepció gyakorlati alkalmazása ugyanis nagyban hozzájárul az erőforrások hatékonyabb kihasználásához, így profibb, kevesebb hibalehetőséget tartalmazó programot kap a megrendelő, kedvezőbb áron. Hiszen, mint említettem, minden változtatás azonnal tesztelésen esik át, nem veszítünk tehát időt, villámgyorsan zajlik a visszacsatolás. Míg korábban ahhoz is idő kellett, hogy az üzemeltető csapat kitegye a programot az éles rendszerre, itt ez most fel sem merül. A felhasználói élmény (user experience) is azonnal rendelkezésre áll.
Mindennek persze előfeltétele az agilitás. A korábbi, Vízesés modell még a hagyományos, hatvanas évekbeli mérnöki szemléletből – a felhőkarcolók, hidak, látványos beruházások idejéből – ered. A szoftveriparban azonban óriás pazarlás volt ezt alkalmazni, megérett hát az idő a paradigmaváltásra. Hiszen az ügyfél nem ér rá.
Mostantól nem is kell várnia.