A DevOps jelentése, működése. Hogyan vezessük be?

A DevOps jelentése, hogy a fejlesztés és üzemeltetés feladatait egységesítik

A DevOps jelentése, működése. Hogyan vezessük be?

A DevOps olyan gyakorlatok, eszközök összessége, amely egyesítik és automatizálják a szoftverfejlesztés és az üzemeltetés feladatait a teljes szolgáltatási életciklusban. A felhasználók felé történő értékteremtés, átadás így gyorsabbá válik, a felmerülő igényeket, hibákat fejlesztés, javítás után hamarabb tudja megkapni a felhasználó. Javul az elkészült szoftver minősége és ezzel a versenyképesség is. A legtöbb cég számára tehát nagyon előnyös lehet a DevOps bevezetése, ami sokszor mégis problémákba ütközik. 

A cikkben áttekintjük, hogy mi a DevOps jelentése, hogy néz ki a folyamata és mi az előnyei. Szó lesz a bevezetés nehézségeiről és pár tanácsot is adunk, hogy hogy érdemes belekezdeni.

A Grow modell a coaching egyik legsikeresebb eszköze

A DevOps jelentése

A DevOps kifejezés a Development (szoftverfejlesztés) és Operations (üzemeltetés) szavak kombinációja. Olyan gyakorlatok, eszközök összességét jelenti, amelyek egyesítik és automatizálják a szoftverfejlesztés és az üzemeltetés feladatait a teljes szolgáltatási életciklusban. 

A DevOps működése

A DevOps lényege, hogy az egész szolgáltatási életciklusban együtt dolgoznak a szoftverfejlesztők és az IT üzemeltetők. A cél, hogy a termék gyorsabban kerüljön élesítésre, és az elkészült termék minősége pedig magasabb legyen. Mivel ez a hagyományos szoftverfejlesztési modellektől teljesen eltérő megközelítés, szervezeti és kulturális változásokat is megkíván:

  • Központi elem a fejlesztést és üzemeltetést végző szakemberek szoros együttműködése
  • Nagyon lényeges a termék előállítási és átadási láncban szereplők közti folyamatos kommunikáció
  • Egyre hangsúlyosabb a technológiai automatizáció. 

A DevOps modellben a fejleszőcsapatok és az üzemeltetők már nem dolgozhatnak külön szervezeti egységben. Sok esetben a két csapat gyakorlatilag egybeolvad, a mérnökök pedig a tervezéstől, a fejlesztésen és tesztelésen át a teljes üzemeltetésig együtt dolgoznak. A csapat keresztfunkcionálissá válik és felelősséget vállal a termék egész életciklusáért.

A devops folyamatát végtelen hurokkal lehet szemléltetni

A DevOps életciklus

A DevOps életciklus 8 fázisból áll, amelyek a végén egymásba csatlakoznak, és újrakezdődnek. Éppen ezért a DevOps-ot a szakma gyakorlói egy végtelen hurokként szokták ábrázolni. A hurok bal oldala a fejlesztés fázisaiból, jobb oldala pedig az üzemeltetési fázisokból áll

A 8 fázis a következő: 

  • Plan – Tervezés
  • Code – Kódolás
  • Build – Építés
  • Test – Tesztelés
  • Release – Kiadás
  • Deploy – Telepítés
  • Operate – Működtetés
  • Monitor – Monitorozás

DevOps gyakorlatok

A DevOps működésének lelke a DevOps gyakorlatok elsajátítása és folyamatos alkalmazása. Lássuk, mitől más a DevOps! 

Folyamatos integráció (Continuous Integration – CI)

A folyamatos integráció azt jelenti, hogy a kódban történő változtatások vagy új kódok automatikusan akár naponta vagy naponta több alkalommal feltöltésre kerülnek a szoftverbe. 

Így az új build-ek azonnal elérhetővé válnak és nagyon gyorsan tesztelésre kerülnek. Ez segít a DevOps csapatoknak gyorsabbak kezelni a hibákat, javítani a szoftver minőségét és csökkenteni az új szoftverfrissítések validálásához és kiadásához szükséges időt. 

