Software Engineering Company

IT mitteinformaatikutele. Mis on DevOps?

Sven Anton avatar

DevOps insenerina on keeruline selgitada enda töö sisu. Isegi ümbritsetuna IT-teadlikest inimestest, lähevad arutelud pikaks. Kujuta ette, trehvad tänaval ammuse tuttavaga ja räägid siis 5 minutit DevOps-ist…

Et teha enda ja teiste DevOps inseneride sotsiaalne elu sujuvamaks, katsun siinses postituses umbes 5 minutiga selgitada, mida see DevOps endast täpselt kujutab. Loodetavasti aitab see ka meie tulevastel klientidel mõista teenuseid ja oskuseid, mida pakume.

Kuidas veebiteenused üldse netti jõuavad?

Lihtsustatult võikski öelda, et DevOps insener paneb veebilehe või teenuse internetti üles. Aga seda sama võib teha ka süsteemi-administraator. Erinevad (pilve)teenusepakkujad teevad seda automaatselt: täpselt nagu see WordPressi blogigi. Aga vaatame korra sellesse protsessi detailsemalt sisse, et aru saada, mida DevOps teisiti teeb.

Kujuta ette, et oled enda veebilehe valmis teinud. Õige faili peale klikkides avaneb see kenasti. Probleem on aga selles, et veebilehele saab ligi ainult arvuti failist. Tahaks ikkagi, et ka teised saaksid enda arvutist seda näha.

Internetis on igal arvutil oma IP aadress, nii ka Sinu omal. Seda saab näha, kui guugeldada “What is my IP?” või vaadata siit. IP aadressiga leitakse üles soovitud veebileht, näiteks minnes lehele starlingscripts.com, otsitakse esmalt sellele vastav IP aadress ning selle põhjal server, kust lehele ligi saab.

Minu avalik IP, osaliselt kaetud turvalisuse kaalutlustel

Kui Sa nüüd sisestad enda avaliku IP veebilehitsejasse, kuvatakse kas mingi admin leht või mitte midagi, sõltuvalt internetiteenuse pakkujast. Põhjuseks on see, et avalik IP aadress pöördus tegelikult Sinu internetiteenuse pakkuja poolt kaasa antud ruuteri poole. See aga ei osanud päringuga midagi peale hakata ning kuvab ruuteri admin lehe, kui internetiteenuse pakkuja nii on vaikimisi seadistanud. Seega on vaja teha nii, et ruuter oskaks pöördumise korral suunata Sinu arvutisse õigele lehele.

Meil on veel teinegi probleem, nimelt veebilehte ei serveeri miski. Kujundlikult mõeldes on tegemist olukorraga, kus kokk on roa valmis küpsetanud, kuid puudu on kelner (server), kes selle kliendile toimetaks.

Kutsume appi süsteemiadministraatori, tema paneb arvutis veebiserveri tööle ja seadistab koduruuteri ka ära. Kui kõik tehtud, ongi veebileht internetist leitav!

DevOps automatiseerib administraatori töö

Reaalsuses ei taha keegi veebilehte serveerida enda arvutist. Arvuti peab 24/7 töötama, võõrad teevad päringuid jne. Seega kasutatakse eraldi arvutit, enda oma või võõrast (nt pilveteenuse pakkuja vahendusel). Need seab töökorda eraldi (pilve)teenusepakkuja või süsteemiadministraator. Kui arvuti töös, saab uues arvutis läbi teha kõik eelpool nimetatud sammud ning veebileht on jälle internetis kättesaadav.

Mingi hetk tekib olukord, kus tahaks veebilehel muudatusi teha: muuta teksti, lisada pilte jne. Sellega seoses tekib ridamisi probleeme:

  • kuidas saada uued ja muudetud failis sinna teise arvutisse?
  • kuidas tagada, et muudatused internetti ka üles läheks?

Nüüd ongi vaja süsteemiadministraatori abi. Tema võtab Sinu poolt antud failid, paneb need teises arvutis õigesse kohta, teeb veebiserverile restardi ning muudatused peaksidki üleval olema. Muidugi mõista peab administraator hoolt kandma ka arvuti seisukorra eest: et oleks piisavalt kettaruumi, mälu jne. Näiteks kui lisatavate piltide hulk on juba suur, peab administraator lisama arvutile juurde kettaruumi.

