ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 44
Abonament PDF

Adoptarea unei culturi DevOps

Claudiu Demian
Systems Administrator
@Yardi România



PROGRAMARE


DevOps-ul este un fenomen tot mai întâlnit astăzi în mediul IT și reprezintă probabil viitorul modului în care ne organizăm munca în comunitățile noastre. Vom vedea în rândurile următoare de unde a apărut nevoia pentru el, cum se prezintă astăzi și de ce este considerat o cultură, nu o metodologie. La final, un exemplu concret ne va arăta cum este adoptat DevOps-ul într-o companie clujeană.

Mic istoric

Domeniul IT a trecut de-a lungul timpului prin mai multe faze atât tehnologice cât și organizaționale. Fie că ne dăm seama sau nu, modul în care ne organizăm munca în cadrul echipelor a depins într-o oarecare măsură, de nivelul tehnologic de la momentul respectiv.

Modelul waterfall de dezvoltare software a apărut (ca faze, nu ca nume), în 1956, fiind probabil, primul mod de standardizare al acestui proces. El cuprinde în mare următoarele etape: analiză și design, implementare, testare și întreținere.

Limitările tehnologice au permis menținerea acestui proces o perioadă îndelungată de timp. Software-ul era rulat fie pe mainframe-uri la firma care crea software-ul, fie era livrat static clientului (CD, dischete etc).

De asemenea, au apărut roluri bine definite în organizații: dezvoltatori (programatori), administratori de sisteme, administratori baze de date, ingineri rețele etc. .

Dar, cu timpul, a apărut o problemă: clientul.

De multe ori părea să fie cam indecis și chiar ambiguu. Atât de ambiguu încât un coleg din firma noastră și-a scris lucrarea de doctorat având ca temă "Ambiguitatea în cerințele software". Dar mai gravă era indecizia. Aceasta genera mereu schimbări în cerințe, care duceau mai apoi la schimbări în design, implementare și așa mai departe.

Pentru că vechiul mecanism waterfall nu făcea față, de multe ori, mediului acesta dinamic, situația a fost salvată de metodologia Agile.

Agile-ul era un waterfall mai mic și mai scurt, repetat de mai multe ori, până când produsul era terminat sau clientul satisfăcut. Desigur, comparația aceasta e grosolană și suprasimplifică Agile-ul, tema fiind mult mai complexă și interesantă.

Ce ne interesează pe noi în cazul de față este că, în cadrul companiilor, împărțirea atribuțiilor a rămas aceeași: programatorii dezvoltă aplicația (iterativ, de data aceasta), iar ceilalți își văd în continuare de sistemele, bazele de date și rețelele lor.

Presiunea, însă, pe care o pune mediul online asupra echipelor implicate în dezvoltarea și întreținerea aplicațiilor contemporane, care sunt fie aplicații web, fie depend în mod intrinsic de web), au determinat unele organizații să facă un pas important: au dărâmat zidurile imaginare care s-au înălțat tot mai mult între echipe.

Au reușit să așeze un administrator între developer-i și, probabil surprinzător, au avut rezultate la care nici ei nu s-au așteptat: mai puține bug-uri, mai multe deploy-uri, mai puțin downtime și reveniri mai rapide în caz de probleme.

Datorită acestei apropieri între cele două echipe, mișcarea a primit numele de DevOps (în unele organizații partea de System Administration poartă și numele de Operations).

Despre DevOps

Nevoia de a apropia domeniile Development de Operations a generat mai multe abordări în cadrul organizațiilor IT.

Tot mai multe companii fac recrutări pe poziții de DevOps. Candidatul ideal, în cele mai multe din cazuri, este reprezentat de un administrator rockstar având competențe în administrarea de sisteme, deployment-uri de aplicații, baze de date, scripting, programare și, dacă se poate, puțin management. În alte situații companiile creează echipe noi DevOps care să stea între echipa clasică de developer-i și echipa de administratori.

Persoanele de tip "rockstar" pot ajuta o echipă, aducând un bagaj mai mare de cunoștințe și experiență de care să beneficieze toți membrii echipei, mai ales dacă aceste persoane știu să împartă informația. O denumire mai potrivită pentru acest angajat este full-stack developer.

Unele companii, ca Etsy, preferă totuși să-i evite, în favoarea unor angajați de nivel junior pe care să îi pregătească ei. Motivul pentru care preferă această abordare îl reprezintă faptul că, din experiența lor, administratorii rockstar nu lucrează în echipă la fel de bine ca ceilalți angajați. Ei preferă echipe bine închegate, care să funcționeze ca un tot unitar și care să nu depindă de o singură persoană.

Deși unii ar putea considera că Etsy face o generalizare prea simplistă, adevărul este că recrutarea unui full-stack developer este foarte dificilă, existând puține persoane pe piață cu aceste competențe. Pentru un proiect sau o companie, formarea de noi angajați care să lucreze bine împreună reprezintă o abordare mai eficientă economic și mai sustenabilă.

În privința celei de-a doua abordări, putem să presupunem că, pe termen lung, interpunerea unei echipe noi între două echipe care trebuie să comunice bine nu poate avea efectul scontat. Pe lângă faptul că mediul de comunicare se sparge în două (dev - devops - ops), trebuie găsită și o distribuire eficientă a responsabilităților.

Modelul care va fi prezentat în exemplul de la finalul articolului e un exemplu de apropiere treptată a echipelor, având ca scop crearea unei mentalități și a unui mod de a face lucrurile in spiritul DevOps.

Metodologie versus Cultură

Primul impuls al celor care încearcă să definească DevOps-ul este să afirme că este o metodologie.

