Mi a DevOps?

Megtudhatja, hogyan egyesíti a DevOps az embereket, a folyamatokat és a technológiát ahhoz, hogy jobb termékeket lehessen gyorsabban szállítani.

A DevOps definíciója

A DevOps a „development” (azaz fejlesztés, Dev) és az „operations” (üzemeltetés, Ops) szavakból tevődik össze, és az emberek, a folyamatok és a technológia egyesülését jelenti, célja pedig az, hogy folyamatosan értéket lehessen kínálni az ügyfeleknek.

Mit jelent a DevOps a csapatok számára? A DevOps lehetővé teszi, hogy a korábban egymástól elszigetelten működő szerepkörök (a fejlesztési, az IT-üzemeltetési, a minőségmérnöki és a biztonsági) összehangoltan együttműködjenek, és így jobb és megbízhatóbb termékeket lehessen szállítani. A DevOps-kultúra, a DevOps-gyakorlatok és az ezekhez használható eszközök alkalmazásával a csapatok jobban reagálhatnak az ügyfelek igényeire, növelhetik az általuk fejlesztett alkalmazások megbízhatóságát, és gyorsabban képesek elérni az üzleti célokat.

A DevOps előnyei

A DevOps kultúráját, gyakorlatát és eszközeit használó csapatok kiváló teljesítményt nyújtanak, jobb termékeket hoznak létre gyorsabban, és javítják az ügyfelek elégedettségét. Ez a továbbfejlesztett együttműködés és hatékonyság abban is kulcsfontosságú szerepet játszik, hogy elérhessük az alábbi üzleti célokat:

Gyorsabb piacra jutás

Alkalmazkodás a piachoz és a versenyhez

A rendszer stabilitásának és megbízhatóságának fenntartása

A helyreállítás átlagos idejének javítása

A DevOps és az alkalmazás életciklusa

A DevOps hatással van az alkalmazás életciklusára a tervezési, a fejlesztési, a szállítási és az üzemeltetési szakaszokban. Minden fázis támaszkodik a többire, és egyik sem szerepkör-specifikus. A valódi DevOps-kultúrában valamilyen mértékben mindegyik szerepkör részt vesz mindegyik fázisban.

Felkészülés

A tervezési fázis során a DevOps-csapatok megismerik, definiálják és jellemzik az alkalmazás és a létrehozandó rendszer funkcióit és képességeit. Az előrehaladást mind alacsony, mind magas szintű részletességgel nyomon követik a különálló termékfeladatoktól kezdve az olyan feladatokig, amelyek több terméket magában foglaló portfólióra terjednek ki. A DevOps-csapatok által a rugalmasságot és a láthatóságot szem előtt tartó munkához használt módszerek között található egyebek mellett a hátralékok létrehozása, a hibák követése, az agilis szoftverfejlesztés Scrum és Kanban-táblák használatával, valamint az előrehaladás irányítópultokon történő vizuális megjelenítése is.

Fejlesztés

A fejlesztési fázishoz tartozik a kódolás minden aspektusa (az írás, a tesztelés, az ellenőrzés és a kód integrálása a csapattagok által), valamint ennek a kódnak a beépítése olyan munkadarabokba, amelyeket különféle környezetekben üzembe lehet helyezni. A DevOps-csapatok célja, hogy gyors innovációt végezhessenek anélkül, hogy ehhez fel kellene áldozniuk a minőséget, a stabilitást vagy az eredményességet. Ezért kiemelkedő hatékonyságú eszközöket használnak, automatizálják a hétköznapi és a manuális lépéseket, és kis lépésekben dolgoznak automatikus tesztelést és folyamatos integrációt használva.

Kézbesítés

A szállítás azt a folyamatot jelenti, amelynek során az alkalmazásokat éles környezetekben helyezzük üzembe konzisztens és megbízható módon. A szállítási fázisnak az is része, hogy üzembe helyezzük és konfiguráljuk a teljes mértékben irányított alapinfrastruktúrát, amely a környezetet alkotja.

A szállítási fázisban a csapatok a kiadáskezelési folyamatot egyszerűen érthető, manuális jóváhagyási szakaszokkal határozzák meg. Automatikus kapukat is beállítanak, amelyekkel az alkalmazásokat a szakaszok között lehet áthelyezni egészen addig, amíg azt az ügyfél rendelkezésére nem bocsátjuk. Ha automatizáljuk ezeket a folyamatokat, akkor azok skálázhatóak, megismételhetőek és irányíthatóak lesznek. Ilyen módon a DevOps-gyakorlatot használó csapatok egyszerűen, megbízhatóan és nyugodtan szállíthatnak nagyobb gyakorisággal.

