Kdo je DevOps in kdaj ni potreben

Kdo je DevOps in kdaj ni potreben

Tema DevOps je v zadnjih nekaj letih postala zelo priljubljena. Mnogi sanjajo o tem, da bi se vanjo vključili, a kot kaže praksa, pogosto zgolj zaradi višine plač.

Nekateri v svojem življenjepisu navajajo DevOps, čeprav ne vedo in ne razumejo povsem pomena tega izraza. Nekdo meni, da bo takoj 'devops', če se nauči Ansible, GitLab, Jenkins, Terraform in podobnih orodij (seznam lahko še kar nadaljujemo). To seveda ni res.

V zadnjih nekaj letih se predvsem ukvarjam z uvajanjem DevOps v različnih podjetjih. Pred tem sem več kot 20 let delal na položajih od sistemskega administratorja do IT direktorja. Zdaj sem DevOps Lead Engineer v Playgendary.

Kdo je DevOps

Ideja o pisanju članka se je pojavila po še enem vprašanju: 'kdo je DevOps?'. Še vedno ni ustaljenega izraza, kaj ali kdo točno je. Del odgovorov je že v tem video. Najprej bom izpostavil glavne točke iz njega, nato pa bom delil svoje opazke in misli.

DevOps ni specialist, ki ga lahko najamete, ni skupek orodij, in ni oddelek razvijalcev z inženirji.

DevOps je filozofija in metodologija.

Z drugimi besedami, to je skupek praks, ki omogoča aktivno sodelovanje razvijalcev s sistemskimi administratorji. To pomeni povezovanje in integracijo delovnih procesov drug v drugega.

S pojavom DevOps so struktura in vloge strokovnjakov ostale enake (imamo razvijalce, imamo inženirje), vendar so se spremenila pravila sodelovanja. Meje med oddelki so se zabrisale.

Cilje DevOps lahko opisujemo s tremi točkami:

  • Programska oprema se mora redno posodabljati.
  • Programska oprema mora nastajati hitro.
  • Programska oprema mora biti enostavno in hitro nameščena.

DevOps nima enega samega orodja. Nastaviti, namestiti in raziskati več produktov ne pomeni, da je podjetje pridobilo DevOps. Orodij je zelo veliko in odgovarjajo različnim fazam, a služijo eni skupni izjavi.

Kdo je DevOps in kdaj ni potreben
In to je le del orodij DevOps

Že več kot 2 leti opravljam razgovore za pozicijo DevOps in prišel sem do spoznanja, kako pomembno je jasno razumeti bistvo tega izraza. Nabrala so se specifična izkušnja, opazovanja in misli, ki jih želim deliti.

Iz izkušenj s razgovori vidim takšno sliko: strokovnjaki, ki menijo, da je DevOps položaj, običajno imajo nesporazume s kolegi.

Bil je živ primer. Na razgovor za delo je prišel mladenič z veliko pametnimi besedami v življenjepisu. Na zadnjih treh delovnih mestih je imel izkušnje 5-6 mesecev. Iz dveh zagonskih podjetij je odšel, ker »nista uspela«. Glede tretjega podjetja pa je rekel, da ga tam nihče ne razume: razvijalci pišejo kodo za Windows, direktor pa zahteva, da se ta koda »zapakira« v navadni Docker in vključi v CI/CD pipeline. Fant je veliko negativnega povedal o svojem trenutnem delovnem mestu in kolegih — kar si želel odgovoriti: »Torej, ti slona ne prodaš.«

Nato sem mu postavil vprašanje, ki je v mojem seznamu eno prvih za vsakega kandidata.

— Kaj zate osebno pomeni DevOps?
— Na splošno ali kot to jemljem jaz?

Zanimalo me je njegovo osebno mnenje. Poznal je teorijo in izvor izraza, a se je z njim kategorično nesoglašal. Menil je, da je DevOps — služba. Tu se skriva koren njegovih težav. Tako kot pri drugih strokovnjakih s podobnim mnenjem.

