Mi a DevOps fontossága, mit jelent ez az IT-szakemberek számára, valamint a módszerek, keretrendszerek és eszközök leírása.

Sok minden történt azóta, hogy a DevOps kifejezés megszilárdult az IT világában. Figyelembe véve, hogy az ökoszisztéma nagy része nyílt forráskódú, fontos felülvizsgálni, hogy miért indult ez el és mit jelent ez az IT karrier szempontjából.
Mi az a DevOps
Bár nincs egyetlen definíció, úgy vélem, a DevOps egy technológiai keretrendszer, amely biztosítja a kapcsolatot a fejlesztői és az üzemeltetési csapatok között, lehetővé téve a kód gyorsabb telepítését a gyártási környezetekben, ismételhető lépésekkel és automatizálással. A cikk hátralévő részét arra szánjuk, hogy kibontsuk ezt az állítást.
A "DevOps" szó a "fejlesztés" (development) és az "üzemeltetés" (operations) szavak egyesítésével jött létre. A DevOps segít növelni az alkalmazások és szolgáltatások szállításának sebességét. Ez lehetővé teszi a szervezetek számára, hogy hatékonyan kiszolgálják ügyfeleiket és versenyképesebbé váljanak a piacon. Egyszerűbben fogalmazva, a DevOps a fejlesztés és az IT üzemeltetés közötti összhangot jelenti, hatékonyabb együttműködés mellett.
A DevOps egy olyan kultúrát feltételez, amelyben a fejlesztői, üzemeltetői és üzleti csapatok közötti együttműködés kritikus jelentőségű aspektusnak számít. Ez nem csak az eszközökről szól, hiszen a DevOps a szervezeten belül folyamatosan előnyöket nyújt az ügyfeleknek is. Az eszközök az egyik pillérét képezik, a személyekkel és folyamatokkal együtt. A DevOps növeli a szervezetek képességét, hogy magas színvonalú megoldásokat biztosítsanak a lehető legrövidebb időn belül. Emellett a DevOps automatizál minden folyamatot, a buildtől kezdve a telepítésig, legyen szó alkalmazásról vagy termékről.
A DevOps-ról folytatott diskurzus a fejlesztők, azaz a szoftvereket életükben író emberek, és az üzemeltetők, akik ezért a szoftverért felelősek, közötti kapcsolatokra összpontosít.
Kihívások a fejlesztői csapat számára
A fejlesztők jellemzően lelkesedéssel és vágyakozással alkalmaznak új megközelítéseket és technológiákat a szervezetek problémáinak megoldására. Ugyanakkor bizonyos problémákkal is szembe kell nézniük:
- A versenyképes piac nagy nyomást gyakorol a termék időben történő szállítására.
- Gondoskodniuk kell a termelésre kész kód kezeléséről és új lehetőségek bevezetéséről.
- A kiadási ciklus hosszú lehet, ezért a fejlesztő csapatnak több feltételezést kell tennie, mielőtt alkalmazásokat vezetnek be. Ilyen forgatókönyvben nagyobb időtartamra van szükség a problémák megoldásához, amelyek a termelési vagy tesztkörnyezetbe való telepítés során merülnek fel.
A működési csoportok által szembesülő problémák
A működési csoportok történelmileg az informatikai szolgáltatások stabilitására és megbízhatóságára összpontosítanak. Ezért a működési csapatok arra törekednek, hogy stabilitást találjanak a források, technológiák vagy megközelítések módosításával. Feladataik közé tartozik:
- Az erőforrások elosztásának kezelése a kereslet növekedése során.
- A termelési környezetben végrehajtásra szoruló tervezési vagy beállítási változások kezelése.
- Problémák diagnosztizálása és megoldása a termeléssel kapcsolatban, miután az alkalmazásokat önállóan telepítették.
Hogyan oldja meg a DevOps a fejlesztési és üzemeltetési problémákat
Ahelyett, hogy rengeteg alkalmazásfunkciót egy időben vezetnének be, a vállalatok próbálják megérteni, hogy kis mennyiségű funkciót tudnak-e telepíteni ügyfeleik számára egy sor kiadási iteráción keresztül. Ennek a megközelítésnek számos előnye van, például jobb szoftverminőség, gyorsabb visszajelzés az ügyfelektől stb. Ez viszont magas szintű ügyfél-elégedettséget biztosít. E célok eléréséhez a vállalatoknak:
- Csökkenteni kell az új kiadások visszautasítási arányát
- Növelni kell a telepítések gyakoriságát
- Gyorsabb átlagos helyreállítási időt kell elérni egy új alkalmazáskiadás esetén.
- Csökkenteni kell a javításokra fordított időt
A DevOps mindezeket a feladatokat ellátja, és segít a zökkenőmentes szállítás biztosításában. A szervezetek a DevOps-t használják olyan teljesítményszintek elérésére, amelyek néhány éve még elképzelhetetlenek voltak. Napi tucatnyi, száz vagy akár ezer telepítést végeznek el, miközben világszínvonalú megbízhatóságot, stabilitást és biztonságot biztosítanak. és hatásukról a szoftver szállítására).
A DevOps próbálja megoldani a régi módszerek alkalmazásából adódó különféle problémákat, többek között:
- A fejlesztő- és üzemeltetőcsapatok elszigetelt munkája
- A tesztelés és telepítés külön fázisokban zajlik, melyek a tervezés és az összeállítás után következnek, és több időt vesznek igénybe, mint az összeállítási ciklusok.
- Túlzott időráfordítás a tesztelésre, telepítésre és tervezésre ahelyett, hogy a fő üzleti szolgáltatások létrehozására összpontosítanánk
- Kód manuális telepítése, ami hibákhoz vezet a termelésben
- A fejlesztési és üzemeltetési csoportok munkaidőbeli eltérése, ami további késedelmekhez vezet