Működtetés

Az üzemeltetési fázis része az éles környezeti alkalmazások karbantartása, monitorozása és hibaelhárítása. A DevOps-gyakorlatok bevezetésekor a csapatok gondoskodnak a rendszer megbízhatóságáról és a magas rendelkezésre állásról, és az a céljuk, hogy a biztonság és az irányítás megvalósítása közben egyáltalán ne legyen leállási idő. A DevOps-csapatok a problémákat még az előtt azonosítani szeretnék, mielőtt azok hatással lehetnének az ügyfelekre, és azokat a felmerülésük idején azonnal el szeretnék hárítani. Az ilyen fokú körültekintés mindenre kiterjedő telemetriát és döntéshez használható riasztásokat követel meg, és teljes láthatóságra van szükség mind az alkalmazásokra, mind a mögöttes rendszerre vonatkozóan.

DevOps-kultúra

Noha a DevOps-gyakorlatok automatizálják és optimalizálják a folyamatokat a technológián keresztül, minden a szervezeten belüli kultúrával kezdődik, és természetesen azokkal az emberekkel, akik ebben részt vesznek. A DevOps-kultúra bevezetéséhez mélyreható változások szükségesek a munkavégzésben és az együttműködésben. Ha azonban a szervezet bevezeti a DevOps-kultúrát, akkor olyan környezetet alakíthatnak ki, amelyben a csapatok nagy teljesítmény mellett képesek a fejlesztésre.

Együttműködés, láthatóság és összehangolás

Az egészséges DevOps-kultúra egyik alapvető mutatója a csapatok közötti együttműködés, amely a láthatósággal kezdődik. A különféle csapatok, például a fejlesztési és az IT-üzemeltetési csapatok megosztják egymással a DevOps-folyamataikat, a prioritásaikat és a problémáikat. A csapatoknak emellett együtt kell kidolgozniuk a munkaterveket is, és össze kell hangolniuk az üzlettel kapcsolatos célokat és sikerességi mutatókat is.

A hatókör és a felelősség kiterjesztése

A csapatok az összehangolásnál tulajdonosokká válnak, és részesei lesznek az életciklus további fázisainak is, nem pedig csak azoknak, amelyek a saját szerepkörükben a legfontosabb. A fejlesztők például nem csupán a fejlesztési fázisban előkerülő innovációért és minőségért felelősek, hanem azért a teljesítményért és stabilitásért is, amelyet az ő általuk végzett változások idéznek elő az üzemeltetési fázisban. Ugyanakkor az IT-üzemeltetők is ügyelnek rá, hogy a tervezési és fejlesztési fázisban felvegyék az irányítási, a biztonsági és a megfelelőségi szempontokat is.

Rövidebb kiadási ciklusok

A DevOps-csapatok rugalmassága annak köszönhető, hogy a szoftvereket ciklusokban adják ki. Rövidebb kiadási ciklusok használatával egyszerűbbé válik a tervezés és a kockázatkezelés, mivel az előrehaladás fokozatos, ami egyúttal a rendszer stabilitására gyakorolt hatást is csökkenti. A rövidebb kiadási ciklusok azt is lehetővé teszik, hogy a szervezet reagálni tudjon az újonnan megjelenő ügyféligényekre és a verseny nyomására.

Folyamatos tanulás

A kiváló teljesítményű DevOps-csapatok elkötelezettek a növekedés iránt. A fail fast megközelítés használatával építik be a tanulságokat a folyamatokba, és állandóan fejlődnek, javítják az ügyfél-elégedettséget, és felgyorsítják az innovációt és a piaci alkalmazkodást. A DevOps egy folyamat, így mindig van helye a növekedésnek.

Tekintse meg, hogy a Microsoft munkacsoportjai miképpen honosították meg a DevOps-kultúrát

További információ

DevOps-gyakorlatok

A DevOps-kultúra megalapozásán túl a csapatok a DevOps-t azzal is életre keltik, hogy bizonyos gyakorlatokat az alkalmazás életciklusának teljes egészén megvalósítanak. Ezek közül néhány egy-egy fázist segít felgyorsítani, automatizálni és javítani. Mások több fázisra is kiterjednek, és abban segítik a csapatokat, hogy gördülékeny folyamatokat hozhassanak létre, és ezzel javíthassák a hatékonyságot.

Folyamatos integráció és folyamatos teljesítés (CI/CD)

