Kaip įgyvendinti pažangias IT infrastruktūros pertvarkas organizacijose? Kaip automatizacija ir testavimas gali padėti sutaupyti visos komandos laiką? Kodėl įmonėje būtina nuolat tobulinti gerąsias IT kultūros praktikas? Pranešime spaudai įžvalgomis dalijosi JAV programavimo paslaugų įmonės „Devbridge“ „DevOps“ praktikų vadovas Marius Guobys.

Testavimas padeda išvengti incidentų

M. Guobio teigimu, vienas didžiausių nepriekaištingai veikiančio verslo košmarų – staiga iškilusi nenumatyta technologinė bėda, kai visi klientai staiga nebegalėtų naudotis IT produktais.

Įsivaizduokite bankinę sistemą, kur staiga sutrinka jų mokėjimų sistema, o visi klientai patiria nepatogumus, o bankas – milžiniškus nuostolius. Greičiausiai nei vienas IT specialistas nenorėtų to patirti, tad tokios praktikos kaip automatizacija ir testavimas, padeda ne tik išvengti incidentų bet ir sutaupo komandos laiką bei leidžia jį skirti naujų projektų ir produktų vystymui, rašoma pranešime.

„Tikslingas testavimas leidžia suprasti kur yra spragos ir jas laiku sutvarkyti, tuo pačiu įvertinti ar pasirinkti sprendimai yra tikslingi, o galbūt yra ir tokių, kurių verta atsisakyti ir tokiu būdu sutaupyti sistemos išlaikymo kaštus. Įmonėms bei organizacijoms toks debesijos infrastruktūros testavimas leidžia iš naujo įvertinti savo naudojamus sprendimus bei padeda įvesti naujų praktikų į savo IT kultūrą.

Vienas iš esminių patogumų dirbant su debesija yra tai, kad naudojantis specializuotais įrankiais mes galime visus reikalingus veiksmus atlikti automatizacijos būdu rašant tam specializuotą kodą (angl. IaC – Infrastructure as Code). IaC pagalba mes galime tiksliai aprašyti kiek ir kokių resursų mums reikia, nurodyti visus jų parametrus ir juos valdyti. Tai nėra paprastai įsivaizduojamas „kodo“ rašymas, ką mes puikiai pažįstame iš savo kolegų programuotojų, bet tai deklaratyvus kodas, įsivaizduokime kaip instrukcijos, kurios nurodo įrankiui ką ir kaip reikia atlikti debesijoje“, – teigia „DevOps“ praktikų vadovas.
JAV programavimo paslaugų įmonės DevOps praktikų vadovas Marius Guobys

Automatizacija supaprastina verslo procesus

M. Guobys pabrėžia, kad visos naujos tendencijos IT sektoriuje atneša specialistams vis naujų iššūkių. Daugelis IT infrastruktūrą įsivaizduoja, kaip konkrečių objektų funkcionavimą, kurį sudaro serveriai, tinklo įranga, kabeliai, diskai, atmintis ir pan. Tačiau kai kalba pasisuka apie debesijos IT infrastruktūros sprendimus, toks įsivaizdavimas nebetinka, kadangi debesijos sprendimai atneša tam tikrą abstrakcijos lygmenį, kai mes nebematome tokių tipinių objektų, tačiau čia atsiveria dar daugiau galimybių, kaip pavyzdžiui, prie esamų sprendimų galima prijungti ne vieną serverį, bet dešimtis ir dar daugiau.

„Sukurti duomenų bazes nurodžius viso labo kelis parametrus, kaip duombazės tipą, pajėgumą ir visa tai bei dar daugiau galime kurti naudojantis patogiais žiniatinklio vedliais (angl. Browser web interaface) arba naudojantis API abstrakcijos lygmeniu, kai galime tiesiogiai bendrauti ir valdyti debesijos sprendimus naudojantis specializuotais įrankiais. Tokiu būdu mums palengvėja nemažai užduočių, kaip tarkime didelių kiekių resursų sukūrimas.

Pavyzdžiui, mums reikia 50 virtualių mašinų, kurios galėtų bendrauti tarpusavyje, būtų apsaugotos ugniasiene, turėtume saugią autentifikacijos sistemą, kuri leistų prisijungti prie šių virtualių mašinų. Galime tik įsivaizduoti kiek tai užtruktų, jeigu viską reikėtų atlikti rankiniu būdu, tačiau naudojantis IaC, mes galime vos kelių dešimčių eilučių pagalba visa tai aprašyti ir naudojantis specializuotais įrankiais visa tai sukurti“, – pranašumus vardijo specialistas.

Sistemos patikimumą galima išmatuoti

M. Guobys akcentuoja, kad jeigu yra kuriama virtuali mašina debesijoje, testų pagalba mes galime sužinoti ar sukurtas resursas funkcionuoja, ar prie jo galime prisijungti, ar jis yra apsaugotas, remiantis griežtais reikalavimais, ar yra įdiegtos visos reikiamos funkcijos ir jos veikia.

„Kai kalbame apie pačio kodo testavimą, t.y. ar mūsų rašomas kodas yra tvarkingas mes nebekreipiame dėmesio į tai kas vyksta sukūrus resursus, tačiau nagrinėjame ar rašomas kodas yra tvarkingas, saugus, neprigaminame bereikalingų šiukšlių kode (dubliavimai) ir pan. Tai atrodo ganėtinai paprasti dalykai, tačiau jeigu mums tai reikia pakartoti daug kartų, tokių testų rašymas gali greitai atsipirkti, ypatingai dėl to, jog testavimą galime automatizuoti naudojantis specializuotais įrankiais ir juos „leisti“ daug kartų iš eilės ir sekti rezultatus bei matyti ar mūsų taikomas IaC prastėja, ar įveliame naujų klaidų. Taip pat debesijoje ganėtinai plačiai jau yra naudojamas patikimumo testavimas. t.y. ar jūsų kuriami sprendimai gali ir toliau funkcionuoti jeigu, pavyzdžiui, yra išjungiama kokia nors funkcija.

Įsivaizduokite, kad turite 20 serverių, 5-ias duomenų bazes, 2 duomenų saugyklas. Ir kas įvyktų jeigu mes vieną iš šių komponentų išjungsime – ar visas sukurtas sprendimas sugrius, gebės ir toliau funkcionuoti? Šiam tikslui yra net specialiai numatoma architektūra, kuriant sprendimus debesijoje, t.y. kuriamos sistemos, kurios atitinka patikimumo reikalavimus, sutrikus vieno ar kito komponento veikimui. Ne mažiau aktualus yra ir saugumo testavimas, kuris leidžia įsitikinti ar kuriami sprendimai yra saugūs. Tokiu atveju mes kreipiame dėmesį į tokius aspektus kaip tinklo sauga ar resursai apsaugoti tinklo lygmenyje (pvz. nėra atidaryti nereikalingi prievadai), resursų sauga – ar sukurti debesijoje sprendimai yra saugūs (pvz. įdiegti visi reikiami atnaujinimai)“, – pavyzdžius pateikia specialistas.

Kaip tai veikia?

M Guobio teigimu testavimo būdai naudoja skirtingus įrankius arba neturi reikiamų įrankių visai. Pavyzdžiui, pirmuoju atveju kai kalbame apie pačių resursų funkcionalumo testavimą šioje srityje įrankių yra minimaliai arba jų nėra išvis. Tad tenka pasirašyti testus patiems naudojantis egzistuojančiomis programavimo kalbomis (Python, Go ir pan.)

„Kai kalbame apie pačio kodo testavimą – čia jau padėtis kiek geresnė, IaC įrankiai turi dažnai turi savo pačių sukurtus sintaksės tikrinimo įrankius (angl. Linting) bei yra nemažai jau paruoštų kodo skenavimo įrankių, kurie leidžia įvertinti pačią kodo kokybę. Patikimumo testavimo atveju yra keletas būdų pasiekti užsibrėžtus tikslus – galima pasirašyti savo pačių sprendimus su aukščiau paminėtoms programavimo kalbomis, kurie padės įvertinti kas nutinka kai vienas ar kitas resursas nustoja veikti.

Kitas būdas – taikyti egzistuojančius įrankius kurie atlieka „atjungimus“ už jus ir taip leidžia įvertinti kas nutiks „jeigu“. Kadangi tokio įrankio panaudojimo atveju mes niekada nežinome kurioje vietoje įvyks lūžis mes turime itin kruopščiai pasiruošti. Bei tuo pačiu kurti savo IT infrastruktūros architektūrą tokiu būdu, jog mes galėtume tokius įrankius naudoti, kadangi be išankstinio pasiruošimo net neverta investuoti laiko į tokius metodus. Tačiau vien panaudoti įrankius nebeužtenka – būtina suprasti ką šie įrankiai mums praneša, kokią informaciją mes iš jų gauname ir atitinkamai reaguoti t.y. įvesti reikiamus pakeitimus bei patobulinimus“, – pranešime aiškino DevOps praktikų vadovas.

Debesijos infrastruktūrą būtina tobulinti kasdien

Anot M. Guobio, nuolatinis tobulėjimas ir sprendimų paieška leidžia įmonėms užkirsti kelią nenumatytoms problemoms, o IT komandoms tai padeda pereiti į naują lygį, kai šalia tradicinių IT infrastruktūros valdymo metodų mes galime įvesti naujas praktikas, įsisavinti naujus įrankius, programavimo kalbas ir pan.

„Atlikti šias užduotis šiandien dar nėra tiesiog vieno specialisto, kuris galėtų užtikrinti visus šiuos testavimo aspektus. Tačiau pasitelkiant DevOps praktikas, tai tampa visos komandos užduotimis ir tikslais, kurie padeda užtikrinti kokybę. Šiuo metu mūsų įmonėje kaip tik vystome debesijos infrastruktūros sprendimą vienam iš mūsų klientų, kuris ketina migruoti iš tradicinio duomenų centro. Kaip vieną iš praktikų mes kartu su IaC taikome ir testavimą. T.y. automatizuojamiems komponentams rašome papildomus testus, bei tuo pačius užtikriname kodo kokybę. Toks ankstyvas praktikų taikymas leidžia mums, specialistams, išgaudyti potencialias problemas ankstyvoje projekto fazėje, kartu ir klientui pasiūlome papildomą vertę.

Klientas savo ruožtu gali remtis esamu sprendimu, kaip patikimu ir kokybišku produktu. Dirbant prie tokių projektų mes buriame komandas, kurios susideda iš įvairių specialistų – programuotojai, DevOps, testuotojai, saugos specialistai ir t.t. Tai leidžia įvertinti kuriamus sprendimus iš įvairių pusių bei taip pasidalinti atsakomybėmis. DevOps kultūra tuo ir yra naudinga įmonėse ir organizacijose, kurios nori tobulėti ir augti. Taip ir su IT infrastruktūros testavimu – pasitelkiame tiek testuotojus, tiek ir DevOps bei saugos specialistus šiam tikslui pasiekti, kadangi visų pusių vienam specialistui aprėpti tiesiog tampa pernelyg sudėtinga, ypatingai tada, kai kuriami sprendimai auga greitai ir su iššūkiais reikia susitvarkyti laiku“, - pabrėžė „DevOps“ praktikų vadovas.