DevOps útmutató kezdőknek

Mi a DevOps jelentősége, mit jelent az informatikusok számára, módszerek, keretrendszerek, eszközök leírása.

DevOps útmutató kezdőknek

Sok minden történt azóta, hogy a DevOps kifejezés elterjedt az IT-világban. Mivel az ökoszisztéma nagy része nyílt forráskódú, fontos újragondolni, miért kezdődött, és mit jelent az informatikai karrier szempontjából.

Mi az a DevOps

Bár nincs egységes definíció, úgy gondolom, hogy a DevOps egy olyan technológiai keretrendszer, amely lehetővé teszi a fejlesztői és az üzemeltetési csapatok közötti együttműködést, hogy gyorsabban telepítsék a kódot az éles környezetekben, iterálható és automatizálható. A cikk hátralévő részét ennek az állításnak a kibontásával töltjük.

A „DevOps” szó a „fejlesztés” és „művelet” szavak kombinációja. A DevOps segít az alkalmazások és szolgáltatások kézbesítési sebességének növelésében. Ez lehetővé teszi a szervezetek számára, hogy hatékonyan szolgálják ki ügyfeleiket, és versenyképesebbé váljanak a piacon. Egyszerűen fogalmazva, a DevOps a fejlesztési és informatikai műveletek összehangolása hatékonyabb kommunikációval és együttműködéssel.

A DevOps olyan kultúrát foglal magában, amelyben a fejlesztési, üzemeltetési és üzleti csapatok közötti együttműködés kritikus fontosságú. Ez nem csak az eszközökről szól, mivel a DevOps egy szervezetben folyamatosan az ügyfelek számára is előnyös. Ennek egyik pillére az eszközök, az emberek és a folyamatok mellett. A DevOps növeli a szervezetek azon képességét, hogy a lehető legrövidebb időn belül kiváló minőségű megoldásokat kínáljanak. A DevOps emellett minden folyamatot automatizál, a felépítéstől a telepítésig, az alkalmazásig vagy a termékig.

A DevOps-beszélgetés a fejlesztők, a megélhetésükért szoftvert író emberek és a szoftver karbantartásáért felelős üzemeltetők közötti kapcsolatra összpontosít.

Kihívások a fejlesztőcsapat előtt

A fejlesztők általában lelkesek és szívesen vezetnek be új megközelítéseket és technológiákat a szervezeti problémák megoldására. Ugyanakkor bizonyos problémákkal is szembesülnek:

  • A versenypiac nagy nyomást gyakorol a termék időben történő szállítására.
  • Gondoskodniuk kell a gyártásra kész kódok kezeléséről és új funkciók bevezetéséről.
  • A kiadási ciklus hosszú lehet, ezért a fejlesztőcsapatnak számos feltételezést kell tennie az alkalmazások bevezetése előtt. Ebben a forgatókönyvben több időre van szükség az éles vagy tesztkörnyezetbe történő telepítés során felmerülő problémák megoldásához.

A műveleti csapat előtt álló kihívások

Az operatív csapatok történelmileg az IT-szolgáltatások stabilitására és megbízhatóságára összpontosítottak. Ez az oka annak, hogy az operatív csapatok a stabilitásra törekednek az erőforrások, a technológiák vagy a megközelítések megváltoztatásával. Feladataik közé tartozik:

  • Kezelje az erőforrások elosztását a kereslet növekedésével.
  • Kezelje a termelési környezetben történő használathoz szükséges tervezési vagy testreszabási változtatásokat.
  • Diagnosztizálja és megoldja a termelési problémákat az alkalmazások önálló telepítése után.

Hogyan oldja meg a DevOps fejlesztési és üzemeltetési problémákat

Ahelyett, hogy nagyszámú alkalmazásfunkciót vezetnének be egyszerre, a vállalatok azt próbálják megvizsgálni, hogy egy sor kiadási iteráció révén képesek-e néhány funkciót kiadni ügyfeleiknek. Ennek a megközelítésnek számos előnye van, például jobb szoftverminőség, gyorsabb vásárlói visszajelzés stb. Ez pedig magas vevői elégedettséget biztosít. E célok elérése érdekében a vállalatok kötelesek:

  • Csökkentse a meghibásodási arányt új kiadások kiadásakor
  • Növelje a telepítés gyakoriságát
  • Gyorsabb átlagos helyreállítási idő elérése új alkalmazáskiadás esetén.
  • Csökkentse a korrekciókra fordított időt