A folyamatos integráció egy szoftverfejlesztési gyakorlat, amelynek során a fejlesztők gyakran egyesítenek kódváltozásokat a fő kódágban. A folyamatos integráció automatikus tesztelést alkalmaz, amely minden olyan esetben lefut, amikor új kódot véglegesítenek, így a főágban lévő kód mindig stabil marad.

A folyamatos teljesítés azt jelenti, hogy az új alkalmazásverziókat gyakran és automatikusan helyezzük üzembe az éles környezetben. Az üzembe helyezés lépéseinek automatizálásával a csapatok csökkenteni tudják azoknak a problémáknak a számát, amelyek az üzembe helyezés során előfordulhatnak, és gyakoribb frissítéseket tesznek így lehetővé.

Ha mindkét gyakorlat használatban van, az így kapott folyamatot CI/CD-nek nevezzük, amely magában foglalja a kód véglegesítése és az éles környezeti üzembe helyezés közötti összes lépés automatizálását. A CI/CD megvalósításával lehetővé válik, hogy a csapatok a kódfejlesztésre koncentráljanak, és egyúttal kiküszöbölhetőek a manuális hétköznapi feladatok során előforduló emberi hibák. A CI/CD-nek köszönhetően az új kód üzembe helyezésének folyamata is gyorsabb és kevésbé kockázatos lesz. Az üzembe helyezések így gyakrabban és kisebb egységekben történnek, és ezzel a csapatok is rugalmasabbak, eredményesebbek és magabiztosabbak lehetnek a kód futtatását tekintve.

Verziókövetés

A verziókövetés a kód verziókban történő kezelési gyakorlata, azaz a változatok és a változási előzmények nyomon követése azzal a céllal, hogy a kódot könnyebb legyen áttekinteni és helyreállítani. Ezt a gyakorlatot általában verziókövetési rendszer használatával valósítják meg, például a Gittel, amely lehetővé teszi, hogy több fejlesztő működjön együtt a kód fejlesztésében. Ezek a rendszerek világosan átlátható folyamatot kínálnak arra, hogy egyesítsük az ugyanabban a fájlokban végbemenő kódváltozásokat, hogy az ütközéseket kezeljük, és hogy a változásokat korábbi állapotokra tudjuk visszaállítani.

A verziókövetés használata alapvető fontosságú a DevOps-gyakorlatban is, hiszen segíti a fejlesztői csapatokat az együttműködésben, hogy feloszthassák a kódolási feladatokat a csapattagok között, és hogy a kódot úgy tárolják, hogy azt szükség esetén egyszerűen lehessen visszaállítani.

A verziókövetés más gyakorlatokban is fontos szerepet kap, például a folyamatos integrációban és az infrastruktúra mint kódban is.

További információ a Gitről

Agilis szoftverfejlesztés

Az agilis egy szoftverfejlesztési megközelítés, amely a csapatok együttműködésére, az ügyfelek és a felhasználók visszajelzéseire, valamint arra helyezi a hangsúlyt, hogy rendkívül jól alkalmazkodjunk a változásokhoz a rövid kiadási ciklusok során. Az agilis megközelítést alkalmazó csapatok folyamatosan teszik elérhetővé a változásokat és a továbbfejlesztéseket az ügyfelek számára, visszajelzéseket gyűjtenek tőlük, és ezeket megfontolva igazításokat végeznek az ügyfelek kívánalmainak és szükségleteinek kielégítése céljából. Az agilis megközelítés alapvetően különbözik a többi, hagyományosabb módszertől, például a vízeséses megközelítéstől, amelyben hosszú kiadási ciklusok szerepelnek, melyeket egymásra épülő fázisok határoznak meg. Az agilis megközelítéshez kapcsolódó két népszerű keretrendszer a Kanban és a Scrum.

Az Agilis fejlesztés és a DevOps együttműködésének bemutatása

Infrastruktúra mint kód

Az infrastruktúra mint kód a rendszererőforrásokat és a topológiákat jellemezéssel definiálja, ami lehetővé teszi, hogy a csapatok ezeket az erőforrásokat úgy kezelhessék, ahogyan a kódot szokták. Ezek a definíciók tárolhatók és verziókövetéssel kezelhetők egy verziókövetési rendszerben is, ahol ellenőrizhetők és visszaállíthatóak, ismét csak a kódhoz hasonlóan.

