Continuous Deployment (CD): A szoftverfejlesztés és kiadás modern stratégiája
A Continuous Deployment (CD) egy olyan szoftverfejlesztési stratégia, amely lehetővé teszi, hogy a kód változtatásai automatikusan kerüljenek ki a termelési környezetbe. Ez a megközelítés a fejlesztők számára számos előnnyel jár, emellett gyorsabb szállítást és visszajelzést biztosít. Cikkünkben most közelebbről is megismerkedünk az ún. folyamatos telepítés folyamatával. Megnézzük, hogy miben különbözik a folyamatos szállítástól és integriációtól. Megvizsgáljuk az előnyeit, valamint azt, hogy milyen eszközökkel történhet a megvalósítása.
Mi az a Continuous Deployment (CD)?
A Continuous Deployment – magyarul folyamatos telepítés – egy olyan automatizált folyamat, amely előre meghatározott tesztek sorozatára épül. Amint az új frissítések megfelelnek ezeknek a teszteknek, a rendszer automatikusan eljuttatja azokat a felhasználókhoz.
A folyamatos telepítéshez elengedhetetlen az automatikus regressziós tesztelés, ami kiváltja a költséges manuális tesztelési folyamatokat. Ezen felül a nagy volumenű változtatások kezeléséhez szükséges rendszerek – így például a kiadás tervezési és jóváhagyási meetingek – is többnyire szükségtelenné válnak.
A folyamatos telepítés nagymértékben támaszkodik az automatizálásra, hogy biztosítsa a változtatások következetes és megbízható telepítését.
Mik a Continuous Deployment előnyei?
A folyamatos telepítés számos előnnyel jár a fejlesztői csapatok számára, tekintsük most át ezeket!
Gyorsabb szoftverszállítás
A folyamatos telepítés legnagyobb előnye, hogy felgyorsítja a kódváltoztatások végrehajtását azáltal, hogy megszünteti minden szakaszban a fennálló szűk keresztmetszeteket. A kód minimális leállással kerül végrehajtásra, így a végfelhasználók gyorsabban élvezhetik az új funkciókat.
Gyorsabb visszajelzés
A gyakrabban frissített alkalmazások rövidebb visszajelzési ciklusokat eredményeznek az ügyfelekkel. A folyamatos telepítéssel egy fejlesztőnek vagy termékmenedzsernek csak néhány percet kell várnia, hogy figyelemmel kísérhesse a változtatások felhasználói viselkedésre vagy elköteleződésre gyakorolt hatását, és ennek megfelelően módosíthassa a terméket.
Csökkentett fejlesztési kockázatok
A folyamatos telepítés csökkenti a fejlesztési kockázatokat. Amikor a csapatok következetesen és gyakran integrálják a változtatásokat, jelentősen csökkentik a potenciális rizikókat, mivel mindig tisztában vannak a rendszer aktuális állapotával.
Csökkentett manuális folyamatok
A folyamatos telepítés ösztönzi a mérnököket, hogy a szoftverfejlesztési és kódkiadási folyamatokat a lehető legnagyobb mértékben automatizálják, beleértve a kiadás tesztelését is.
Az automatizáció lehetővé teszi a fejlesztők számára, hogy gyorsabban kerüljenek ki az új kiadások és időt takarítsanak meg a manuális folyamatokon.
Fokozott együttműködés
A folyamatos telepítés ösztönzi a csapatokat, hogy rendszeresen tegyenek észrevételeket, így a termék iterációk révén javítható és fejleszthető.
Continuous Delivery vs. Continuous Deployment vs. Continuous Integration
A Continuous Delivery vs. Deployment azért fontos kérdés, mert a két megközelítés sok tekintetben hasonlónak tűnhet, valójában azonban különböznek. Ezen kívül nagyon fontos beszélnünk a Continuous Integrationről is. A Continuous Delivery zökkenőmentességének biztosításához ugyanis elengedhetetlen a Continuous Integration.
Continuous Delivery (Folyamatos szállítás)
A Continuous Delivery során a szoftvert olyan módon fejlesztik, hogy bármikor kiadható legyen a termelési környezetbe. Ehhez a folyamat automatizált minőségbiztosítási tesztkörnyezeteket igényel, ahol az új build-ek automatikusan tesztelésre kerülnek. Ha a kód átmegy minden teszten, a kiadáshoz emberi jóváhagyás szükséges.
Continuous Deployment (Folyamatos telepítés)
Ezzel szemben a Continuous Deployment egy lépéssel tovább megy, és kiiktatja a manuális jóváhagyást. Itt a tesztek és a fejlesztők annyira megbízhatónak számítanak, hogy a termelési környezetbe való telepítés automatikusan megtörténik, amint a tesztek sikeresen lefutottak.
A folyamatos telepítés kiváló módja annak, hogy felgyorsítsuk a visszajelzési ciklust a felhasználókkal, és csökkentsük a csapatra nehezedő nyomást, mivel nincs többé kiadási időpont. A fejlesztők a szoftver építésére koncentrálhatnak.
Continuous Integration (Folyamatos integráció)
Ez a folyamat lehetővé teszi, hogy a fejlesztők hatékonyan kommunikáljanak a projekten végzett változtatásokról.
A fejlesztők gyakran a kód egy master branch, azaz mester ága alapján dolgoznak, de amikor különböző fejlesztők egyesítik a módosításaikat, funkcionális problémák és hibák léphetnek fel. A folyamatos integráció ezt úgy kezeli, hogy minden fejlesztő naponta legalább egyszer összevonja a kód változtatásait a központi adatbázisban. Az új frissítések során automatizált build tesztek futnak, biztosítva, hogy a változtatások kompatibilisek maradjanak a mester ággal.
ÉRDEMES TUDNI: A folyamatos integrációt, szállítást és telepítést együttesen folyamatos szoftverfejlesztésnek nevezzük, és az Agile és DevOps módszertanokhoz kapcsolódnak.
Hogyan kapcsolódnak egymáshoz ezek a gyakorlatok?
Egyszerűen összefoglalva, a folyamatos integráció része mind a folyamatos szállításnak, mind a folyamatos telepítésnek. A folyamatos telepítés pedig olyan, mint a folyamatos szállítás, azzal a különbséggel, hogy a kiadások automatikusan történnek.
Új projektek esetén, felhasználók nélkül
Ha egy új projektet indítunk felhasználók nélkül, könnyebb lehet minden commitot telepíteni a termelési környezetbe. Először is automatizálhatjuk a telepítéseket, és kiadhatjuk az alfa verziót a termelési környezetbe felhasználók nélkül. Ezután fokozatosan erősíthető a tesztelési kultúra, és növelhető a kódlefedettséget az alkalmazás építése során. Mire pedig készen állunk a felhasználók fogadására, egy kiváló folyamatos telepítési folyamatunk lesz, ahol minden új változtatás tesztelésre kerül a kiadás előtt.
Meglévő felhasználók esetében
Ha már vannak felhasználóink, akkor sokkal lassabban kell haladnunk, és először a folyamatos integrációval és folyamatos szállítással kell kezdeni.
Érdemes alapvető egységtesztekkel indulni, amelyek automatikusan lefutnak, nincs szükség bonyolult végpontok közötti tesztek futtatására. Ehelyett próbáljuk meg automatizálni a telepítéseket a lehető leghamarabb, és elérni azt a szintet, ahol a staging környezetbe történő telepítések automatikusan történnek.
Az automatikus telepítések révén így a tesztek javítására koncentrálhatunk, ahelyett, hogy időről időre megállnánk, hogy összehangoljuk a kiadásokat.
Napi szintű szoftverkiadás
Amennyiben napi szinten történik a szoftverek kiadása, áttérhetünk a folyamatos telepítésre. Fontos azonban meggyőződni róla, hogy a szervezet többi része is készen áll: dokumentáció, támogatás, marketing stb. Ezeknek a funkcióknak alkalmazkodniuk kell az új kiadási ütemhez, és fontos, hogy ne maradjanak le a jelentős változtatásokról, amelyek érinthetik a felhasználókat.
Milyen eszközökkel történik a Continuous Deployment?
A folyamatos telepítés hatékony megvalósításához a fejlesztőknek megfelelő eszközökre van szükségük. Ezek biztosítják az optimális kommunikációt a részlegek között, és minimalizálják a szoftverszállítási folyamatban előforduló hibákat.
A folyamatos telepítési csatornák hasonló eszközöket használnak, mint a folyamatos szállítás, de fokozott hangsúlyt fektetnek a kód tesztelésére a termelési környezetbe való telepítés előtt és után.
Jöjjön néhány fontos eszköz a folyamatos telepítési munkafolyamatban!
Folyamatos integrációs eszközök
A folyamatos integráció, a folyamatos telepítés kulcsfontosságú eleme, amely csökkenti a fejlesztési szűk keresztmetszeteket, amikor több fejlesztő dolgozik ugyanazon a projekten.
ESZKÖZÖK: AWS CodeBuild, CircleCI, Jenkins, Travis CI
Verziókezelő rendszerek
A verziókezelés segít a folyamatos integrációban azáltal, hogy nyomon követi a projektek változásait. Lehetővé teszi a csapatok számára a hatékony együttműködést, függetlenül attól, hogy hol és mikor dolgoznak, azáltal, hogy növeli a projekt frissítéseinek és változtatásainak láthatóságát.
A verziókezelő rendszerek kritikusak a folyamatos telepítéshez, mivel lehetővé teszik a felhasználók számára az új verziók nyomon követését és a kódváltoztatások kezelését.
ESZKÖZÖK: Git, Apache Subversion, Mercurial
Konfigurációkezelő eszközök
A konfigurációkezelés folyamata biztosítja, hogy minden szoftver és hardver állandó állapotban maradjon. Ez magában foglalhatja az összes szerver, hálózat, tároló és szoftver megfelelő konfigurálását és automatizálását.
ESZKÖZÖK: Ansible, Chef, Puppet
Monitorozó és megfigyelő eszközök
A folyamatos telepítési beállítások monitorozásának és incidenskezelésének a lehető legközelebb kell lennie a valós idejűhöz, hogy lerövidítse a helyreállítási időt a kódban felmerülő problémák esetén.
ESZKÖZÖK: Datadog, Elastic stack, Grafana, New Relic, Prometheus, Splunk
Konténerizációs és orkesztrációs eszközök
Néhány alkalmazást konténerekben lehet telepíteni, hogy izolálva legyenek a frissítések az alapul szolgáló infrastruktúrától. Konténerizációs eszközök lehetővé teszik az alkalmazások és függőségek hordozható formátumban való csomagolását, megkönnyítve a skálázást és telepítést.
ESZKÖZÖK: Amazon Elastic Container Service, Docker, Google Kubernetes Engine (GKE), Kubernetes
Telepítés automatizálási eszközök
A kódváltoztatások termelési környezetbe való telepítésének automatizálásához is már hatékony eszközök állnak rendelkezésre.
ESZKÖZÖK: AWS CodeDeploy, Azure DevOps, Google Cloud Build
Szeretné megalapozni vagy elmélyíteni gyakorlati tudását a SAFe® keretrendszerben? Szerezzen minősítést Certified SAFe® Program Consultant minősítésű szakembereink segítségével! Nézzen körül képzéseink között!