DevOps, Agile és hagyományos IT ellentéte
A DevOps gyakran más IT gyakorlatokkal kapcsolatban is szóba kerül, különösen a rugalmas és vízesés struktúrájú IT-vel.
Az Agile egy szoftverfejlesztési elveket, értékeket és módszereket tartalmazó keretrendszer. Például, ha van egy ötleted, amit szoftverré szeretnél átalakítani, akkor alkalmazhatod az Agile elveit és értékeit. Azonban ez a szoftver csak fejlesztési vagy tesztelési környezetben működik. Szükséged van egy egyszerű és biztonságos módra, hogy gyorsan és magas ismételhetőséggel telepíthesd a szoftvert a termelési környezetbe, és az út a DevOps eszközein és módszerein keresztül vezet. A rugalmas szoftverfejlesztési módszertan a fejlesztési folyamatok köré összpontosít, míg a DevOps felelős a fejlesztésért és a telepítésért - a legbiztonságosabb és legmegbízhatóbb módon.
A hagyományos vízesés modell és a DevOps összehasonlítása jó módja annak, hogy megértsük a DevOps által nyújtott előnyöket. A következő példában feltételezzük, hogy az alkalmazást négy hét múlva indítjuk, a fejlesztés 85%-ban elkészült, az alkalmazást elindítják, és a szerverek beszerzési folyamata, hogy a kódot átkonfigurálják, éppen most kezdődött.
Hagyományos folyamatok
Folyamatok a DevOps-ban
Az új szerverek megrendelése után a fejlesztőcsapat a tesztelésen dolgozik. Az üzemeltetési csoport az infrastruktúra telepítéséhez szükséges kiterjedt dokumentáción dolgozik.
A megrendelés követően az új szerverekhez a fejlesztői és üzemeltetői csapatok közösen dolgoznak a folyamatokon és a dokumentációs folyamatokon az új szerverek telepítésére. Ez lehetővé teszi a infrastruktúrára vonatkozó követelmények jobb megértését.
Torzul a helyreállításra, a redundanciára, az adatközpontok elhelyezkedésére és a tárolási követelményekre vonatkozó információ, mivel hiányoznak az adatok a fejlesztői csapattól, amely mély ismeretekkel bír a felhasználás terén.
A hibaátlépésre, redundanciára, katasztrófa-helyreállításra, az adatközpontok elhelyezkedésére és a tárolási követelményekre vonatkozó részletes információk ismertek és helyesek a fejlesztői csapat hozzájárulásának köszönhetően.
A műveleti csoport nem rendelkezik információval a fejlesztői csapat előrehaladásáról. Emellett saját elképzelései alapján dolgozza ki a monitoring tervet.
A műveleti csoport teljesen tisztában van a fejlesztői csapat által elért előrelépéssel. Ezenkívül együttműködik a fejlesztői csapattal, és közösen kidolgozzák a monitoring tervet, amely megfelel az IT és az üzleti igényeknek. Emellett alkalmazás teljesítménymonitorozó eszközöket használnak.
A terheléspróba, amelyet az alkalmazás indítása előtt végeznek el, az alkalmazás összeomlásához vezet, ami késlelteti annak indítását.
A terheléspróba, amelyet az alkalmazás indítása előtt végeznek el, a teljesítmény csökkenéséhez vezet. A fejlesztői csapat gyorsan orvosolja a szűk keresztmetszeteket, és az alkalmazás időben elindul.
DevOps életciklus
A DevOps bizonyos elterjedt gyakorlatok elfogadását jelenti.
Folyamatos tervezés
A folyamatos tervezés a karcsúsági elvekre épít, hogy kicsiben kezdjen, meghatározza az üzleti érték vagy vízió ellenőrzéséhez szükséges forrásokat és eredményeket, folyamatosan alkalmazkodik, méri az előrehaladást, tanulmányozza az ügyféligényeket, szükség szerint irányt változtat a mozgékonyság figyelembevételével, valamint frissíti az üzleti tervet.
Közös fejlesztés
A közös fejlesztési folyamat lehetővé teszi a vállalkozások, a fejlesztőcsapatok és a tesztelőcsapatok számára, hogy különböző időzónákban folyamatosan szállítsanak minőségi szoftvereket. Ide tartozik a többplatformos fejlesztés, a különböző nyelveken történő programozás támogatása, a felhasználói történetek létrehozása, ötletelés és az életciklus menedzsment. A közös fejlesztés folyamata és gyakorlata a folyamatos integrációval jár, ami elősegíti a kód gyakori integrációját és automatikus összeállítását. A kód gyakori bevezetésével az integrálási problémák a életciklus korai szakaszában kerülnek felszínre (amikor könnyebb javítani őket), és a közös integrációs erőfeszítések csökkennek a folyamatos visszajelzésnek köszönhetően, mivel a projekt folyamatos és szembetűnő előrehaladást mutat.
Folyamatos tesztelés
A folyamatos tesztelés csökkenti a tesztelés költségeit, segítve a fejlesztőcsapatokat az egyensúly megtartásában a sebesség és a minőség között. Ezenkívül megszünteti a tesztelési szűk keresztmetszeteket a szolgáltatások virtualizálásával, és megkönnyíti a virtualizált tesztkörnyezetek kialakítását, amelyeket könnyen meg lehet osztani, telepíteni és frissíteni a rendszerek változásaival. Ezek a lehetőségek csökkentik a tesztkörnyezetek inicializálásának és karbantartásának költségeit, valamint csökkentik a tesztelési ciklus időtartamát, lehetővé téve az integrációs tesztelést az életciklus korai szakaszaiban.
Folyamatos kiadás és telepítés
Ezek a módszerek magukkal hozzák az egyik alapvető gyakorlatot: a folyamatos kiadást és telepítést. Ez biztosítja a folyamatos csatornát, amely automatizálja a kulcsfontosságú folyamatokat. Csökkenti a kézi műveletek számát, a források várakozási idejét és a visszavételek mennyiségét, lehetővé téve a telepítést egy gombnyomással, ami nagyobb kiadásokat, kevesebb hibát és teljes átláthatóságot biztosít.
Az automatizálás kulcsszerepet játszik a szoftverkiadás stabil és megbízható biztosításában. Az egyik legfontosabb feladat a kézi folyamatok, mint például a felépítés, regresszió, telepítés és az infrastruktúra létrehozása, automatizálása. Ehhez szükség van a forráskód verziókezelésére; tesztelési és telepítési szkriptekre; információkra az infrastruktúráról és az alkalmazások konfigurációjáról; valamint az alkalmazás működéséhez szükséges könyvtárakra és csomagokra. Egy másik fontos tényező a környezetek állapotának lekérdezésének képessége.
Folyamatos monitorozás
A folyamatos monitorozás biztosítja a vállalati szintű jelentések kialakítását, amelyek segítenek a fejlesztői csapatoknak megérteni az alkalmazások elérhetőségét és teljesítményét a termelési környezetben, még mielőtt azokat élesbe telepítenék. A korai visszajelzés, amelyet a folyamatos monitorozás biztosít, döntő fontosságú a hibák költségeinek csökkentésében és a projektek helyes irányba terelésében. Ez a gyakorlat gyakran olyan megfigyelőeszközöket foglal magában, amelyek általában az alkalmazások teljesítményével kapcsolatos mutatókat fednek fel.
Folyamatos visszajelzés és optimalizálás
A folyamatos visszajelzés és optimalizálás vizuális képet ad a vásárlói áramlásról és pontosan azonosítja a problémás területeket. A visszajelzés mind a pre-sales, mind a post-production szakaszokban beépíthető, hogy maximalizálja az értéket és biztosítsa még több tranzakció sikeres befejezését. Mindez azonnali vizualizációt biztosít a vásárlói problémák okairól, amelyek befolyásolják a viselkedésüket és a vállalkozásra gyakorolt hatásukat.

A DevOps előnyei
A DevOps elősegítheti egy olyan környezet megteremtését, ahol a fejlesztők és az üzemeltetők egy csapatként dolgoznak 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) bevezetése. Ezek a módszerek lehetővé teszik a csapatok számára, hogy gyorsabban hozzák forgalomba a szoftvert kevesebb hibával.
A DevOps fontos előnyei:
- Előreláthatóság: A DevOps jelentősen alacsonyabb hibaarányt kínál új verziók kiadása során.
- Karbantartás: A DevOps biztosítja az új verziók vagy alkalmazások leállása esetén a könnyű visszaállítást.
- Reprodukálhatóság: A build vagy kód verziókezelő rendszere lehetővé teszi korábbi verziók helyreállítását szükség szerint.
- Magasabb minőség: Az infrastruktúra problémáinak megoldása javítja az alkalmazásfejlesztés minőségét.
- Piacra jutási idő: A szoftverszállítás optimalizálása 50%-kal csökkenti a piacra jutási időt.
- Kockázatcsökkentés: A szoftver életciklusa során végzett biztonsági intézkedések csökkentik a hibák számát.
- Költséghatékonyság: A szoftverfejlesztés iránti költséghatékonyságra való törekvés vonzza a felső vezetést.
- Stabilitás: A szoftverrendszer stabilabb, biztonságosabb, és a változtatásokat ellenőrizni lehet.
- A nagyobb kódbázis kezelhető részekre oszlik: A DevOps a rugalmas fejlesztési módszerekre épül, amelyek lehetővé teszik a nagy kódbázis kisebb és kezelhetőbb részekre bontását.
DevOps alapelvek
A DevOps elfogadása számos elvet hozott létre, amelyek fejlődtek (és továbbra is fejlődnek). A legtöbb megoldásszolgáltató saját módszereinek különböző módosításait dolgozta ki. Mindezek az elvek a DevOps holisztikus megközelítésén alapulnak, és bármilyen méretű szervezet számára alkalmazhatók.
Fejleszd és teszteld olyan környezetben, amely hasonló a termelési környezethez
A lényeg az, hogy lehetővé tegyük a fejlesztőcsapatok és a minőségellenőrzési (QA) szakemberek számára, hogy olyan rendszereket fejlesszenek és teszteljenek, amelyek úgy viselkednek, mint a termelési rendszerek, így már jóval a telepítés előtt láthatják, hogyan működik az alkalmazás.
Az alkalmazásnak a lehető leghamarabb csatlakoznia kell a termelési rendszerekhez a ciklus életének során, hogy három fő potenciális problémát megoldhasson. Először is, lehetővé teszi, hogy az alkalmazást valósághoz közeli környezetben teszteljük. Másodszor, lehetőséget ad az alkalmazás átadásának folyamataira vonatkozó tesztelésre és ellenőrzésre előre. Harmadszor, lehetőséget ad az üzemeltetési csapat számára, hogy a ciklus korai szakaszában ellenőrizze, hogyan fog viselkedni a környezet, amikor az alkalmazásokat üzembe helyezik, ezáltal lehetővé téve számukra, hogy egy finoman hangolt, alkalmazásorientált környezetet alakítsanak ki.
Kibővítés reprodukálható, megbízható folyamatokkal
Ez az elv lehetővé teszi a fejlesztői és üzemeltetési csapatok számára, hogy rugalmas szoftverfejlesztési folyamatokat tartsanak fenn a teljes életciklus során. Az automatizálás kulcsszerepet játszik az iteratív, megbízható és reprodukálható folyamatok kialakításában. Ennek következtében a szervezetnek ki kell alakítania egy szállítási csatornát, amely folyamatos automatizált telepítést és tesztelést biztosít. A gyakori telepítések lehetővé teszik a csapatok számára, hogy teszteljék a telepítési folyamatokat, csökkentve ezzel a valós kibocsátások során fellépő telepítési hibák kockázatát.
Ellenőrzés és munkaminőség nyomon követése
A szervezetek jól teljesítenek az alkalmazások termelésbeli nyomon követésében, mert rendelkeznek olyan eszközökkel, amelyek valós időben rögzítik a mutatókat és a kulcsfontosságú teljesítménymutatókat (KPI). Ez az elv a nyomon követést a ciklus korai szakaszaiba helyezi át, biztosítva, hogy az automatizált tesztelés figyelemmel kíséri az alkalmazás funkcionális és nem funkcionális attribútumait a folyamat korai szakaszaiban. Valahányszor az alkalmazást tesztelik és telepítik, a minőségi mutatókat át kell tekinteni és elemezni kell. A nyomon követő eszközök korai figyelmeztetést biztosítanak a működtetéssel és a minőséggel kapcsolatos problémákra, amelyek a termelés során felmerülhetnek. Ezeket a mutatókat olyan formátumban kell összegyűjteni, amely minden érdekelt fél számára hozzáférhető és érthető.
Visszajelzési ciklusok fejlesztése
A DevOps processes egyik célja, hogy lehetővé tegye a szervezetek számára a gyorsabb reagálást és a változtatások végrehajtását. A szoftver szállítása esetén ez a cél megköveteli, hogy a szervezet korai szakaszban visszajelzést kapjon, majd gyorsan tanuljon minden egyes lépésből. Ez az elv megköveteli, hogy a szervezetek olyan kommunikációs csatornákat hozzanak létre, amelyek lehetővé teszik az érintettek számára, hogy hozzáférjenek és interakcióba léphessenek a visszajelzés alapján. A fejlesztés a projekttervek vagy prioritások módosítása révén valósulhat meg. A termelés a gyártási környezet javításával működhet.
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ás: Git, Gerrit, Bugzilla; Jenkins és egyéb nyílt forráskódú CI/CD eszközök
- Építés: Apache Maven, Gradle, Apache Ant, Packer
- Tesztelés: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- Kibocsátás, telepítés, műveletek: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Megfigyelés: Grafana, Prometheus, Nagios, InfluxDB, Fluentd és más, ebben az útmutatóban érintett eszközök
(* Az üzemeltetési eszközöket az üzemeltető csapatok használati sorrendjében sorolták fel, de az eszközeik átfedik egymást a kibocsátási és telepítési életciklus szakaszaival. Az olvashatóság érdekében a számozás eltávolításra került.)
Végül
A DevOps egyre népszerűbb módszertan, amelynek célja a fejlesztők és üzemeltetők egyesítése. Egyedi, eltér a hagyományos IT műveletektől és kiegészíti az Agile-t (de nem olyan rugalmas).

Tudjon meg többet arról, hogyan szerezheti meg a keresett szakmát a nulláról, vagy fejlesztheti tudását és fizetését a SkillFactory fizetős online kurzusain:
- (12 hónap)
további tanfolyamok
- (12 hét)
- (12 hónap)
- (9 hónap)
- (9 hónap)
Hasznos
Forrás: habr.com