Az infrastruktúra mint kód használata lehetővé teszi a csapatok számára, hogy a rendszer-erőforrásokat megbízható, megismételhető és irányított módon helyezzék üzembe. Az infrastruktúra mint kód ezen kívül segít az üzembe helyezések automatizálásában is, és csökkenti az emberi hibák kockázatát, különösen összetett és nagy környezetek esetén. A környezeti üzembe helyezésnek ez a megismételhető és megbízható megoldása lehetővé teszi a csapatok számára, hogy olyan fejlesztési és tesztelési környezetet tartsanak fenn, amely teljesen azonos az éles környezettel. Emellett a környezetek különböző adatközpontokba és felhőplatformokba való duplikálása is egyszerűbben és hatékonyabban elvégezhető.

Konfigurációkezelés

A konfigurációkezelés egy rendszerben az erőforrások állapotának a kezelését jelenti – ide tartoznak többek között a kiszolgálók, a virtuális gépek és az adatbázisok is. A konfigurációkezelési eszközök használatával a csapatok a változásokat irányított és szisztematikus módon tudják kibocsátani, és ezzel csökkenthető a rendszer-konfiguráció módosításának kockázata is. A csapatok a konfigurációkezelési eszközökkel a rendszerállapotot követik nyomon, és ezek segítenek nekik elkerülni a konfigurációeltéréseket is, azaz azt, hogy a rendszer erőforrás-konfigurációja idővel az előre definiált és kívánatos konfigurációtól eltérjen.

Ha ezt az infrastruktúra mind kóddal együtt használjuk, akkor egyszerűbben lehet sablonnal kezelni és automatizálni mind a rendszer-definíciót, mind a rendszer-konfigurációt, így a csapatok nagy méretek mellett is egyszerűbben tudnak összetett környezeteket működtetni.

Folyamatos felügyelet

A folyamatos monitorozás azt jelenti, hogy teljes körű, valós idejű láthatósággal rendelkezünk a teljes alkalmazásstack teljesítményére és állapotára vonatkozóan – az alkalmazást futtató mögöttes infrastruktúrától kezdve egészen a magas szintű szoftverösszetevőkig. Ennek a láthatóságnak a része a telemetriák és metaadatok gyűjteménye, valamint mindazok a riasztásbeállítások, melyek előre meghatározott feltételekre alapulnak, és amelyek az operátor figyelmét kívánják meg. A telemetria eseményadatokat és olyan naplókat tartalmaz, amelyek a rendszer különféle részeiből származnak, és amelyeket ott tárolunk, ahol azokat elemezni és lekérdezni is lehet.

A jól teljesítő DevOps-csapatok ügyelnek rá, hogy döntéshez használható és fontos riasztásokat állítsanak be, és hogy részletes telemetriát gyűjtsenek, hogy nagy mennyiségű adatokból nyerhessenek ki információkat. Ezek az információk segítenek abban, hogy a csapat valós időben foglalkozhasson a problémákkal, és hogy megtalálja a módját annak, hogy javítsa az alkalmazást a későbbi fejlesztési ciklusokban.

DevOps-eszközök

A csapatok számos olyan DevOps-eszközt használhatnak, amelyek segítenek kialakítani a DevOps-kultúrát a szervezetben. A legtöbb csapat egyszerre több eszközt is használ, és olyan egyéni eszközláncokat hoz létre, amelyek megfelelnek saját igényeiknek az alkalmazás életciklusának különféle fázisaiban. Noha az egyes eszközök vagy technológiák használatba vétele nem egyenlő a DevOps megvalósításával, mégis, ha a DevOps-kultúra már jelen van, és ha a folyamatok már definiálva vannak, a DevOps-gyakorlatok megvalósítását és testre szabását a megfelelő eszközök kiválasztásával lehet véghez vinni. A DevOps gyakorlati megvalósításához használható eszközök beszerzése:

A DevOps és a felhő

A felhőre való áttérés gyakorlatilag megreformálta azt a módot, ahogyan a csapatok az alkalmazásokat fejlesztik, üzembe helyezik és üzemeltetik. A DevOps használatával kiegészítve így a csapatoknak több lehetősége van arra, hogy javítsák gyakorlatukat, és hogy jobban kielégítsék az ügyfelek elvárásait.

A felhő rugalmassága

Mivel lehetővé válik, hogy gyorsan kiépíthetők és konfigurálhatóak legyenek a több régióra kiterjedő felhőkörnyezetek korlátlan erőforrásokkal, a csapatok rugalmassága is növekszik az alkalmazások fejlesztésénél. Ahelyett, hogy fizikai kiszolgálókat kellene vásárolni, konfigurálni és karbantartani, a csapatok komplex felhőkörnyezeteket hoznak létre percek alatt, és ha már nincs szükségük ezekre, akkor le is állíthatják őket.