Delodajalci, ki so slišali o »magiji DevOps«, želijo najti osebo, ki bo prišla in ustvarila to »magijo«. Kandidati iz razreda »DevOps — to je služba« ne razumejo, da pri takšnem pristopu ne morejo izpolniti pričakovanj. In sploh so v svojem življenjepisu navedli DevOps, ker je to trend in zato plačujejo dobro.

Metodologija in filozofija DevOps

Metodologija je lahko teoretična in praktična. V našem primeru — drugo. Kot sem že omenil, je DevOps niz praks in strategij, ki se uporabljajo za dosego zastavljenih ciljev. In v vsakem primeru, odvisno od poslovnih procesov podjetja, se lahko bistveno razlikuje. Kar ne pomeni, da je boljša ali slabša.

Metodologija DevOps je le sredstvo za dosego zastavljenih ciljev.

Zdaj glede tega, kaj je filozofija DevOps. In to je verjetno najtežje vprašanje.

Oblikovati kratek in jedrnat odgovor je precej težko, saj še ni formaliziran. Ker se privrženci filozofije DevOps bolj ukvarjajo s prakso — ni časa za filozofiranja. Kljub temu pa je to zelo pomemben proces. In se neposredno nanaša na inženirsko dejavnost. Obstaja celo specializirano področje znanja — filozofija tehnike.

Na mojem fakultetu takvog predmeta nije bilo, morao sam sve samostalno učiti iz materijala koje sam mogao pronaći devedesetih. Tema nije obavezna za inženjersko obrazovanje, odakle i nedostatak formalizacije odgovora. Ali ljudi koji su se ozbiljno posvetili DevOps-u počinju osjećati neku vrstu „duha” ili „nesvjesne sveobuhvatnosti” svih procesa unutar kompanije.

Na svom iskustvu pokušao sam formalizirati neke „postulate” te filozofije. Rezultat je sljedeći:

  • DevOps nije nešto samostalno što se može odvojiti u posebnu oblast znanja ili djelovanja.
  • DevOps metodologijom trebaju se voditi svi zaposlenici kompanije prilikom planiranja svojih aktivnosti.
  • DevOps obuhvata sve procese unutar kompanije.
  • DevOps postoji kako bi smanjio vremenske troškove svih procesa unutar kompanije kako bi podržao razvoj njenih usluga i maksimalnu udobnost klijenata.
  • DevOps, modernim jezikom, predstavlja proaktivnu poziciju svakog zaposlenika kompanije usmjerenu na smanjenje vremenskih troškova i poboljšanje kvaliteta IT proizvoda oko nas.

Mislim da su moji „postulati” zasebna tema za raspravu. Ali sada imamo od čega krenuti.

Šta DevOps čini

Ključna riječ ovdje je – komunikacije. Puno komunikacija, čiji inicijator treba biti upravo taj DevOps inženjer. Zašto? Zato što je to filozofija i metodologija, a tek potom inženjerska znanja.

O zapadnom tržištu rada ne mogu govoriti sa 100% sigurnošću. Ali o tržištu DevOps-a u Rusiji znam prilično mnogo. Osim stotine intervjua, u posljednjih godinu i po dana sudjelovao sam u stotinama tehničkih presaleova za uslugu „Uvođenje DevOps-a” za velika ruska poduzeća i banke.

V Rusiji je DevOps še vedno zelo mlada, a že trendovska tema. Po mojih informacijah je v Moskvi le v letu 2019 primanjkovalo več kot 1000 takšnih strokovnjakov. Beseda Kubernetes je za delodajalce skorajda kot rdeča krpa za bika. Privrženci tega orodja so pripravljeni uporabiti ga celo tam, kjer to ni potrebno in ekonomično ni smiselno. Delodajalec ne razume vedno, v katerih primerih je smiselno uporabiti kaj drugega, medtem ko lahko stroški ustrezne namestitve Kubernetes klasterja znašajo 2-3 krat več, kot klasična razporeditev aplikacij. Uporabljajte ga tam, kjer je to res potrebno.

Kdo je DevOps in kdaj ni potreben

Vpeljava DevOps z vidika stroškov je draga. Opravičena je le tam, kjer prinaša ekonomsko korist na drugih področjih, ne pa sama po sebi.

DevOps inženirji so pravzaprav pionirji — ravno oni morajo prvi uvesti to metodologijo v podjetje in vzpostaviti procese. Da bi to bilo uspešno, mora strokovnjak stalno sodelovati s sodelavci in kolegi na vseh ravneh. Kot običajno pravim, v proces vpeljave DevOps morajo biti vključeni vsi zaposleni v podjetju: od čistilke do izvršnega direktorja. To je obvezno. Če najmlajši član ekipe ne bo vedel in razumel, kaj je DevOps in zakaj se izvajajo določene organizacijske naloge, uspešna vpeljava ne bo mogoča.

Prav tako mora DevOps inženir občasno izkoristiti administrativne vire. Na primer, za premagovanje 'upora okolja' — ko ekipa ni pripravljena sprejeti orodij in metodologije DevOps.

Razvijalec mora pisati le kodo in teste. Za to ne potrebuje supermočnega prenosnika, na katerem bi lokalno namestil in vzdrževal vse projekte infrastrukturne. Na primer, frontend razvijalec ima na prenosniku vse elemente aplikacije, vključno z bazo podatkov, emulacijo S3 (minio) in druge. Torej porablja veliko časa za vzdrževanje te lokalne infrastrukture in se sam spopada z vsemi težavami takšne rešitve. Namesto da bi razvijal kodo za frontend. Takšni ljudje se lahko močno upirajo kakršnim koli spremembam.

Obstajajo pa ekipe, ki so nasprotno navdušene nad uvajanjem novih orodij in metod, ter aktivno sodelujejo v tem procesu. Tudi v takšnih primerih komunikacija med DevOps inženirjem in ekipo ni nič manj pomembna.

Kdaj DevOps ni potreben

Obstajajo situacije, ko DevOps ni potreben. To je dejstvo, ki ga je treba razumeti in sprejeti.

To se predvsem nanaša na vse podjetja (zlasti mala podjetja), katerih dobiček ni neposredno odvisen od obstoja ali neobstoja IT produktov, ki nudijo informacijske storitve strankam. Tu ne govorimo o spletni strani podjetja, ne glede na to, ali gre za statično 'vizitko' ali dinamične novičarske bloke itd.

DevOps je potreben, kadar je zadovoljstvo vaših strank in njihova želja po ponovnem obiskovanju odvisna od kakovosti teh informacijski storitev za interakcijo s strankami.

Odličen primer je ena znana banka. Podjetje nima običajnih poslovalnic, dokumentacija se obdeluje preko pošte ali kurirjev, številni zaposleni pa delajo od doma. Podjetje se je prenehalo obnašati kot le banka in se po mojem mnenju spremenilo v IT podjetje z razvitimi DevOps tehnologijami.

Mnoge druge primere in predavanja lahko najdete v posnetkih tematskih meetupov in konferenc. Deloma sem jih osebno obiskal — to je zelo koristna izkušnja za tiste, ki se želijo razvijati na tem področju. Tukaj so povezave do YouTube kanalov z dobrimi predavanji in gradivi o DevOps:

Zdaj si oglejte svoje podjetje in razmislite o tem: kako močno je vaše podjetje in njegov dobiček odvisen od IT produktov, ki zagotavljajo interakcijo s strankami?

Če vaše podjetje prodaja ribo v majhni trgovini in je edini IT izdelek dve konfiguraciji 1C: Podjetje (Računovodstvo in UNF), potem verjetno ni smisla govoriti o DevOps.

Če pa delate v velikem trgovskem in proizvodnem podjetju (na primer, če proizvajate lovske puške), potem se splača razmisliti. Lahko prevzamete pobudo in svojemu vodstvu predstavite možnosti uvajanja DevOps. Ob tem pa lahko tudi vodite ta proces. Proaktivna drža je eden izmed pomembnih postulativ filozofije DevOps.

