Blog

DevOps: Idemo sad, svi zajedno!

DevOps je zgodno nazvan skup ideja, koncepta i aktivnosti s ciljem pojednostavljenja izgradnje, puštanja u rad i održavanja sustava koji su po svojoj prirodi kompleksni i promjenjivi.
, 20.04.2016.

Kad Mišo digne ruke, zna se što slijedi: svi pjevaju istu pjesmu, od početka do kraja, usklađeno i bez ikakvih poteškoća. Samoorganizirajući tim na djelu, netko bi rekao. Je li takvo što moguće i u svijetu proizvodnje softvera? Čini se da jest.

Tipičan scenarij rada na velikom softverskom projektu u enterprise IT okruženjima ide otprilike ovako: rok za isporuku je fiksiran i tu nema mrdanja. Razvojni tim kasni zbog, iz njihove perspektive, nejasnih zahtjeva, kojih uz to i ima previše za zadani rok, da ne spominjemo stalne promjene u definicijama. Poslovnjaci se živciraju jer očigledno sve funkcionalnosti neće biti spremne na vrijeme, a obećali su naručiteljima, tržištu i svima između. Režu se aktivnosti koje, navodno, samo troše vrijeme bez neke vidljive dobiti, poput integracijskog testiranja. Puštanje softvera u rad na produkcijskoj okolini, koja je jedina koliko-toliko stabilna, traje cijeli vikend i pitanje je hoće li sve ostalo biti na svom mjestu u ponedjeljak ujutro. U prvi dan produkcije, koji je ujedno i prvi pravi test funkcionalnosti, ulazi se u fotofinišu. Testiranje performansi ili visoke dostupnosti sustava nitko ni ne spominje, ali su zato svi u strahu od nove verzije s ispravcima najočitijih problema, koja je na redu po svemu sudeći već sutra.

Paradoks je u tome da i razvojni tim, i poslovnjaci i sistemaši daju sve od sebe, organiziraju svoje dijelove posla najbolje što mogu, ali cijeli proces ipak škripi.

Drugim riječima, svi se trude a rezultati nekako izostaju.

Svi pjevaju, ja ne čujem

Mora li baš tako biti? Ne mora, a odgovor donosi DevOps, zgodno nazvan skup ideja, koncepta i aktivnosti s ciljem pojednostavljenja izgradnje, puštanja u rad i održavanja sustava koji su po svojoj prirodi kompleksni i promjenjivi.

DevOps nije nov koncept, ni vremenski ni sadržajno. Oduvijek su se organizirale krizne sobe gdje su dan i noć sjedili svi, od razvojaša do sistemaša, i iz kojih se upravljalo puštanjem u rad velikih softverskih projekata. Problem je što su se takve krizne sobe organizirale tek kad je kriza već debelo ugrozila projekt. Danas, kad su agilne i lean metode rada već naveliko prihvaćene u razvoju softvera (i ne samo softvera), proširuju se “Ops“ dijelom tvoreći tako integralnu disciplinu koja, pokazuju to sirove brojke, znatno poboljšava zadovoljstvo svih sudionika u proizvodnom procesu: od naručitelja, preko razvoja, do sistem-administratora.

Što kažu sirove brojke?

Puppet Labs Inc. je tvrtka koja se bavi automatizacijom IT okruženja i već četvrtu godinu zaredom provodi istraživanje koje zatim objavljuje u “Izvještaju o stanju DevOpsa“ (State of DevOps Report). Za ovu, 2015. godinu brojevi su sve samo ne dosadni.

Visokoučinkovite IT organizacije 30 puta češće puštaju u rad dovršene i testirane komade softvera. Uz to, vrijeme od stavljanja izvornoga koda u repozitorij (source code commit) do produkcije je 200 puta kraće, ima 60 puta manje problema, a i kad se problemi dogode, 168 puta se brže riješe. Zamislite, recimo, IT organizaciju kojoj treba šest do osam tjedana da nešto implementira i koja stavlja nove stvari u produkciju jednom tjedno. A sad zamislite ekvivalentnu IT organizaciju u konkurentskoj tvrtki kojoj treba 60 do 90 minuta od commita do produkcije, i tako pet ili deset puta dnevno. Kad se linija koda napiše, praktički se odmah kompajlira, testira i pušta u rad. S pristupom iz pretpotopnog doba, prvospomenuta tvrtka jednostavno nema šanse.

Tri četvrtine tvrtki koje su sudjelovale u istraživanju imaju do 2000 zaposlenika, a 87% ispitanih tvrtki ima 20 ili više servera u svojoj infrastrukturi; znači nešto što se lako može preslikati na situaciju u Hrvatskoj.