Kubernetes

Ma, amikor egyre több alkalmazás használja a tárolótechnológiát, a Kubernetes egyre inkább olyan iparági megoldássá válik, amellyel nagy méretek mellett lehet tárolókat vezényelni. A Kubernetes korában a tárolók CI/CD-folyamatok használatával történő létrehozásának és üzembe helyezésének folyamata, valamint ezeknek a tárolóknak az éles környezeti monitorozása elengedhetetlen folyamatokká váltak.

Kiszolgáló nélküli számítástechnika

Mivel az infrastruktúra-kezelési feladatok többsége a felhőszolgáltatót terheli, a csapatok saját alkalmazásaikra fókuszálhatnak ahelyett, hogy az alapul szolgáló infrastruktúrával kellene foglalkozniuk. A kiszolgáló nélküli számítástechnika lehetővé teszi, hogy az alkalmazásokat anélkül lehessen futtatni, hogy kiszolgálót kellene konfigurálni és karbantartani. Egyes lehetőségek csökkentik az üzembe helyezés és az üzemeltetés bonyolultságát és az azzal járó kockázatokat is.

Kezdje el a DevOps-szal való ismerkedést

Mivel számos gyakorlat és megoldás létezik, a DevOps első látásra bonyolultnak tűnhet. A megoldás az, ha kis lépésekkel kezdi, és másoktól is tanul.

Gyakori kérdések

  • A DevOps a szervezeten belül különféle szerepkörökben használatos, és szükségessé teszi, hogy ezek szorosan együttműködjenek. A DevOps-szerepkörök között legtöbbször a fejlesztés, az IT, az üzemeltetés, a biztonság és a támogatás található.

    Ismerje meg, hogyan alakíthat ki DevOps-gyakorlatot.

  • A DevOps nem korlátozódik egyetlen szerepkörre. Mindenkinek, aki részt vesz az alkalmazás életciklusának egyes fázisaiban, magáévá kell tennie a DevOps-kultúrát. Egyes szervezeteknél van azonban néhány munkatárs vagy csapat, akiknek kizárólag az automatizálás, a gyakorlatok definiálása vagy a CI/CD-folyamatok megvalósítása a feladata. Ezeknek a szerepköröknek néha a DevOps-mérnök vagy a DevOps-specialista a hivatalos megnevezése.
  • Egy nagy szervezetnél rendkívül nehéz is lehet a DevOps bevezetése. Ahhoz, hogy megváltoztassuk egy nagy szervezet kulturális környezetét, és hogy szabványosítsuk a folyamatokat és az eszközöket, türelemre és kitartásra van szükség. A legtöbb nagy szervezetnél a DevOps-gyakorlatokat először csak korai felhasználóknál vezetik be. Amint ezek a gyakorlatok kiforrottabbá válnak, és már eredményeket érnek el vele, más csapatok is követik őket, és ők is elindulnak a DevOps bevezetésének útján.

    Ismerje meg, hogy a Microsoft különböző csapatai hogyan vezették be a DevOps kulturális környezetét.

  • A DevOps lényegi célja az, hogy folyamatos értéket tudjunk kínálni az ügyfeleknek. A DevOps bevezetésének eredményeit az üzleti célokkal összevetve kell mérni. A DevOps-csapatok ezeknek a céloknak rendelik alá a tevékenységeiket, és azokat rövid kiadási ciklusokban érik el. Ezek a ciklusok lehetővé teszik, hogy rugalmasan tudjunk reagálni a piaci történésekre, és hogy folyamatosan tanulni tudjunk az ügyfelek visszajelzéseiből.
  • Mind a DevOps, mind az agilis megközelítés modern szoftverfejlesztési keret, és mindkettőnek a termék, a piacra kerülés vagy a kiadás a célja. A DevOps egy kultúra, amely az együttműködést segíti elő a szoftverek fejlesztésében és karbantartásában részt vevő összes szerepkör között. Az agilis fejlesztés egy fejlesztési módszer, melynek célja, hogy fenntartsa a termelékenységet, és hogy a kiadásokat a változó igényekhez tudja igazítani. A DevOps és az agilis nem zárja ki egymást, és gyakran együtt is használják a kettőt.

    Ismerje meg, hogyan valósíthatja meg a DevOpsot és az agilis megközelítés.

  • A folyamatos integráció, a folyamatos szállítás és a folyamatos üzembe helyezés mellett használatosak olyan eljárások is, amelyekkel automatizálni lehet a szoftverszállítás fázisait.