Увод у све као код за почетнике

Koncept „Sve kao kod“ (Everything as Code – EaC) beleži značajan rast u poslednjih nekoliko godina, usled spajanja različitih međusobno povezanih faktora.

Sa pojavom „infrastrukture kao koda“ i DevOps pokreta, termin „kao kod“ postao je sveprisutan. IT operacije i sistemski administratori počeli su da sarađuju na automatizaciji modifikacija IT okruženja korišćenjem koda koji se može ponovo upotrebiti. Paralelno, kontrola verzija tog koda primenjuje se na sličan način na koji programeri decenijama upravljaju izmenama koda aplikacija.

Zašto „sve kao kod“?

Sve veći broj organizacija oslanja se na složene sisteme. Jedan server više nije dovoljan. Neophodno je nositi se sa zakonodavstvom, globalizacijom i distribuiranom infrastrukturom.

Mnogi elementi IT sistema su angažovani spolja, kao „usluge“. Mikroservisi dobijaju na popularnosti, zajedno sa brojnim API-jima koji povezuju različite sisteme.

Postoji potreba za upravljanjem infrastrukturom kako bi se zadovoljili specifični zahtevi različitih zemalja i osigurala usklađenost. Neophodno je osigurati da sve funkcioniše bez problema. Međutim, ova složenost čini ručno upravljanje IT-om veoma zahtevnim.

Potreban nam je efikasan način upravljanja rastućim tehnološkim stekovima koji održavaju funkcionisanje organizacija. Rešenje je pronađeno u metodologiji preuzetoj iz sveta programera, koja uključuje kodiranje, alate i automatizaciju, poznato kao „sve kao kod“.

Šta je „sve kao kod“?

Koncept tretiranja svih komponenti sistema kao koda poznat je kao „Sve kao kod“. To podrazumeva da se i izvorni kod i konfiguracija mogu čuvati u repozitorijumu, kao što su Git ili SVN.

Dodatno, konfiguracija se može čuvati hijerarhijski, od hardverskih resursa (mrežni prekidači, fizički serveri), preko operativnog sistema, do konfiguracija za gradnju, svojstava aplikacije i konfiguracija primene. Na taj način, sve se može pratiti i lako ponovo kreirati.

„Sve kao kod“ (EaC) uključuje i dizajn sistema koji se takođe čuva kao kod. U tradicionalnom IT svetu, infrastruktura je bila neophodna, zahtevala je specijalizovane veštine, fizički hardver i kablove. Sistemi su bili ili izuzetno skupi ili se nisu često ažurirali.

Cloud computing i aplikacije „rođene u oblaku“ su omogućile jednostavno i jeftino kreiranje virtuelne infrastrukture. Kod koji konfiguriše virtuelna okruženja može se čuvati kao kod, što omogućava njegovu višekratnu upotrebu.

EaC je izuzetno koristan alat za programere i IT inženjere, omogućavajući ponovljiv i skalabilan pristup zadacima kao što su upravljanje primenom aplikacija ili obezbeđivanje infrastrukture, koji bi inače bili naporni i ručni.

EaC je podjednako koristan i za programere i za IT inženjere jer im omogućava efikasniji rad. Mogu koristiti iste alate i konfiguracione fajlove da skaliraju operacije u različitim okruženjima. Osim toga, pristup „sve kao kod“ smanjuje rizik od ljudske greške.

Kada su svi procesi rada definisani kodom, inženjeri ne moraju više da brinu o greškama ili slučajnim klikovima na pogrešno dugme. EaC olakšava reviziju sistema, jer konfiguracije mogu da se koriste da se utvrdi šta je urađeno na sistemu.

Kako „sve kao kod“ postaje popularno na tržištu?

EaC je doživeo veliki rast u poslednjih nekoliko godina zbog konvergencije nekoliko povezanih faktora. Jedan od razloga je što su proizvođači alata otvoreniji ka prihvatanju pristupa „sve kao kod“.

Kao rezultat toga, oni su usvojili ono što bi se moglo nazvati „EaC-first“ pristup za konfiguraciju i implementaciju alata, pretpostavljajući da programeri ili IT inženjeri preferiraju upravljanje svime putem kodnih datoteka. Kubernetes je odličan primer za to.

Kubernetes se može opciono kontrolisati preko veb interfejsa, ali je primarno dizajniran da se njime upravlja preko kodnih datoteka. Isto važi i za većinu javnih cloud servisa i CI servera. Iako mogu imati grafičke interfejse, najbolje funkcionišu kada se njima upravlja putem koda.

EaC je podstaknut činjenicom da su se mnogi alati za administratore i programere usaglasili oko zajedničkih konfiguracionih formata. Praktično svi EaC-kompatibilni alati koriste YAML i JSON kao konfiguracione jezike.

Korisnici mogu koristiti isti format konfiguracionih datoteka i isti metod za upravljanje svim svojim alatima zahvaljujući standardizaciji formata. EaC-ova sposobnost da upravlja i izgradi kompletne mreže za isporuku aplikacija takođe doprinosi njenoj popularnosti.

Nekada je EaC mogao da upravlja sa samo nekoliko alata u okviru CI/CD procesa. Danas je EaC eksponencijalno korisniji, jer možete upravljati svim svojim alatima putem koda. Možete eliminisati mnoge druge alate i procese i centralizovati sve operacije koristeći jedan jedinstveni pristup.