A DevOps végrehajtja ezeket a feladatokat, és segít a megszakítás nélküli kézbesítés biztosításában. A szervezetek a DevOps segítségével olyan szintű termelékenységet érnek el, amely néhány évvel ezelőtt még elképzelhetetlen volt. Naponta több tíz, száz, sőt több ezer telepítést hajtanak végre, miközben világszínvonalú megbízhatóságot, stabilitást és biztonságot nyújtanak. (További információ a tételméretekről és hatásuk a szoftverszállításra).

A DevOps megpróbálja megoldani a múltbeli módszertanokból eredő különféle problémákat, többek között:

  • A munka elkülönítése a fejlesztési és üzemeltetési csapatok között
  • A tesztelés és az üzembe helyezés különálló fázisok, amelyek a tervezés és a felépítés után következnek be, és több időt igényelnek, mint az összeállítási ciklusok.
  • Túl sok időt töltenek a teszteléssel, telepítéssel és tervezéssel, ahelyett, hogy az alapvető üzleti szolgáltatások kiépítésére összpontosítanának
  • Kézi kódtelepítés, amely hibákhoz vezet a termelésben
  • A fejlesztési és üzemeltetési csapatok ütemtervének eltérései további késéseket okoznak

DevOps útmutató kezdőknek

Konfrontáció a DevOps, az Agile és a hagyományos IT között

A DevOps-t gyakran más informatikai gyakorlatokkal, különösen az Agile és a Waterfall IT-vel kapcsolatban tárgyalják.

Az Agile a szoftvergyártás alapelvei, értékei és gyakorlatai összessége. Így például, ha van egy ötlete, amelyet szoftverré szeretne alakítani, használhatja az Agilis elveket és értékeket. De ez a szoftver csak fejlesztői vagy tesztelési környezetben futhat. Egy egyszerű, biztonságos módszerre van szüksége a szoftver gyors és ismételhető éles üzembe helyezéséhez, ez pedig a DevOps eszközökön és technikákon keresztül vezet. Az agilis szoftverfejlesztés a fejlesztési folyamatokra összpontosít, a DevOps pedig a legbiztonságosabb és legmegbízhatóbb módon felelős a fejlesztésért és telepítésért.

A hagyományos vízesés modell és a DevOps összehasonlítása jó módja annak, hogy megértsük a DevOps előnyeit. A következő példa azt feltételezi, hogy az alkalmazás négy héten belül elérhető lesz, a fejlesztés 85%-ban befejeződött, az alkalmazás éles lesz, és a kód szállításához szükséges szerverek beszerzési folyamata még csak most kezdődött.

Hagyományos eljárások
A DevOps folyamatai

Az új szerverek megrendelése után a fejlesztőcsapat a tesztelésen dolgozik. A munkacsoport a vállalatok által az infrastruktúra kiépítéséhez szükséges kiterjedt dokumentáción dolgozik.
Az új szerverek megrendelése után a fejlesztői és üzemeltetési csapatok együtt dolgoznak a folyamatokon és a papírmunkán az új szerverek telepítéséhez. Ez lehetővé teszi, hogy jobban megértse infrastrukturális követelményeit.

A feladatátvétellel, a redundanciával, az adatközpontok elhelyezkedésével és a tárolási követelményekkel kapcsolatos információk hamisan jelennek meg, mivel a fejlesztőcsapat nem érkezett mélyreható tartományismerettel.
A feladatátvétellel, a redundanciával, a katasztrófa utáni helyreállítással, az adatközpontok elhelyezkedésével és a tárolási követelményekkel kapcsolatos részletek ismertek és helyesek a fejlesztőcsapat hozzájárulásának köszönhetően.

Az üzemeltetési csapatnak fogalma sincs a fejlesztőcsapat előrehaladásáról. Saját elképzelései alapján monitoring tervet is kidolgoz.

