Kas iš tikrųjų yra DevOps ir kodėl tai ne tik „buzzword”
Jei pastaruosius kelerius metus sekate IT industriją, tikriausiai girdėjote žodį „DevOps” tiek daug kartų, kad jis jau pradėjo skambėti kaip tuščia frazė. Ir iš dalies suprantama — kiekviena įmonė dabar skelbiasi, kad „daro DevOps”, nors kai kurios iš jų tiesiog pervadino savo sysadmin komandą ir pakeitė Jira lentų spalvas.
Bet realybė yra tokia: DevOps kaip karjeros kelias yra vienas iš labiausiai paklausių, gerai apmokamų ir techniškai įdomių pasirinkimų šiandieniniame IT pasaulyje. Ir ne todėl, kad taip sako LinkedIn algoritmas, o todėl, kad organizacijos tikrai susiduria su problema — kaip greitai ir patikimai pristatyti programinę įrangą — ir jiems reikia žmonių, kurie tą problemą sprendžia.
DevOps iš esmės yra kultūra ir praktikų rinkinys, kuris naikina sieną tarp programuotojų (Dev) ir infrastruktūros/operacijų komandos (Ops). Tradiciškai šios dvi grupės dirbo atskirai: kūrėjai rašė kodą ir „mesdavo” jį per sieną operacijų komandai, kuri tada stebėdavo, kaip viskas genda produkcijoje. DevOps inžinierius yra tas žmogus, kuris stato tiltus, automatizuoja procesus ir užtikrina, kad kodas nuo laptopo iki serverio keliauja sklandžiai, greitai ir be dramų.
Techniniai įgūdžiai, kurių tikrai reikia (o ne tik CV)
Čia prasideda įdomiausia dalis — ir kartu ta, kuri daugelį atbaido. DevOps inžinieriaus techninis arsenalai yra platus, bet tai nereiškia, kad reikia viską mokėti tobulai nuo pirmos dienos. Svarbu suprasti, kokios sritys egzistuoja ir kuriomis kryptimis judėti.
Linux ir komandinė eilutė — tai absoliutus pagrindas. Jei nesijaučiate patogiai terminale, pradėkite nuo čia. Bash skriptai, failų sistemos, procesų valdymas, tinklų diagnostika — visa tai turi tapti antra prigimtimi. Praktinis patarimas: įsidiekite Ubuntu arba bet kurį Debian pagrįstą distro ir pradėkite kasdienius darbus daryti terminale. Failų kopijavimas, archyvavimas, teksto paieška — viskas per CLI.
Konteineriai ir Kubernetes — Docker šiandien yra beveik privalomas. Kubernetes — jau aukštesnio lygio, bet be jo sunku pretenduoti į senior pozicijas. Pradėkite nuo Docker: supraskite, kaip veikia images, containers, volumes, networking. Tada pereikite prie Docker Compose daugiakontaineriniams projektams. Kubernetes galite pradėti su Minikube arba Kind lokaliai — nereikia iš karto mokėti už cloud klasterį.
CI/CD įrankiai — Jenkins, GitLab CI, GitHub Actions, CircleCI. Svarbu ne mokėti visus, o giliai suprasti bent vieną ir sugebėti greitai adaptuotis prie kitų. GitHub Actions šiandien yra puiki pradžia — nemokama, gerai dokumentuota, ir daugelis open source projektų ją naudoja, tad galite mokytis iš realių pavyzdžių.
Infrastructure as Code (IaC) — Terraform ir Ansible yra du pagrindiniai žaidėjai. Terraform skirtas infrastruktūros provisioningui (sukurti serverius, tinklus, duomenų bazes), Ansible — konfigūracijos valdymui. Abu verta mokėti. Pradėkite nuo Terraform su AWS free tier arba su lokaliu Localstack.
Debesų platformos — AWS, Azure, GCP. Realiai pakanka gerai mokėti vieną. AWS turi didžiausią rinkos dalį, tad statistiškai tikimybė, kad darbdavys naudoja AWS, yra didžiausia. Bet jei jau dirbate įmonėje, kuri naudoja Azure — investuokite į Azure žinias.
Monitoringas ir observability — Prometheus, Grafana, ELK stack (Elasticsearch, Logstash, Kibana), Datadog. Šis aspektas dažnai pamirštamas, bet produkcijoje tai yra jūsų akys ir ausys. Supraskite metrikų, logų ir traces skirtumą — tai yra observability trijulė.
Nuo ko pradėti, jei esate visiškas naujokas
Viena iš dažniausių klaidų — bandyti mokytis viską vienu metu. Žmogus atsidaro 15 kursų, perka knygas apie Kubernetes, Docker, Terraform, AWS, ir po mėnesio nieko iš to nemoka, nes viskas susimaišo į vieną didelę techninę košę.
Štai konkretus kelias, kuris veikia:
Pirmiausia — Linux pagrindai. Skirkite 4-6 savaites. Linux Journey svetainė yra nemokama ir gerai struktūruota. The Odin Project taip pat turi gerą Linux sekciją. Tikslas: jaustis patogiai terminale, suprasti failų sistemą, žinoti pagrindinias komandas.
Antra — Git ir versijų kontrolė. Tai ne DevOps specifinis įgūdis, bet be jo niekur. GitHub, branching strategijos, merge vs rebase — visa tai turi būti aišku. Praktikuokite su realiais projektais, net jei tai tik jūsų asmeniniai skriptai.
Trečia — Python arba Bash skriptai. DevOps inžinierius daug automatizuoja. Python šiandien yra populiaresnis pasirinkimas — jis universalesnis, turi puikias bibliotekas ir lengviau skaitomas. Bet Bash taip pat svarbus, nes daug CI/CD pipeline’ų rašomi Bash.
Ketvirta — Docker. Kai turite Linux ir skriptų pagrindą, Docker mokymasis bus daug lengvesnis. Sukurkite paprastą web aplikaciją (gali būti Python Flask arba Node.js), sukurkite jai Dockerfile, paleiskite konteinerį, eksponuokite portą.
Penkta — Viena CI/CD platforma. GitHub Actions yra geriausias pasirinkimas pradedantiesiems. Sukurkite paprastą pipeline, kuris automatiškai testuoja ir „deploja” jūsų Docker konteinerį.
Šešta — Viena debesų platforma. AWS su free tier leidžia eksperimentuoti nemokamai. EC2, S3, VPC, IAM — tai pagrindiniai servisai, kuriuos reikia suprasti.
Sertifikatai: ar jie tikrai verti pinigų ir laiko?
Šis klausimas sukelia daug diskusijų DevOps bendruomenėje. Viena stovykla sako, kad sertifikatai yra tik popierius ir darbdaviai žiūri tik į realius projektus. Kita stovykla sako, kad sertifikatai atidaro duris ir padeda struktūruotai mokytis.
Tiesa, kaip dažniausiai, yra kažkur per vidurį.
AWS Certified Solutions Architect – Associate yra vienas iš labiausiai pripažintų sertifikatų rinkoje. Jei planuojate dirbti su AWS, šis sertifikatas tikrai padeda — tiek mokymosi proceso metu, tiek CV. Egzaminas nėra trivialus, bet su 2-3 mėnesių pasirengimu ir praktika pasiekiamas.
Certified Kubernetes Administrator (CKA) — jei Kubernetes yra jūsų tikslas, šis sertifikatas yra labai vertinamas. Skirtingai nuo daugelio sertifikatų, CKA egzaminas yra praktinis — jūs sprendžiate realias problemas terminale, o ne atsakinėjate į multiple choice klausimus. Tai reiškia, kad jis tikrai parodo, ar mokate dirbti su Kubernetes.
HashiCorp Terraform Associate — jei IaC yra jūsų kryptis, šis sertifikatas yra nebrangus (apie 70 USD) ir gerai žinomas.
Praktinis patarimas: nesikaupdami sertifikatų dėl sertifikatų. Geriau turėti du giliai suprasti sertifikatus nei penkis paviršutiniškai. Ir visada derinkite sertifikato mokymąsi su realiais projektais — teorija be praktikos greitai išgaruoja.
Karjeros trajektorijos ir atlyginimų realybė
DevOps karjera nėra viena linijinė trajektorija — yra kelios kryptys, ir svarbu suprasti, kuri jums artimesnė.
Klasikinis DevOps inžinierius — dirba su CI/CD, automatizuoja procesus, valdo infrastruktūrą. Tai plačiausias ir labiausiai paplitęs vaidmuo. Lietuvoje junior pozicijoms atlyginimas svyruoja nuo 1500 iki 2500 EUR neto, mid-level — 2500-4000 EUR neto, senior — 4000+ EUR neto. Vakarų Europoje ir JAV skaičiai reikšmingai didesni.
Site Reliability Engineer (SRE) — šis vaidmuo atsirado Google ir yra labiau orientuotas į reliability, performance ir scalability. SRE inžinieriai dažnai turi stipresnį programavimo pagrindą nei klasikiniai DevOps inžinieriai. Atlyginimas paprastai aukštesnis, bet ir reikalavimai didesni.
Platform Engineer — palyginti naujas vaidmuo, kuris orientuotas į vidinių developer platformų kūrimą. Jei klasikinis DevOps inžinierius kuria pipeline’us konkretiems projektams, Platform Engineer kuria įrankius ir platformas, kurias naudoja visi kūrėjai organizacijoje. Tai labiau produkto mąstymas, pritaikytas infrastruktūrai.
Cloud Architect — tai dažniausiai senior arba principal lygio pozicija, kuri reikalauja gilių žinių apie debesų architektūrą, saugumo principus ir verslo reikalavimus. Čia jau kalbame apie 5+ metų patirtį.
Vienas svarbus dalykas apie atlyginimus: remote darbo galimybės DevOps srityje yra labai geros. Daug Lietuvos DevOps inžinierių dirba Vakarų Europos arba JAV įmonėms nuotoliniu būdu ir gauna atitinkamus atlyginimus. Tai reikšmingai keičia finansinę lygtį.
Portfelio kūrimas: kaip parodyti, kad moki, kai dar neturi patirties
Tai klasiška problema: darbdaviai nori patirties, bet kaip gauti patirties be darbo? DevOps srityje ši problema sprendžiama per asmeninius projektus ir open source įnašus.
Štai kelios konkrečios idėjos, kaip sukurti portfelį:
Automatizuotas homelab — jei turite seną kompiuterį arba Raspberry Pi, sukurkite namų serverį. Įdiekite Proxmox arba tiesiog Ubuntu Server, sukurkite virtualias mašinas, įdiekite Kubernetes klasterį (k3s puikiai tinka mažiems resursams), sukurkite monitoringo sistemą su Prometheus ir Grafana. Visa tai dokumentuokite GitHub repozitorijoje su README, kuris paaiškina architektūrą ir sprendimus.
Visiškai automatizuota aplikacijos deployment sistema — paimkite bet kurią open source aplikaciją (arba sukurkite paprastą savo), sukurkite Dockerfile, Kubernetes manifests arba Helm chart, GitHub Actions pipeline, kuris automatiškai testuoja, kuria Docker image ir deploja į Kubernetes. Tai parodo visą DevOps ciklą.
Terraform moduliai — sukurkite Terraform modulius, kurie automatiškai sukuria AWS infrastruktūrą. Pavyzdžiui, modulis, kuris sukuria VPC su public ir private subnets, EC2 instancijas, load balancer. Publikuokite Terraform Registry — tai rodo, kad mokate ne tik rašyti Terraform, bet ir galvojate apie reusability.
Open source įnašai — tai ne tik kodas. Dokumentacijos gerinimas, bug reportai su detaliais aprašymais, klausimų atsakymai GitHub Issues — visa tai rodo bendruomeniškumą ir komunikacijos įgūdžius. Pradėkite nuo projektų, kuriuos patys naudojate.
Svarbus patarimas: visi šie projektai turi būti gerai dokumentuoti. Darbdavys, žiūrintis į jūsų GitHub profilį, neturėtų spėlioti, ką jūs padarėte ir kodėl. README failas turi paaiškinti problemą, sprendimą, architektūrą ir kaip paleisti projektą.
Minkštieji įgūdžiai, kurie skiria gerą DevOps inžinierių nuo puikaus
Techniniai įgūdžiai yra būtina sąlyga, bet ne pakankama. DevOps inžinieriai dirba tarpusavyje su kūrėjais, produkto vadybininkais, saugumo komanda, kartais tiesiogiai su klientais. Komunikacija čia yra ne „nice to have”, o kritinis įgūdis.
Gebėjimas paaiškinti techninius dalykus netechniniams žmonėms — tai sunkiau nei atrodo. Kai produkto vadybininkas klausia, kodėl deployment užtrunka 45 minutes, jūs turite paaiškinti tai taip, kad jis suprastų, kodėl tai problema ir ką reikia daryti, be to, kad paskęstų techninėse detalėse.
Incidentų valdymas — produkcijoje viskas genda. Klausimas ne ar, o kada. Geras DevOps inžinierius incidento metu išlieka ramus, sistemingai diagnozuoja problemą, komunikuoja statusą suinteresuotoms šalims ir po incidento rašo post-mortem, kuris padeda išvengti panašių problemų ateityje. Post-mortem kultūra — be kaltinimų, orientuota į sistemas — yra vienas iš svarbiausių DevOps kultūros elementų.
Saugumo mąstysena — DevSecOps nėra tik dar vienas buzzword. Saugumo integravimas į CI/CD pipeline’us, secrets valdymas, least privilege principas — tai turi būti natūrali mąstysenos dalis, ne atskiras žingsnis proceso pabaigoje.
Nuolatinis mokymasis — DevOps ekosistema keičiasi labai greitai. Įrankiai, kurie buvo standartai prieš penkerius metus, gali būti pasenę šiandien. Tai nereiškia, kad reikia sekti kiekvieną naują įrankį, bet reikia turėti sistemą, kaip sekti industrijos tendencijas ir nuspręsti, ką verta mokytis.
Kai teorija susitinka su realybe: ko tikėtis pirmame DevOps darbe
Pirmasis DevOps darbas dažnai yra šokas — ir tai normalu. Reali infrastruktūra visada yra sudėtingesnė, netvarkingesnė ir pilnesnė istorinių sprendimų nei bet koks mokymosi projektas.
Tikėtina, kad rasite „legacy” sistemas, kurios veikia, bet niekas tiksliai nežino kaip. Rasite dokumentaciją, kuri yra pasenusi arba jos visai nėra. Rasite procesus, kurie egzistuoja „nes taip visada buvo”. Ir tai yra jūsų galimybė — ne problema.
Pirmais mėnesiais svarbiausia yra klausyti ir suprasti, kodėl sistema veikia taip, kaip veikia, prieš bandant ją keisti. Daug jaunų inžinierių daro klaidą — ateina su entuziazmu ir nori viską pertvarkyti pagal „best practices”. Bet kiekvienas sprendimas turi kontekstą, ir tas kontekstas ne visada matomas iš išorės.
Kitas svarbus aspektas — on-call pareigos. Daugelyje DevOps pozicijų yra on-call rotacija, kas reiškia, kad kartais reikia reaguoti į incidentus naktį arba savaitgalį. Tai yra realybė, kurią reikia priimti ir su kuria reikia susitvarkyti — tiek techniškai (turėti gerus runbooks ir automatizuotą alertingą), tiek asmeniškai (turėti aiškias ribas ir recovery rutinas).
Ir galiausiai — nesitikėkite, kad viskas bus tobula. Geras DevOps inžinierius ne tas, kuris kuria tobulas sistemas, o tas, kuris kuria sistemas, kurios gali atsigauti po gedimų, kurios yra observuojamos ir kurias galima tobulinti inkrementiškai. Tobulumas yra priešas gero — ypač DevOps pasaulyje, kur greitis ir patikimumas turi egzistuoti kartu.
DevOps karjera yra maratonas, ne sprintas. Kiekvienas incidentas, kiekvienas sudėtingas migracijos projektas, kiekviena naktis, praleista debuginant produkciją — visa tai kaupiasi į patirtį, kuri negali būti išmokta iš kursų ar knygų. Ir tai yra tiek šios srities iššūkis, tiek jos grožis.