Folyamatos teljesítés (Continuous delivery) 

A folyamatos szállítás gyakorlatilag a folyamatos integráció kiterjesztésének tekinthető, mivel a kódmódosítások gyakran és automatikusan élesednek. Ennek következtében a felhasználók folyamatosan visszajelzéseket tudnak adni a legújabb verzióról, a fejlesztők pedig szükség szerint gyorsan tudnak módosítani vagy javítani a szoftveren. Így az elkészült szoftver a felhasználók valós idejű igényeit tudja kielégíteni, ami a versenyképességet nagy mértékben megnöveli. 

Automatizálás

Az automatizálás központi fontosságú a DevOps működésében, hiszen jelentősen képes megnövelni a jó minőségű szoftverek fejlesztésének és telepítésének sebességét. 

IaC – Infrastruktúra kódként kezelése

Az IaC túlmutat az infrastruktúra-konfiguráció egyszerű szkriptelésén, mivel az infrastruktúra definicióit valódi kódként kezeli, kódellenőrzést, teszteket alkalmaz, illetve a definíciók tárolhatók és szükség szerint visszaállíthatók. Ennek előnye, hogy verzióváltozás esetén felmerülő problémáknál lehetőség van a visszaállításra, amely óriási biztonságot ad. 

Microservice

A microservice vagy magyarul mikroszolgáltatás egy olyan architekturális technikát jelent, ahol egy monolitikus alkalmazás helyett az alkalmazás kisebb szolgáltatások gyűjteményeként épül fel. Ezek a mikroszolgáltatások egymástól függetlenül működtethetőek és telepíthetőek, valamint és egy interfészen keresztül kommunikálnak egymással. 

A gyakorlat legnagyobb előnye a rugalmasság, mivel a microservice gyakrabban és gyorsabban módosítható és fejleszthető,  illetve kis mérete miatt megnő a megbízhatósága is. 

Monitorozás

A DevOps csapatai a teljes fejlesztési életciklust figyelmmel kísérik, ami lehetővé  teszi a számukra, hogy gyorsan és automatikusan reagáljanak 

DevSecOps

A folyamatos integráció és szállítás és a nagyfokú automatizálás miatt nagyon fontos beleilleszteni a biztonságot. Ezt aktív biztonsági auditokkal és teszteléssel lehet megvalósítani az agilis és DevOps folyamatokban. 

DevOps eszközök

DevOps eszközök

A DevOps csapatok különböző eszközöket használnak arra, hogy automatizálják és felgyorsítsák a folyamatokat, illetve hogy teljesítsék a DevOps fő koncepcióit –  a folyamatos teljesítést, a folyamatos szállítást, az automatizációt és az együttműködést. 

A különböző Devops eszközök az egyes szakaszok kihívásainak megoldásában segítenek. Javítják az együttműködést, megelőzik a félreértéseket, segítenek automatizálni vagy a megfigyelhetőséget és megfigyelést könnyítik meg. 

Íme pár eszköz, amelyet érdemes megismerni annak, aki a DevOps modelben dolgozik: 

  • Verziókezelés, kódolás: Jira, Git (GitLab, GitHub, Bitbucket) 
  • Build tool: Maven
  • Release Tool: Jenkins, Travis, Bamboo
  • Konfiguráció menedzsment: Puppet, Ansible, Saltstack Chef
  • Container Platform: Docker, Kubernetes
  • Kommunikáció és együttműködés: Slack
  • Felhőalapú tárolás: AWS, Azure, Google Cloud Platform 
  • Monitorozás, riasztási és incidens-jelző rendszer: Appdynamics, Raygun, Spunk Cloud
  • Tesztelés: Selenium, Gremling
  • IT Ticketing: Servicenow
  • Status Service Updates: The Status Page