Az üzemeltetési csapat teljes mértékben tudatában van a fejlesztőcsapat előrehaladásának. Együttműködik a fejlesztőcsapattal is, és együtt dolgoznak egy olyan monitoring tervet kidolgozva, amely megfelel az informatikai és üzleti igényeknek. Alkalmazásteljesítmény-figyelő (APM) eszközöket is használnak.

Az alkalmazás indítása előtt végzett terhelési teszt az alkalmazás összeomlását okozza, ami késlelteti az indítást.
Az alkalmazás futtatása előtt elvégzett terhelési teszt gyenge teljesítményt eredményez. A fejlesztőcsapat gyorsan megoldja a szűk keresztmetszeteket, és az alkalmazás időben elindul.

DevOps életciklus

A DevOps bizonyos általánosan elfogadott gyakorlatok elfogadását foglalja magában.

Folyamatos tervezés

A folyamatos tervezés a lean elvekre támaszkodik, hogy kicsiben kezdje el azáltal, hogy azonosítja az erőforrásokat és kimeneteket, amelyek szükségesek az üzlet vagy a jövőkép értékének teszteléséhez, a folyamatos alkalmazkodáshoz, a fejlődés méréséhez, az ügyfelek igényeiből való tanuláshoz, az agilitáshoz igazodó irányváltáshoz és az üzleti terv újragondolásához.

Közös fejlesztés

Az együttműködésen alapuló fejlesztési folyamat lehetővé teszi, hogy a különböző időzónákban szétszórt vállalkozások, fejlesztőcsapatok és tesztelőcsapatok folyamatosan minőségi szoftvereket szállítsanak. Ez magában foglalja a többplatformos fejlesztést, a többnyelvű programozás támogatását, a felhasználói történetek létrehozását, az ötletfejlesztést és az életciklus-kezelést. Az együttműködési fejlesztés magában foglalja a folyamatos integráció folyamatát és gyakorlatát, amely elősegíti a gyakori kódintegrációt és az automatizált buildeket. A kód gyakori telepítésével egy alkalmazásban az integrációs problémák az életciklus korai szakaszában azonosíthatók (amikor könnyebben javíthatók), és a folyamatos visszacsatolás révén az átfogó integrációs erőfeszítés csökken, mivel a projekt folyamatos és látható előrehaladást mutat.

Folyamatos tesztelés

A folyamatos tesztelés csökkenti a tesztelés költségeit azáltal, hogy segít a fejlesztőcsapatoknak egyensúlyban tartani a sebességet a minőséggel. Ezenkívül a szolgáltatásvirtualizáció révén kiküszöböli a tesztelési szűk keresztmetszeteket, és egyszerűvé teszi a virtualizált tesztkörnyezetek létrehozását, amelyek könnyen megoszthatók, telepíthetők és frissíthetők a rendszer változásaival. Ezek a képességek csökkentik a tesztkörnyezetek kiépítésének és karbantartásának költségeit, valamint lerövidítik a tesztciklusok idejét, lehetővé téve az integrációs tesztelést az életciklus korábbi szakaszában.

Folyamatos kiadás és telepítés

Ezek a technikák egy alapvető gyakorlatot hoznak magukkal: a folyamatos kiadást és telepítést. Ezt a kulcsfontosságú folyamatokat automatizáló folyamatos csővezeték biztosítja. Csökkenti a kézi lépések számát, az erőforrások várakozási idejét és az átdolgozást azáltal, hogy egyetlen gombnyomással lehetővé teszi a telepítést, ami több kiadást, kevesebb hibát és teljes átláthatóságot eredményez.

Az automatizálás kulcsszerepet játszik a stabil és megbízható szoftverkiadás biztosításában. Az egyik legnagyobb kihívás a kézi folyamatok, például az összeállítás, a regresszió, a telepítés és az infrastruktúra létrehozása, átvétele és automatizálása. Ehhez forráskód-verziószabályozás szükséges; tesztelési és telepítési forgatókönyvek; infrastruktúra és alkalmazás konfigurációs adatok; valamint a könyvtárak és csomagok, amelyektől az alkalmazás függ. Egy másik fontos tényező az összes környezet állapotának lekérdezésének képessége.

Folyamatos megfigyelés