Na temelju gornjih podataka, ekipa iz Puppet Labsa zaključuje da visokoučinkovit i dobro organiziran IT odjel ima i stvarnu poslovnu vrijednost, te istovremeno znatno pridonosi performansama cjelokupne organizacije. Drugačije rečeno, organizacije koje na IT gledaju kao na pokretača poslovnih aktivnosti umjesto kao na čisti operativni trošak su u vidljivoj prednosti nad konkurencijom.

Koji su konkretni koraci?

DevOps se ne kupuje, DevOps se gradi.

Kao recimo Enterprise arhitektura ili neka od agilnih metodologija razvoja softvera, i DevOps je većim dijelom stvar interne kulture i stava prema procesu proizvodnje softvera. Osnovni je problem kako eliminirati zid između razvoja i operacija, odnosno ništa specijalno pozitivno neće se dogoditi sve dok se administrator produkcijske baze pita zašto ga trebaju na samom početku projekta, a ne tek kad je sve gotovo i treba to lansirati. Jednom kad se prihvati ideja da svi zajedno i s jednako važnim udjelom sudjeluju u procesu proizvodnje softvera, možemo početi razmišljati o konkretnim koracima.

Recimo da je ideja DevOpsa kliknula u vašoj organizaciji i da ste dobili zadatak srediti proces proizvodnje softvera. Koji je recept? Je li uopće moguće definirati recept uvođenja DevOpsa? Odgovor je, naravno, i da i ne. Koliko god je ovaj koncept vezan uz promjenu interne kulture i načina rada, toliko se mogu prepoznati i određeni konkretni tehnički koraci bez kojih DevOps nema smisla.

Prvi korak bi vjerojatno bio dovesti razvojni tim (Dev) i operacije (Ops) za isti stol, i to u najranijoj fazi projekta, dakle već kod osmišljavanja i dizajniranja softverskog produkta. Logika iza ovog koraka leži u činjenici da će se krajnji proizvod, softver, morati moći pokrenuti na nekoj okolini. Istovremeno, serveri ne postoje tek tako, već da bi se na njima i događalo nešto korisno. Ne želimo si dozvoliti da razvojni tim nešto programira i nada se najboljem da će se to ustvari i moći pokrenuti na produkcijskim serverima, dok istovremeno sistemaši ne znaju što im se iza brda valja.

Iz suradnje razvojnog i operativnog tima izrodit će se proces izgradnje i puštanja  u rad (build&deploy) produciranog softvera. Taj proces želimo ne samo automatizirati već se i pripadajuće skripte i konfiguracija okolina moraju spremiti u repozitorij, paralelno s “pravim“ izvornim kodom. Sve što se radi s programskim izvornim kodom (verzioniranje itd.) mora se raditi i s izvedbenim okolinama. Ostvarivanjem ova dva koraka daleko smo već odmakli u procesu uvođenja DevOpsa.

Nadalje, želimo razvojnom timu olakšati testiranje proizvoda na okolini što sličnijoj produkcijskoj, a istovremeno želimo znati da će se krajnji proizvod moći i instalirati u produkciju bez problema. Dev i Ops timovi će definirati i omogućiti kreiranje serverskih okolina, vrlo sličnih ciljanoj produkcijskoj. Također, razvojni tim će imati mogućnost pokretanja (i uništavanja) tih okolina prema svojim potrebama. Virtualizacija je nužna za uspješnu realizaciju ove ideje.

Automatizacija svih vrsta testiranja je logičan sljedeći korak, od čiste provjere ispravnosti izvornoga koda (“Da, kompajlira se, idemo dalje.“), preko pokretanja unit testova i regresijskog testiranja, pa sve do testiranja performansi.

Ovdje u igru ulazi i platforma za podršku DevOpsima, odnosno skup alata ili možda i jedinstveno, integralno rješenje koje čuči sa strane, prepoznaje commit u repozitoriju izvornoga koda i automatski pokreće izgradnju, pokretanje odgovarajuće izvedbene okoline, instalaciju krajnjeg produkta u tu okolinu, automatsko pokretanje testova te obavještava sve zainteresirane strane o rezultatima aktivnosti.

Ako se svi navedeni koraci kvalitetno odrade, imat ćemo uvijek spreman proizvod koji se izvodi na “gotovo pa produkcijskoj“ okolini, testiran i spreman za rad, a puštanje u produkciju svodi se na jedan klik mišem.

Kako dalje?

Baš kao što bi Mišo rekao (zapjevao?), “Idemo sad svi zajedno“, tako se i IT treba zagledati i zapitati: “Kako svi mi, sudionici u procesu proizvodnje softvera, zajedno možemo olakšati taj isti proces, od poslovnog zahtjeva do produkcije?“. Dobar je početak formiranje zajedničkog razvojno-operativnog tima, a odmah zatim automatizacija svega. A dalje? Puštanje u rad novih funkcionalnosti, svakih… Zašto ne, svakih 5 minuta.

Tagovi:
Povratak