Miért van szükség a DevOps-ra, és kik a DevOps-specialisták?

Ha egy alkalmazás nem működik, az utolsó dolog, amit szeretne hallani a kollégáitól, az a mondat, hogy „a probléma az Ön oldalán van”. Ennek eredményeként a felhasználók szenvednek – és nem érdekli őket, hogy a csapat melyik része felelős a meghibásodásért. A DevOps kultúra pontosan azért alakult ki, hogy a fejlesztést és a támogatást a végtermékért való közös felelősség köré vonja össze.

Milyen gyakorlatokat tartalmaz a DevOps koncepciója, és miért van rájuk szükség? Mit csinálnak a DevOps mérnökei, és mire kell tudniuk? Az EPAM szakértői válaszolnak ezekre és más kérdésekre: Kirill Szergejev rendszermérnök és DevOps evangélista, valamint Igor Boyko, vezető rendszermérnök és a vállalat egyik DevOps csapatának koordinátora.

Miért van szükség a DevOps-ra, és kik a DevOps-specialisták?

Miért van szükség a DevOps-ra?

Korábban akadály volt a fejlesztők és a támogatás (ún. műveletek) között. Paradoxon hangzik, de eltérőek voltak a céljaik és a KPI-k, bár ugyanazt csinálták. A fejlesztés célja az volt, hogy az üzleti követelményeket a lehető leggyorsabban megvalósítsák, és azokat egy működő termékhez adják. A támogatás volt a felelős azért, hogy az alkalmazás stabilan működjön – és minden változtatás veszélybe sodorja a stabilitást. Összeférhetetlenség van – úgy tűnt, hogy a DevOps megoldja.

Mi az a DevOps?

Jó kérdés – és ellentmondásos is: a világ még nem értett egyet ebben. Az EPAM hisz abban, hogy a DevOps egyesíti a technológiákat, a folyamatokat és az interakció kultúráját egy csapaton belül. Ennek az egyesületnek az a célja, hogy folyamatosan értéket szállítson a végfelhasználóknak.

Kirill Szergejev: „A fejlesztők kódot írnak, a tesztelők felülvizsgálják, a rendszergazdák pedig üzembe helyezik a végterméket a termelésbe. A csapat ezen részei sokáig szétszóródtak, majd felmerült az ötlet, hogy egy közös folyamaton keresztül egyesítsék őket. Így jelentek meg a DevOps gyakorlatok.”

Eljött a nap, amikor a fejlesztők és a rendszermérnökök érdeklődni kezdtek egymás munkája iránt. A termelés és a támogatás közötti akadály kezdett eltűnni. Így alakult ki a DevOps, amely gyakorlatokat, kultúrát és csapatinterakciót foglal magában.

Miért van szükség a DevOps-ra, és kik a DevOps-specialisták?

Mi a DevOps kultúra lényege?

Az a tény, hogy a végeredményért minden csapattag felelősséget visel. A DevOps filozófiájában a legérdekesebb és legnehezebb annak megértése, hogy egy adott személy nem csak a saját munkaszakaszáért felelős, hanem azért is, hogy az egész termék hogyan fog működni. A probléma nem áll senki oldalán – megosztják, és minden csapattag segít a megoldásában.

A DevOps kultúrában a legfontosabb a probléma megoldása, nem csak a DevOps gyakorlatok alkalmazása. Ráadásul ezeket a gyakorlatokat nem „valaki oldalán” hajtják végre, hanem az egész termékben. Egy projekthez önmagában nincs szükség DevOps mérnökre – egy probléma megoldására van szükség, és a DevOps mérnök szerepét több, különböző szakterületű csapattag között is el lehet osztani.

Milyen típusú DevOps gyakorlatok vannak?

A DevOps gyakorlatok lefedik a szoftver életciklusának minden szakaszát.

Igor Bojko: „Az ideális eset az, amikor a DevOps gyakorlatokat közvetlenül egy projekt indításakor kezdjük el használni. Az építészekkel közösen megtervezzük, hogy milyen építészeti tájképet kap az alkalmazás, hol lesz elhelyezve és hogyan méretezzük, és kiválasztjuk a platformot. Manapság divat a mikroszolgáltatási architektúra - ehhez egy hangszerelési rendszert választunk: az alkalmazás minden elemét külön kell tudni kezelni és a többitől függetlenül frissíteni. Egy másik gyakorlat az „infrastruktúra mint kód”. Ez annak a megközelítésnek a neve, amelyben a projekt infrastruktúráját kóddal hozzák létre és kezelik, nem pedig a szerverekkel való közvetlen interakció révén.

Ezután áttérünk a fejlesztési szakaszra. Az egyik legnagyobb gyakorlat itt a CI/CD építése: segíteni kell a fejlesztőknek abban, hogy a változtatásokat gyorsan, kis adagokban, gyakrabban és fájdalommentesen integrálják a termékbe. A CI/CD magában foglalja a kód áttekintését, a mester feltöltését a kódbázisba, valamint az alkalmazás tesztelési és éles környezetekben való üzembe helyezését.

A CI/CD szakaszokban a kód minőségi kapukon halad át. Segítségükkel ellenőrzik, hogy a fejlesztő munkaállomásáról kikerülő kód megfelel-e a megadott minőségi kritériumoknak. Itt található az egység- és felhasználói felület tesztelése. A gyors, fájdalommentes és célzott terméktelepítés érdekében kiválaszthatja a megfelelő telepítési típust.

A DevOps gyakorlóinak is van helyük a kész termék támogatásának szakaszában. Felügyeletre, visszajelzésre, biztonságra és változtatások bevezetésére használják. A DevOps ezeket a feladatokat a folyamatos fejlesztés szempontjából vizsgálja. Minimalizáljuk az ismétlődő műveleteket és automatizáljuk őket. Ez magában foglalja a migrációt, az alkalmazásbővítést és a teljesítménytámogatást is."

Milyen előnyei vannak a DevOps gyakorlatoknak?

Ha egy tankönyvet írnánk a modern DevOps gyakorlatokról, három pont lenne az első oldalon: automatizálás, kiadások felgyorsítása és gyors visszajelzés a felhasználóktól.

Kirill Szergejev: „Az első dolog az automatizálás. A csapatban minden interakciót automatizálhatunk: megírta a kódot - kigördítette - ellenőrizte - telepítette - visszajelzést gyűjtött - visszatért az elejére. Mindez automatikus.

A második a kiadás felgyorsítása, sőt a fejlesztés egyszerűsítése. A vevő számára mindig fontos, hogy a termék a lehető leghamarabb megjelenjen a piacon, és korábban kezdjen előnyöket nyújtani, mint a versenytársak analógjai. A termék szállítási folyamata végtelenül javítható: csökkentheti az időt, hozzáadhat további vezérlőjeleket, javíthatja a felügyeletet.

A harmadik a felhasználói visszajelzések felgyorsítása. Ha észrevételei vannak, azonnal elvégezhetjük a módosításokat, és azonnal frissíthetjük az alkalmazást.”

Miért van szükség a DevOps-ra, és kik a DevOps-specialisták?

Hogyan kapcsolódnak egymáshoz a „rendszermérnök”, „építőmérnök” és „fejlesztőmérnök” fogalmak?

Átfedik egymást, de kissé eltérő területekhez tartoznak.

Rendszermérnök az EPAM-nál. Különböző szinteken érkeznek: a juniortól a főspecialistáig.

Az építõmérnök inkább egy projektben betölthetõ szerep. Most így hívják a CI/CD-ért felelős személyeket.

A DevOps mérnök olyan szakember, aki DevOps gyakorlatokat valósít meg egy projekten.

Ha mindezt összeadjuk, akkor valami ilyesmit kapunk: egy rendszermérnök pozícióban lévő személy egy projektben építőmérnök szerepét tölti be, és ott részt vesz a DevOps gyakorlatok megvalósításában.

Mit csinál pontosan egy DevOps mérnök?

A DevOps mérnökei összeállították a projektet alkotó összes elemet. Ismerik a programozók, tesztelők, rendszergazdák munkájának sajátosságait és segítenek leegyszerűsíteni munkájukat. Megértik a vállalkozás igényeit, követelményeit, szerepét a fejlesztési folyamatban - és a folyamatot a vevő érdekeit figyelembe véve építik fel.

Sokat beszéltünk az automatizálásról – elsősorban ezzel foglalkoznak a DevOps mérnökei. Ez egy nagyon nagy pont, amibe többek között a környezet előkészítése is beletartozik.

Kirill Szergejev: „Mielőtt frissítéseket telepítene a termékbe, azokat harmadik féltől származó környezetben kell tesztelni. A DevOps mérnökei készítették. A DevOps-kultúrát bevezetik a projekt egészébe: projektjeik minden szintjén bevezetik a DevOps gyakorlatokat. Ez a három alapelv: automatizálás, egyszerűsítés, gyorsítás – mindenhová eljuttatják.

Mit kell tudnia egy DevOps mérnöknek?

Összességében különböző területekről kell ismeretekkel rendelkeznie: programozás, operációs rendszerekkel való munka, adatbázisok, összeszerelési és konfigurációs rendszerek. Ezeket kiegészíti a felhő infrastruktúrával, hangszerelési és felügyeleti rendszerekkel való munkavégzés képessége.

1. Programozási nyelvek

A DevOps mérnökei több alapvető automatizálási nyelvet ismernek, és például elmondhatják a programozónak: „Mi lenne, ha nem kézzel telepítené a kódot, hanem a mi mindent automatizáló szkriptünk segítségével? Készítünk hozzá egy konfig fájlt, amit Önnek és nekünk is kényelmesen olvashatunk, és bármikor módosíthatjuk. Azt is látni fogjuk, hogy ki, mikor és miért változtat rajta.”

Egy DevOps mérnök megtanulhat egy vagy több nyelvet a következők közül: Python, Groovy, Bash, Powershell, Ruby, Go. Nem szükséges mélyen ismerni őket - elegendő a szintaxis alapjai, az OOP-elvek és az egyszerű szkriptek írásának képessége az automatizáláshoz.

2. Operációs rendszerek

A DevOps mérnöknek tisztában kell lennie azzal, hogy a termék melyik szerverre lesz telepítve, milyen környezetben fog futni, és milyen szolgáltatásokkal fog együttműködni. Választhat, hogy a Windowsra vagy a Linux családra specializálódik.

3. Verzióvezérlő rendszerek

Verzióvezérlő rendszer ismerete nélkül sehol egy DevOps mérnök. A Git jelenleg az egyik legnépszerűbb rendszer.

4. Felhőszolgáltatók

AWS, Google, Azure – főleg ha a Windows irányáról beszélünk.

Kirill Szergejev: „A felhőszolgáltatók olyan virtuális szervereket biztosítanak számunkra, amelyek tökéletesen illeszkednek a CI/CD-be.

Tíz fizikai szerver telepítése körülbelül száz kézi műveletet igényel. Minden szervert manuálisan kell elindítani, telepíteni és beállítani a szükséges operációs rendszert, telepíteni az alkalmazásunkat erre a tíz szerverre, majd mindent tízszer ellenőrizni. A felhőszolgáltatások ezt az eljárást tíz sornyi kóddal helyettesítik, és egy jó DevOps mérnöknek képesnek kell lennie velük dolgozni. Ez időt, erőfeszítést és pénzt takarít meg – mind az ügyfél, mind a vállalat számára.”

5. Hangszerelési rendszerek: Docker és Kubernetes

Kirill Szergejev: „A virtuális szerverek konténerekre vannak osztva, amelyek mindegyikébe telepíthetjük az alkalmazásunkat. Ha sok a konténer, akkor kezelni kell őket: kapcsolja be az egyiket, kapcsolja ki a másikat, készítsen biztonsági másolatot valahol. Ez meglehetősen bonyolulttá válik, és hangszerelési rendszert igényel.

Korábban minden alkalmazást külön szerver kezelt – a működésében bekövetkezett változások befolyásolhatták az alkalmazás szervizelhetőségét. A konténereknek köszönhetően az alkalmazások elszigetelődnek és külön futnak – mindegyik a saját virtuális gépén. Ha meghibásodás történik, nem kell időt vesztegetni az ok keresésére. Könnyebb megsemmisíteni a régi tartályt, és hozzáadni egy újat."

6. Konfigurációs rendszerek: Chef, Ansible, Puppet

Ha egy teljes kiszolgálóflottát kell karbantartania, sok azonos típusú műveletet kell végrehajtania. Hosszú és nehéz, és a kézi munka is növeli a hibalehetőséget. Itt jönnek segítségül a konfigurációs rendszerek. Segítségükkel olyan szkriptet készítenek, amely könnyen olvasható a programozók, a DevOps mérnökök és a rendszergazdák számára. Ez a szkript segít ugyanazon műveletek automatikus végrehajtásában a szervereken. Ez csökkenti a kézi műveletek számát (és ezáltal a hibákat).

Milyen karriert építhet egy DevOps mérnök?

Vízszintesen és függőlegesen is fejleszthetsz.

Igor Bojko: „A horizontális fejlesztés szempontjából most a DevOps mérnökei vannak a legszélesebb kilátásokkal. Minden folyamatosan változik, és különféle területeken fejleszthet készségeket: a verzióvezérlő rendszerektől a felügyeletig, a konfigurációkezeléstől az adatbázisokig.

Akkor válhat rendszertervezővé, ha az alkalmazottat szeretné megérteni, hogyan működik egy alkalmazás életciklusának minden szakaszában – a fejlesztéstől a támogatásig.”

Hogyan legyek DevOps mérnök?

  1. Olvassa el a Phoenix Project és a DevOps kézikönyvét. Ezek a DevOps filozófia igazi pillérei, az első egy szépirodalmi mű.
  2. Tanuljon technológiákat a fenti listából: önállóan vagy online tanfolyamokon.
  3. Csatlakozzon DevOps mérnökként egy nyílt forráskódú projekthez.
  4. Gyakoroljon és kínáljon DevOps gyakorlatokat személyes és munkahelyi projektjeihez.

Forrás: will.com

Hozzászólás