A folyamatos figyelés vállalati szintű jelentéskészítést tesz lehetővé, amely segít a fejlesztőcsapatoknak megérteni az alkalmazások elérhetőségét és teljesítményét éles környezetben, mielőtt azokat éles környezetben üzembe helyeznék. A folyamatos monitorozás által biztosított korai visszajelzés kritikus fontosságú a hibák költségeinek csökkentése és a projektek megfelelő irányba terelése szempontjából. Ez a gyakorlat gyakran magában foglal olyan megfigyelő eszközöket, amelyek jellemzően az alkalmazás teljesítményével kapcsolatos mutatókat tárják fel.

Folyamatos visszajelzés és optimalizálás

A folyamatos visszacsatolás és optimalizálás vizuálisan ábrázolja az ügyfelek áramlását, és pontosan meghatározza a problémás területeket. A visszajelzés az értékesítés előtti és utáni szakaszban is szerepelhet az érték maximalizálása és a még több tranzakció sikeres lezárása érdekében. Mindez azonnali vizualizációt biztosít a vásárlói problémák kiváltó okáról, amelyek befolyásolják viselkedésüket és üzleti hatásukat.

DevOps útmutató kezdőknek

A DevOps előnyei

A DevOps segíthet olyan környezet kialakításában, ahol a fejlesztők és a műveletek csapatként dolgoznak a közös célok elérése érdekében. Ennek a folyamatnak egy fontos mérföldköve a folyamatos integráció és folyamatos szállítás (CI/CD) megvalósítása. Ezek a technikák lehetővé teszik a csapatok számára, hogy a szoftvereket gyorsabban, kevesebb hibával vigyék piacra.

A DevOps fontos előnyei a következők:

  • Kiszámíthatóság: A DevOps lényegesen alacsonyabb hibaarányt kínál az új kiadásokhoz.
  • Karbantarthatóság: A DevOps egyszerű helyreállítást tesz lehetővé, ha egy új kiadás meghiúsul vagy egy alkalmazás leáll.
  • Reprodukálhatóság: A build vagy kód verzióvezérlése lehetővé teszi a korábbi verziók szükség szerinti visszaállítását.
  • Magasabb minőség: Az infrastrukturális problémák megoldása javítja az alkalmazásfejlesztés minőségét.
  • A piacra jutás ideje: A szoftverszállítás optimalizálása 50%-kal csökkenti a piacra jutás idejét.
  • Kockázatcsökkentés: A biztonság megvalósítása a szoftver életciklusában csökkenti a hibák számát az életciklus során.
  • Költséghatékonyság: A szoftverfejlesztés költséghatékonyságra való törekvése vonzó a felső vezetés számára.
  • Stabilitás: A szoftverrendszer stabilabb, biztonságosabb, a változások auditálhatók.
  • Nagyobb kódbázis felosztása kezelhető darabokra: A DevOps agilis fejlesztési módszereken alapul, ami lehetővé teszi egy nagy kódbázis kisebb, kezelhető darabokra bontását.

DevOps alapelvei

A DevOps elfogadása számos alapelvet eredményezett, amelyek fejlődtek (és fejlődnek tovább). A legtöbb megoldásszolgáltató kifejlesztette saját módosításait a különféle technikákhoz. Mindezek az elvek a DevOps holisztikus megközelítésén alapulnak, és bármilyen méretű szervezet használhatja őket.

Fejlesztés és tesztelés termeléshez hasonló környezetben

Az ötlet az, hogy a fejlesztési és minőségbiztosítási (QA) csapatok olyan rendszereket fejlesszenek és tesztelhessenek, amelyek éles rendszerekhez hasonlóan viselkednek, így már jóval azelőtt láthatják, hogyan viselkedik és hogyan teljesít az alkalmazás.

Az alkalmazást életciklusának lehető legkorábbi szakaszában a termelési rendszerekhez kell csatlakoztatni, hogy megoldja a három fő lehetséges problémát. Először is lehetővé teszi az alkalmazás tesztelését a valós környezethez közeli környezetben. Másodszor, lehetővé teszi az alkalmazás-szállítási folyamatok előzetes tesztelését és érvényesítését. Harmadszor, lehetővé teszi az üzemeltetési csapat számára, hogy az életciklus korai szakaszában tesztelje, hogyan viselkedik a környezetük az alkalmazások üzembe helyezésekor, ezáltal lehetővé téve számukra egy nagymértékben testreszabott, alkalmazásközpontú környezet létrehozását.