A DevOps előnyei

  • A folyamatos szállításnak köszönhetően sokkal gyorsabban fejlődő termék mind a fejlesztés, tesztelés, alkalmazás szintjén
  • A nagyobb együttműködésnek köszönhetően az elkészült szoftver sokkal ahhoz a környezethez van szabva, amelyben majd alkalmazásra kerül
  • A folyamatos hibajavításnak és új funkcióknak köszönhetően a szoftver folyamatosan aktualizálásra kerül, ezáltal elégedettebbek a felhasználók, nő a versenyképesség
  • Az olyan gyakorlatok, mint a folyamatos integráció és szállítás garantálja a változtatások működőképességét és biztonságosságát. A monitorozás pedig a teljesítményről nyújt valós idejű információkat

Milyen kihívásokkal jár a DevOps bevezetése? 

A DevOps bevezetése során a legnagyobb kihívás, hogy a régi bevésődött szokásokat átformáljuk a csapatok fejében. Ez gyakran ütközik ellenállásba, vagy sokszor csak egyszerűen nem áll össze a kép a munkatársak fejében. Mire kell figyelni?

  • Nagyon fontos, hogy a fejlesztés és üzemeltetés megszűnjön külön szervezeti egység lenni
  • Meg kell értetni, hogy a DevOps nem csak új eszközök bevezetéséről szól, hanem új kultúráról és látásmódról
  • A folyamatban résztvevőknek az egész értékláncot meg kell érteniük, az ötleteléstől a végfelhasználói élményig

További problémát jelenthet a mikroszolgáltatásokra való áttérés, amely bár gyorsabb termelést és innovációt ígér, de egyben megnövekedett terheléssel is jár. Éppen ezért nagyon fontos, hogy először szilárdan kiépítsük az automatizálás, konfigurációkezelés és folyamatos szállítási gyakorlatok alapjait. A csapatok kialakítása csak ezután következik, és utolsó lépés az eszközlánc kialakítása.

Tanácsok a DevOps bevezetéséhez

Először gondolkodjunk kicsiben!

A legegyszerűbb módja a DevOps bevezetésének, hogy egy kisebb értékláncot, például egy támogató alkalmazást vagy szolgáltatást válasszunk először ki. Ezen az értékláncon érdemes elkezdeni a DevOps gyakorlatok részének megismerését, tesztelését. 

Autonóm csapatok létrehozása

A DevOps további bevezetéséhez a szervezet részéről nagyfokú elkötelezettség szükséges, hogy megvizsgálja, megváltoztassa és esetlegesen megszűntessen bizonyos csapatokat, folyamatokat vagy eszközöket. A cél egy olyan rendszer kialakítása, amely megadja a csapatoknak a kellő autonómiát a fejlesztéshez és üzemeltetéshez anélkül, hogy nagyon erősen támaszkodniuk kellene más, külső csapatokra. 

Folyamatos tanulás

A DevOps megfelelő működésének előfeltétele, hogy ösztönözni kell a kísérletezést és a bizonyos mértékű kockázatvállalást. Olyan környezetet kell teremteni, ahol a csapattagok mernek különleges megoldásokat hozni és a kudarc elfogadott.

Kombinálás az agilis módszertanokkal

Az agilis módszertanok különösen népszerűek a szoftverfejlesztés területén. Népszerűségük fő oka, hogy az agilis csapatok eleve rugalmasak, jól szervezettek és képesek megfelelően reagálni a változásokra. Mindez tökéletesen illeszkedik a DevOps-hoz szükséges kulturális változáshoz, emiatt együtt alkalmazva az agilis és DevOps eszközöket rendkívül megnő a hatékonyság és megbízhatóság.

Ha kérdése van a DevOps működésével, implementálásával kapcsolatban vagy segítségre van szüksége, fejlesztői háttérrel rendelkező tanácsadó kollégáink a gyakorlatban is működő megoldásokat, támogatást képesek nyújtani. 

Vegye fel velünk a kapcsolatot! 

info@promanconsulting.hu