Kui teha muudatusi juba sageli, nt mitu korda päevas, ning veebilehti on ka juba rohkem, siis saab administraatori tööst pudelikael: kõik muudatused on tema töö taga kinni. See tuleb eriti ilmsiks veebiteenuste korral, kus nn serveeritavaid teenused on oluliselt rohkem: andmebaasid, rakendused jne. Kõik teenused nõuavad eraldi seadistamist nagu veebilehetki. Nii muutubki süsteemiadministraatori töö kiiresti järjest mahukamaks ja aeganõudvamaks. Muudatuste internetti jõudmine võib tundide asemel võtta nädalaid.

Siin tulebki appi DevOps insener. Tema eesmärk on kirjutada programmid, mis administraatori tööd asendavad. Hästi kirjutatud programmi korral pole midagi muud tarvis teha, kui tõsta failid õigesse kohta enda arvutis, käivitada programm ning kõik muudatused lähevadki automaatselt üles.

WordPress ise ongi tegelikult üks näide sellisest programmist. WordPressi näitel on programmi kasutamine tehtud aga universaalseks veebiteenusena. Seetõttu pole enam DevOps insenerigi vaja veebilehe püstipanemisel, sest DevOps inseneride kirjutatud programmid on juba osa teenusest.

Millal on DevOps inseneri tarvis?

Kui WordPress jms teenused asendavad ka DevOps inseneri töö, siis tekib õigustatud küsimus, et miks on teda üldse tarvis? Aus vastus on, et ega veebilehtede haldamiseks ei olegi DevOpsi vaja! Mina isiklikult soovitangi kasutada veebilehtede haldamiseks WordPressi vms täislahendust.

DevOps insener on vajalik organisatsioonidele, kes ise arendavad ja haldavad veebiteenuseid. Siin ei ole DevOps inseneri kohustuseks üksnes administraatorit asendavate programmide kirjutamine, vaid ka meeskondade toetamine.

Näiteks kui arendaja tahab testida uut muudatust, ei pane ta seda kohe klientidele üles, vaid testib iseseisvalt eraldi. Et võimaldada testimist, loob DevOps insener arendajale nn arenduskeskkonna. Arenduskeskkond on ligilähedane koopia päris veebiteenusest, millele saab juurdepääsu ainult arendaja. Kui organisatsioonis on ka testijad, luuakse testijatele eraldi keskkond testimiseks. Kuivõrd erinevate tiimide vajadused ajas muutuvad, peab DevOps insener ka oma programme arendama nendele vastavalt.

Ühesõnaga, lisaks süsteemiadministraatori töö automatiseerimisele peab DevOps insener toetama mitmesuguseid meeskondi organisatsioonis. Omast kogemusest julgen väita, et kõige suuremaks väljakutseks ongi olnud erinevate vajaduste, ärihuvide ja -riskide ning võimaluste koordineerimine.

Lõpetuseks: mis see DevOps on?

Ma olen kirjutanud nüüd DevOps insenerist ja tema töö sisust, kuid ei ole selgitanud, mida “DevOps” ise tähendab. Väljend tuleb kahest sõnast: Development ja Operations, kuid see ei selgita palju. Ma usun, et “DevOps” tähendust on palju parem mõista just DevOps inseneri töö sisu järgi.

DevOps on kogum põhimõtteid, praktikaid ja väljakujunenud tavasid, mida DevOps insenerid enda töös kasutavad. Sisuliselt on tegemist (töö)filosoofiaga või kutsestandardiga, kuidas kellelegi meeldib nimetada. Hea on aga teada, et standardi (või filosoofiana) on DevOps sageli rakendatav ka teistele infotehnoloogia erialadele nagu nt andmebaaside, andmete- või võrguinsener. Seega ei ole DevOps praktikana ekslusiivselt DevOps inseneride pärusmaa, kuid seotud põhimõtted ja praktikad tulevad nende töös kõige paremini ilmsiks.

Leave a comment