Üzembe helyezés megismételhető, megbízható folyamatokkal

Ez az elv lehetővé teszi a fejlesztői és üzemeltetési csapatoknak, hogy támogassák az agilis szoftverfejlesztési folyamatokat a szoftver teljes életciklusa során. Az automatizálás kritikus fontosságú az iteratív, megbízható és megismételhető folyamatok létrehozásához. Ezért a szervezetnek létre kell hoznia egy szállítási folyamatot, amely lehetővé teszi a folyamatos, automatizált telepítést és tesztelést. A gyakori üzembe helyezés lehetővé teszi a csapatok számára a telepítési folyamatok tesztelését is, ezáltal csökkentve a telepítési hibák kockázatát az élő kiadások során.

A munka minőségének ellenőrzése, ellenőrzése

A szervezetek jól figyelik az alkalmazásokat a termelésben, mert olyan eszközökkel rendelkeznek, amelyek valós időben rögzítik a mérőszámokat és a kulcsfontosságú teljesítménymutatókat (KPI). Ez az elv az életciklus korai szakaszában mozgatja a megfigyelést, biztosítva, hogy az automatizált tesztelés a folyamat korai szakaszában figyelje az alkalmazás funkcionális és nem funkcionális attribútumait. Amikor egy alkalmazást tesztelnek és telepítenek, a minőségi mutatókat meg kell vizsgálni és elemezni kell. A felügyeleti eszközök korai figyelmeztetést biztosítanak a gyártás során esetlegesen felmerülő működési és minőségi problémákra. Ezeket a mutatókat minden érdekelt fél számára hozzáférhető és érthető formátumban kell összegyűjteni.

A visszacsatolási hurkok javítása

A DevOps folyamatok egyik célja, hogy a szervezetek gyorsabban reagálhassanak és végrehajthassák a változtatásokat. A szoftverszállításban ez a cél megköveteli, hogy a szervezet korán visszajelzést kapjon, majd gyorsan tanuljon minden egyes megtett lépésből. Ez az elv megköveteli a szervezetektől, hogy olyan kommunikációs csatornákat hozzanak létre, amelyek lehetővé teszik az érdekelt felek számára a hozzáférést és a visszacsatolás útján történő interakciót. A fejlesztés megvalósítható a projekttervek vagy prioritások módosításával. A gyártás a termelési környezet javításával járhat el.

Dev

  • Tervezés: Kanboard, Wekan és más Trello alternatívák; GitLab, Tuleap, Redmine és más JIRA alternatívák; Mattermost, Roit.im, IRC és más Slack alternatívák.
  • Kód írása: Git, Gerrit, Bugzilla; Jenkins és más nyílt forráskódú eszközök CI/CD-hez
  • Összeszerelés: Apache Maven, Gradle, Apache Ant, Packer
  • tesztek: JUnit, uborka, szelén, Apache JMeter

Ops

  • Kiadás, bevezetés, műveletek: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper stb., Netflix Archaius, Terraform
  • Monitoring: Grafana, Prometheus, Nagios, InfluxDB, Fluentd és mások, amelyekről ebben az útmutatóban olvashat

(*A műveleti eszközöket a műveleti csoportok használatuk sorrendjében számozták, de az eszközeik átfedik a kiadási és telepítési eszközök életciklus-szakaszát. A könnyebb olvashatóság érdekében a számozást eltávolítottuk.)

Összefoglalva

A DevOps egy egyre népszerűbb módszer, amelynek célja, hogy a fejlesztőket és a műveleteket egyetlen egységként egyesítse. Egyedülálló, eltér a hagyományos informatikai műveletektől, és kiegészíti az Agile-t (de nem olyan rugalmas).

DevOps útmutató kezdőknek

Tudjon meg részleteket arról, hogyan szerezhet keresett szakmát a semmiből, vagy hogyan juthat magasabb szintre a készségek és a fizetés tekintetében, ha részt vesz a SkillFactory fizetett online tanfolyamain:

több tanfolyamot

hasznos

Forrás: will.com

Hozzászólás