Kontejnerji, Kubernetes in DevOps prakse

Kontejnerji (angl. containers) so virtualizacijska tehnologija na nivoju operacijskega sistema, ki je v zadnjih par letih na glavo obrnila trende v virtualizaciji in postala ena najbolj vročih IT tem. Kontejnerje tako uporabljajo praktično vsa večja IT in druga podjetja (Fortune 500), ki tudi sodelujejo pri njihovemu razvoju: Google, Microsoft (podpora tudi v sistemih Windows!), Apple, IBM, Cisco, Facebook, … Inženirji DevOps so po poročanju družbe Glassdoor v letu 2018 na drugem mestu po aktualnosti novih zaposlitev (Glassdoor zbira podatke o plačah in pogojih dela na globalnem nivoju za več miljonov uporabnikov). Tudi v Sloveniji so potrebe po takšnem kadru so zelo velike. Kontejnerji in njihovo upravljanje je eno od najbolj iskanih znanj v podjetjih v okviru t.i. DevOps praks.

Google je eno izmed podjetij, ki že 15 let interno uporablja kontejnerje in je z njimi postavil svoj celoten produkcijski sistem. Vse Googlove storitve tečejo v kontejnerjih (ocenjuje se, da zaženejo dve milijardi kontejnerjev na teden!). Svoje izkušnje z upravljanjem več milijard kontejnerjev (projekt Borg) je Google prenesel v odprtokodni orkestrator Kubernetes, ki je samo v dveh letih postal eden izmen najbolj aktivnih odprtih projektov nasploh. Sedaj ga upravlja CNCF (Cloud-Native Computing Foundation), katerega je ustanovila Linux Foundation. 

Študenti pridobijo konkretne izkušnje z Docker kontejnerji in Kubernetesom., ter se naučijo, kako zgraditi skalabilno aplikacijo, primerno za uporabo v oblačnem okolju (cloud native apps). Pridobijo znanje, ki ga v tujini dobijo tečajniki pri t.i. tehničnih treningih:

  • Virtualizacija, hipervizorji, kontejnerji, razlike, primeri uporabe
    • Primernost uporabe glede na namen
  • Pregled tehnologij, ki jih uporabljajo kontejnerji
  • Delo s kontejnerji (Docker)
  • Kubernetes (Google) - orkestratorji kontejnerjev v produkcijskih okoljih:
    • nadgradnje brez izpada (0-downtime deployment)
    • deklarativno nastavljanje infrastructure (Infrastructure as a code)
  • DevOps prakse in koncepti, njihov pomen in vloga v razvoju
  • Gradnja oblačnih aplikacij (t.i. cloud native aplikacij)
    • porazdeljevanje bremen, skalabilnost, visoka razpoložljivost
    • CI/CD  (Continuous Integration/Deployment)
    • arhitektura mikro storitev (microservices)
    • serverless arhitektura
    • CNCF (Cloud Native Computing Foundation) in priporočila 

Vsa tematika je sproti podprta s praktičnimi, “hands-on” vajami.

Na koncu predmeta naj bi bil študent sposoben razumeti, kako je sestavljena moderna oblačna aplikacija (cloud native application) in kako glede na zahteve naročnika zasnovati, prilagoditi, implementirati in upravljati ustrezno optimalno rešitev, temelječo na kontejnerjih Docker in orkestratorju Kubernetes. Razumel bo problematiko uvajanja  DevOps znanj in praks v podjetje ter kaj sta arhitekturi mikrostoritev in t.i. serverless arhitektura.