Suština EaC-a nije nova. EaC već neko vreme postoji u izolovanim oblicima. Sada se koristi široko kao rešenje za specifične DevOps radne tokove.

Prednosti „sve kao kod“

Postoji više razloga zašto tehnički timovi primenjuju pristup „sve kao kod“ u IT operacijama.

Doslednost

Administratori mogu primenjivati uniformne konfiguracije u različitim okruženjima. Inženjeri mogu da izbegnu nedosledne konfiguracije korišćenjem „sve kao kod“ pristupa, bilo da konfigurišu infrastrukturu, CI/CD alate ili smernice za kontrolu pristupa u cloudu.

Kontrola verzija

Administratori mogu da prate kako se konfiguracije menjaju tokom vremena i da osiguraju da su pod kontrolom verzija. Slično kao kod izvornog koda, mogu videti koje su promene napravljene pre nego što se problem pojavio ili da se vrate na stariju verziju ako je to potrebno.

Skalabilnost

Administratori mogu da primene konfiguraciju na onoliko procesa ili resursa koliko im je potrebno. To je značajna prednost za operacije koje se vremenom šire. IT timovi mogu kreirati konfiguracije koristeći kod koji im omogućava da dodaju instance određenog resursa ili procesa bez ponovnog konfigurisanja svakog od njih.

Revizija

Administratori mogu automatski da pregledaju konfiguracione resurse jednostavnom revizijom kodnih datoteka. Ovo je mnogo efikasnije od ručne provere svakog resursa.

Prenosivost

IT timovima koji koriste „sve kao kod“ pristup biće lakše da definišu svoje konfiguracije putem koda koji je nezavisan od dobavljača, umesto da se oslanjaju na alate za konfiguraciju različitih proizvođača.

Na primer, Selenium, framework otvorenog koda za automatizaciju testiranja, može se koristiti za kreiranje skripti za testiranje softvera. Kao rezultat toga, administratori mogu brzo da premeštaju test okruženja sa lokalnih na cloud resurse, bez potrebe za ažuriranjem ili učenjem novih alata.

Kako primeniti „sve kao kod“?

U nastavku su navedeni različiti načini primene „sve kao kod“ pristupa:

Infrastruktura kao kod

Infrastruktura kao kod je pristup gde operacije i programeri definišu željeno stanje svoje infrastrukture koristeći kod. To znači da definišete infrastrukturu koja treba da bude obezbeđena, a zatim možete modifikovati svoju infrastrukturu kako bi odgovarala vašim potrebama.

Bezbednost kao kod

Bezbednost kao kod može rezultirati sigurnijim sistemima. To se postiže putem automatizovanog skeniranja bezbednosnih propusta i automatskih ažuriranja gde je to potrebno. Softver se može koristiti za upravljanje bezbednošću IT odeljenja.

Ovo se odnosi i na upravljanje različitim zahtevima usklađenosti i regulative. Na primer, možda ćete morati da prikažete drugačiji sadržaj korisnicima u Evropi, nego onima u Americi. Ovo se može automatizovati koristeći „kao kod“ pristup.

Arhitektura kao kod

Arhitektura kao kod vam omogućava da definišete sve komponente neophodne za pokretanje vaše poslovne aplikacije. Takođe vam omogućava da je implementirate u različitim okruženjima (dev/test, produkcija). To je imperativni pristup kodiranju koji omogućava kontrolu verzija, pregled, modifikacije i reviziju.

Testiranje kao kod

Testiranje kao kod je odličan primer automatizacije testiranja. Moguće je automatizovati operacije poslovne logike i interakciju korisničkog interfejsa korišćenjem test skripti.

Primena kao kod

Moderan pristup implementaciji je odličan primer ovoga. Pod „modernim“ podrazumevamo procese koji se mogu posmatrati kao kod. Njima se upravlja, ažuriraju i održavaju kao softverske komponente. Kod se koristi za kreiranje naprednih CI/CD procesa, kako osnovnih, tako i složenih.

Stvari koje treba zapamtiti kada planirate implementaciju „sve kao kod“ pristupa

  • Omogućava IT inženjerima i softverskim programerima da rade efikasnije.
  • Da biste implementirali „sve kao kod“ u svojoj kompaniji, neophodna je promena načina razmišljanja.
  • Trud vašeg tima je ključan za uspeh.
  • Jedna od najvažnijih prednosti je mogućnost praćenja visokokvalitetnih procedura.
  • Infrastrukturni kod je izazovno testirati. Neophodni su automatizovani testovi.
  • Ne možete definisati svu infrastrukturu za sva okruženja (dev, stage i production) u jednoj datoteci.

Zaključak

„Sve kao kod“ (EaC), metodologija razvoja softvera i DevOps, koristi kod za upravljanje IT resursima. EaC ima široku primenu u infrastrukturama kao kod, konfiguracijama kao kod, kao i u drugim oblastima IT-a.

Iako „sve kao kod“ može biti obećavajuće rešenje za mnoge organizacije, postoji oportunitetni trošak u transformaciji dela platforme u EaC. Važno je pažljivo odlučiti gde uložiti resurse. Vaša platforma će sadržati delove koji imaju benefite od EaC pristupa. Identifikacija tih oblasti je od ključne važnosti.