Velikost a objem ročního finančního obratu není hlavním kritériem pro určení, zda vaše společnosti DevOps potřebuje.

Představme si velký průmyslový podnik, který přímo nekomunikuje se zákazníky. Například některé automobilky a výrobci automobilů. Momentálně si nejsem jistý, ale z mých předchozích zkušeností, po mnoho let bylo veškeré interakce se zákazníky prováděno prostřednictvím e-mailu a telefonu.

Jejich klienti jsou omezený seznam automobilových dealerů. A každý z nich má přiděleného specialistu od výrobce. Veškerá vnitřní dokumentace probíhá prostřednictvím ERP SAP. Interní zaměstnanci jsou v podstatě klienty informačního systému. Správa tohoto IS je však realizována klasickými metodami řízení clusterových systémů. Co vylučuje možnost použití praktik DevOps.

Z toho vyplývá: pro takové podniky není zavedení DevOps kriticky důležité, pokud si vzpomeneme na cíle metodologie zmíněné na začátku článku. Ale nevylučuji, že některé nástroje DevOps dnes používají.

Na druhé straně existuje mnoho malých společností, které vyvíjejí software pomocí metodologie, filozofie, praktik a nástrojů DevOps. A považují náklady na zavedení DevOps za výdaje, které jim umožňují efektivně konkurovat na trhu softwaru. Příklady takových společností lze vidět ovde.

Hlavním kritériem pro pochopení, zda DevOps potřebujete, je jaký význam mají vaše IT produkty pro společnost a zákazníky.

Pokud je hlavním produktem společnosti, který generuje zisk, software — potřebujete DevOps. A není tak důležité, zda skutečné peníze vyděláváte prodejem jiných produktů. Sem také patří internetové obchody nebo mobilní aplikace s hrami.

Jakékoliv hry existují díky financování: přímému nebo nepřímému ze strany hráčů. Ve společnosti Playgendary vyvíjíme bezplatné mobilní hry, jejichž přímého vývoje se účastní více než 200 lidí. Jak používáme DevOps?

Ano, přesně tak, jak je popsáno výše. Neustále komunikuji s vývojáři a testery, provádím interní školení zaměstnanců o metodologii a nástrojích DevOps.

Trenutno aktivno koristimo Jenkins kao alat za CI/CD pipelines za izvođenje svih buildova sa Unity i naknadno objavljivanje na App Store i Play Market. Takođe iz klasičnog seta alata:

  • Asana — za upravljanje projektima. Postavljena je integracija sa Jenkinsom.
  • Google Meet — za održavanje video sastanaka.
  • Slack — za komunikaciju i različita obaveštenja, uključujući notifikacije iz Jenkins-a.
  • Atlassian Confluence — za dokumentovanje i rad u grupi.

U narednim planovima je implementacija statičke analize koda uz pomoć SonarQube-a i sprovođenje automatizovanog UI testiranja sredstvima Selenium-a tokom procesa Kontinuirane Integracije.

Namesto zaključka

Želim da završim sledećom mišlju: da bi postao visoko kvalifikovani DevOps inženjer, od suštinske je važnosti naučiti da se živo komunicira sa ljudima.

DevOps inženjer je timski igrač. I ništa drugačije. Inicijativa u komunikaciji sa kolegama treba da dolazi od njega samog, a ne pod uticajem nekih okolnosti. DevOps stručnjak treba da uoči i predloži najbolje rešenje za tim.

Da, implementacija bilo kog rešenja zahtevaće mnogo diskusija, a na kraju može čak i da se menja. Razvijajući se samostalno, nudeći i ostvarujući svoje zamisli — takva osoba predstavlja sve veću vrednost kako za tim, tako i za poslodavca. Što na kraju odražava i na visini njenog mesečnog prihoda ili u vidu dodatnih premija.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster