Automatizacija - vrijedi li truda? 3. dio

  • 30.06.2023

 

Piše: Tomislav Pongrac


 

U prethodnom nastavku smo pričali o primjeni i smislu automatizacije u IT sigurnosti. Ovaj nastavak posvećujem jednom lakšem primjeru. Primjeni u području koje zovemo DevOps.

Zašto je primjer lakši? U DevOps svijetu to je nešto što zovemo domenska tema. Sam koncept DevOpsa je krenuo iz potrebe da se automatizira i olakša proizvodnja kôda.

 

Povijest - ako je znate možete preskočiti

Dobro je poznato od kud je sve krenulo: u starom svijetu, developer je trebao napisati source, testirati ga ručno na nekoj svojoj testnoj platformi i onda zajedno sa sistemašem napraviti deploy novog kôda na test, pretprodukciju ili produkciju. Taj deploy se često sastojao od kompajliranja, provođenja testova i/ili ručnog kopiranja na ciljanu platformu.

Ljudi su relativno brzo primijetili da je to nespretno. Trebalo je još dosta vremena da se ostvare tehnološki preduvjeti koji su omogućili procvat novog koncepta:

  • Kontejneri, kao samodostatni i odvojivi funkcionalni dijelovi infrastrukture
  • Git, kao version control u razvoju softvera (po mnnogima najvažniji povijesni doprinos Linusa Torvaldsa - važniji od Linuxa!)
  • Naravno, automatizacijske platforme.

Nakon što su ostvareni preduvjeti, sve je poprilično brzo povezano u odličnu priču u kojoj developer napiše kôd, spremi ga na odgovarajuću granu (branch) na Git sustavu, a ostalo je dogodi automagično. DevOps inženjeri omogućuju tu automagiju u kojoj se novi kôd testira u gotovo stvarnim uvjetima i proizvede kontejner sa svim potrebnim preduvjetima. Taj kontejner se, potencijalno također automagično, smjesti u odgovarajuću okolinu, a često se i ta okolina prilagodi postojanju novog kontejnera (prilagodbom mrežnih, sigurnosnih, load balancing i drugih postavki).

Ono što je nekad bio obrt u kojem se programski kôd ručno pisao, turpijao, pilio i pakirao jedan po jedan, postala je tvornica u kojoj kôd ulazi u visoko automatizirani stroj i iz njega izlazi finalni funkcionalni proizvod.

 

Main point

Ova povijest je dobro poznata. Želim vam reći jedan dio priče koji mi je daleko najinteresantniji.

Neki dan sam imao sastanak s nekoliko inženjera iz našeg DevOps tima. Kolega je opisivao način na koji je napravio jedan poveći Elastic Stack cluster. Ogroman broj nodeova i funkcija. Dosta kompleksan setup. Cijela priča mi je bila jako zanimljiva s tehničke strane. Vrlo su zanimljivi dijelovi koji čine tu tvornicu i što ona sve može. No, svaki put kad se vidim s tim timom najviše me impresionira jedna ne toliko tehnička stvar.

Pristup.

Kolega je o implementaciji, bez posebne pompe i naglašavanja, zapravo vrlo prirodno pričao na način koji je posljedica potpuno novog pristupa. Taj pristup bi se najbolje mogao opisati nazivom koji zvuči jako marketinški: automation first!

Sav setup se od početka događa na automatizacijskoj platformi. Uopće ne razmišljamo na način: idemo to složiti na ciljanom sustavu, pa onda automatizirati. Razmišljanje je suprotno: ako nije automatizirano - ne smatram da sam to složio. Kompletan sustav slažem na automatizacijskoj platformi.

Mnogi mladi inženjeri u našem timu ne mogu na pravi način cijeniti važnost tog pristupa jer su se “rodili” s njime i nije im poznato bilo što drugo. Mi drugi, malo stariji, znamo koliko je to revolucionarno. Od trenutka nula opisati sustav deklarativnim kôdom i kao takvog ga voditi. Sve pozitivne posljedice tog pristupa vjerojatno teško možemo zamisliti.

Evo nekih odmah na prvu:

  • Svi setinzi se nalaze u čitljivom tekstualnom formatu. Ništa nije skriveno iza konfiguracijskih datoteka, registryja, GUI konfiguracija i kvačica
  • Postavke su na version control sustavu i točno znamo sve promjene koje su se desile i kad. Imam sve benefite version control sustava - podržavam timski rad i procese kontrole i odobravanja implementacije promjena
  • Sustav se automatski dokumentira
  • Riješili smo gomilu potencijalnih compliance dilema. Točno se zna je li nešto sukladno zahtjevima regulatora, norme ili internog pravilnika. Dapače, ako compliance zahtjeve opišemo kôdom, možemo automatizirati ove provjere
  • Future proof. Zvuči kao glupi buzzword, ali već se sad pojavljuju primjeri primjene u kojima generative AI botu opišeš što ti treba i on generira kôd koji opisuje točnu infrastrukturu koju si zaželio. To je omogućeno isključivo činjenicom da je konfiguracija infrastrukture strojno čitljiva

 U drugim, ne-DevOps dijelovima IT-a, dobrim dijelom prevladava stari ili klasični pristup. Ali i tu se događa dosta novoga: Software Defined koncepti brzo nailaze i sve ide prema velikoj konvergenciji. Ali o tome - u nekom od sljedećih nastavaka.