Metodologia se referă, în general, la analiza teoretică a metodelor aplicate într-un domeniu. De exemplu, când discutăm despre metodologia Agile, ne referim la un set întreg de metode și bune practici pe care aceasta le propune, având în spate o argumentare teoretică și chiar practică.

DevOps-ul nu vine să înlocuiască Agile-ul ci, în cel mai bun caz, doar să-l completeze.

DevOps-ul propune doar ruperea barierelor care s-au format între partea de Dev (programatorii) și partea de Ops (administratorii) din spatele proiectelor software. Acest demers afectează întreaga dinamică din organizație, implicând toate nivelele ierarhice în acest proces. Astfel, în organizația care practică DevOps, există deja o cultură a comunicării și a rezolvării de probleme în echipe mixte.

De ce să facem devops?

Răspunsul la această întrebare îl oferă raportul "Puppet 2015 State of DevOps". Acest raport este pregătit anual de Puppetlabs şi reprezintă rezultatul statistic oferit de răspunsurile a peste 4900 de angajaţi în IT, de pe toate poziţiile şi din mai multe regiuni geografice. Concluziile acestui raport sunt că organizaţiile IT cu performanţe ridicate:

Aceste numere reprezintă comparaţia între companiile cu cele mai ridicate performanţe şi cele mai slab performante.

Modul în care este definită performanţa unei organizații IT şi cum se măsoară aceasta sunt detaliate foarte explicit în documentul menţionat, împreună cu factorii care ajută la îmbunătăţirea ei. Vom enumera doar câțiva, invitând cititorul să parcurgă întregul raport:

DevOps la Yardi Romania

Povestea Yardi România a început în anul 2006 cu PropertyShark. Acesta este un produs destinat profesioniștilor în imobiliare din New York, oferind informații detaliate despre proprietăți.

Fiind o firmă relativ mică (maxim 40 de angajați), s-a mers pe un model organizațional în care toți angajații cunoșteau bine produsul, fiecare trecând, la un moment dat și pentru o perioadă scurtă de timp, pe la toate echipele. Acest lucru a dus la o mai bună înțelegere a nevoilor de business și a problemelor care pot să apară.

Deși administratorii lucrau separat de developer-i (în încăperi diferite), ei participau la toate ședințele care implicau produsul și luau parte la tot ce însemna decizie importantă. De asemenea, dacă situația o cerea, intrau chiar și în cod pentru a face modificările necesare ca totul să meargă bine.

În anul 2010, PropertyShark a fost achiziționat de Yardi. În timp, compania-mamă a asignat mai multe produse biroului din România. Fiecare produs avea propria echipă de dezvoltatori, însă echipa de administrare de sisteme a rămas una singură (cu un număr crescut de membri). Fiecare administrator făcea atât muncă de local IT cât și task-uri de produs. Și, pentru că aproape toți administratorii făceau parte din echipa on-call, era nevoie ca fiecare persoană să cunoască fiecare produs.

Acest sistem a funcționat bine o perioadă îndelungată de timp, însă, pe măsură ce se adăugau produse noi biroului din Cluj, devenea evident faptul că această soluție nu va scala.

Pentru rezolvarea problemei, s-a decis în primă fază asignarea a câte două persoane pentru fiecare produs și participarea lor la stand-up-urile zilnice ale developer-ilor. Astfel, pentru managerii respectivelor echipe era clar cine se ocupa de problemele lor pe partea de administrare de sisteme, iar administratorii participau activ la discuțiile și deciziile privind produsul.

După această modificare, feedbackul primit a fost unul încurajator: managerii au observat o îmbunătățire în rezolvarea task-urilor de la administratori, iar aceștia au fost mai concentrați pe produsele lor, nefiind nevoie să schimbe contextul între mai multe medii și produse.

Următoarea fază importantă a reprezentat-o un proiect nou, intern, la care managerul a cerut ca cei doi administratori asignați proiectului său să stea împreună cu restul echipei. După câteva săptămâni s-au și văzut rezultatele: echipa a funcționat ca un tot unitar cu roluri bine definite, dar interconectate bine.

Nivelul mare de eficiență obținut în cadrul acestul proiect a determinat mutarea și a celorlalți administratori lângă echipele pe care le deserveau. Această apropiere fizică a ajutat atât la întelegerea de către developer-i și manageri a problemelor apărute pe partea de administrare cât și la înțelegerea de către administratori a nevoilor developer-ilor. De asemenea, participarea tuturor părților la discuții a determinat depistarea unor probleme înainte să apară și rezolvarea altora la scurt timp după ce au apărut.

În continuare este nevoie ca echipa de on-call să cunoască toate produsele, dar nu la un nivel atât de avansat ca înainte. Problemele specifice produsului le rezolvă echipa specializată, care, mai apoi, notifică on-call-ul de schimbări.

Acest mod de lucru s-a dovedit eficient în cadrul companiei noastre, iar implementarea sa treptată a contribuit major la succesul său.

Concluzii

Probabil cel mai important lucru de reținut este faptul că DevOps-ul nu trebuie gândit ca un set de skill-uri pe care trebuie să le aibă angajații ori ca un set de tool-uri pe care trebuie să le folosim pentru a ne numi DevOps. Importantă este apropierea dintre echipe, iar skill-urile și tool-urile apar doar dacă apare o nevoie pentru ele.

Bibliografie

Effective Devops - Jennifer Davis, Katherine Daniels; O'Reilly Media 2015

"We are all DevOps" presentation, Velocity Amsterdam 2015, https://speakerdeck.com/kdaniels/we-are-all-devops

"State of DevOps report 2015", Puppet Labs, https://puppetlabs.com/sites/default/files/2015-state-of-devops-report.pdf

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects