ITHub

Mi az a DevOps?

Mi az a DevOps?
Farkas Gábor
Farkas Gábor
| ~4 perc olvasás

Ma egy újabb divatos IT kifejezésről rántjuk le a leplet, mégpedig a DevOps metodológiát járjuk körül, amiről mindenki hallott már, de kevesen tudják igazán, hogy mit jelent. A DevOps a felszínen tulajdonképpen egy szervezetben a fejlesztői és az üzemeltetői teamek a hagyományosnál szorosabb együttműködését jelenti, de a részletekért érdemes ennél mélyebbre ásnunk.

Mi az a DevOps?

Főleg az agilis fejlesztési módszerek elterjedése miatt egyre több szervezet találkozik azzal a problémával, hogy a gyors fejlesztési iterációk miatt nehezebbé válik a felhasználóktól érkező problémák feldolgozása. A gyors válaszidő nyilván minden szoftverház saját igénye, de ezek a gyors változások nagy terhet rónak a funkcionális csapatokra, ami végső soron egyre több bugot és zavart eredményez.

Erre a helyzetre válaszként egyre több szervezet mozdul a DevOps irányába, ami a fejlesztés (Development) és az üzemeltetés (Operations) viszonyának javítását takarja. Ebben a struktúrában a fejlesztői team a ciklus elejétől eszközökkel támogatja az üzemeltetést (deploy scriptek, automatikus diagnosztikai eszközök, terhelés-, és performanciatesztelési eszközök) mely a ciklus előtt, közben, és után is hasznos visszajelzéseket küld.

A rövid ciklusok megjelenésével és az egyre erősebb időbeli megkötésekkel a fejlesztés, a QA, és az üzemeltetés ilyen szigorú felosztása leginkább csak gátat szab az agilitásnak; a DevOps ezeket a falakat próbálja meg lerombolni (de legalábbis könnyebben átjárhatóvá tenni). Ennek egyik fő jellemzője, hogy mindenki elsősorban a végfelhasználói élményre koncentrál, és arra, hogy az miként befolyásolja az üzleti igényeket. A DevOps nem egy új eszközkészlet, sokkal inkább egy új folyamat — ha úgy tetszik, új kultúra.

Miért jó a DevOps a fejlesztőknek?

Három alapvető érvet lehet felhozni a DevOps mellett fejlesztői szempontból:

  • Csökken a stresszes helyzetek száma. Sokkal kevesebb hívást fogunk kapni az éjszaka közepén, hogy valamit sürgősen javítani kell egy éles, produktív rendszerben. Ez főleg azért van, mert ezekre a helyzetekre már proaktívan fel van készülve mindenki, jóval még mielőtt katasztrofálissá válna a helyzet.
  • A kód az egész úton látható a fejlesztő számára. A régi modellben a fejlesztő végzett a kóddal, "átdobta a falon" a QA-nak, aki később szintén átdobta egy újabb falon az éles rendszert üzemeltető csapatnak. Így akár az is előfordulhatott, hogy a fejlesztő által elengedett kód az út végén már nem teljesen hasonlított a kiindulási állapothoz. A DevOps modell alatt a fejlesztők végig szemmel tudják tartani a saját kódjukat a tesztelésen át az élesítésig.
  • Több releváns munka. A legtöbb emberre, így a fejlesztőkre is igaz, hogy nagyobb örömüket lelik az olyan munkában, ami valamilyen relevanciával bír a való világra nézve is. A hagyományos modellben a szoftverfejlesztők egy meglehetősen izolált térben dolgoznak, főleg kitalált szcenáriókon, amikről aztán csak az éles használat alatt derül ki, hogy valójában durva és rossz közelítések voltak. A DevOps modellben minden szcenárió valós.

Régi szokások

A DevOps bevezetésekor sokszor régi, rossz beidegződéseket kell kiölni a szervezetből, ami mindig problémás és nehézkes. Ennek egyik tipikus példája, hogy a javított bugok számát egyenesen arányosítjuk a szoftver minőségével. Ehelyett érdemes inkább a folyamat-bugokra koncentrálni: hol van a folyamatban az a pont, ami előidézte a szóban forgó hibát? Például biztosan tökéletesen ugyanaz a kód található-e a fejlesztők saját, helyi környezetében, mint ami aztán a QA-ba és a produktív rendszerbe kerül? Vagy esetleg ugyanaz a kód másképp viselkedik a különböző (fejlesztői, teszt, éles) környezetekben?

Itt (is) nagyon jól jön az automatizáció: biztosítani kell mind a környezetek, mind pedig a kódbázis szinkronját, enélkül ugyanis nehéz megmondani, hogy a hiba kód, adat, vagy környezet-konfiguráció jellegű.

Partnerség vagy ujjal mutogatás?

Talán a legjelentősebb változás, amit egy fejlesztő a mindennapi munkájában tapasztal a DevOps kapcsán az a más csapattagokkal történő gyakoribb interakció. A fejlesztőknek proaktívan kell fellépniük a hibák javítását illetően (pl. üzemeltetési logok folyamatos monitorozásával) ahelyett, hogy a supporttól várják a bejövő bugokat. Ha felmerül a probléma, egymásra mutogatás helyett partnerekként kell közösen dolgozni a megoldáson (itt is érződik, hogy a korábban említett falak nagyon megkönnyítik a felelősség áthárítását).

Természetesen ehhez az egészhez elengedhetetlen a megfelelő menedzseri támogatás. A vezetőknek példákon keresztül kell vezetniük a csapataikat, és tréningeket kell biztosítaniuk a DevOps módszertan megismerésére.