fbpx

Continuous Integration si Dev Ops

  • De ce DevOps?

DevOps înseamnă o mulțime de lucruri diferite pentru oameni diferiți, deoarece discuțiile din jurul sau acoperă multe concepte. Conceptul de CI face partea dintr-o arie mult mai mare cunoscuta sub numele de DevOps.

Oamenii vorbesc despre DevOps ca fiind: “colaborare pentru dezvoltatori și operațiuni” sau “tratarea codului sursa sub o anumita infrastructura” etc.

Pentru o definiție mai exactă este nevoie de a aminti și conceptul de Agile. Astfel, DevOps și Agile sunt 2 metodologii de lucru care îmbinate contribuie la o dezvoltarea cat mai eficienta a unui sistem software.

În cazul Agile discutam doar de modalități de lucru și comunicare în echipă. Prin DevOps înțelegem diferite procese precum automatizare, revizuirea codului sursa, deployment, monitorizare etc.

Dacă ne uitam la toate aceste procese observăm că se regăsesc procese legate chiar de Continuous Integration. Asadar, CI/CD vine în ajutorul nostru pentru a implementa principalele porțiuni dintr-o infrastructură complexă de DevOps.

  • De ce Continuous Integration?

Integrarea continuă este un concept frecvent întâlnit în discuțiile dezvoltatorilor software despre metodele moderne de lucru, dar mai ales în tot ceea ce înseamnă ideea de DevOps.

Acest concept, cunoscut sub forma de CI (“Continuous Integration”), are la bază ideea că fiecare membru din cadrul unei echipe care se ocupă de un anumit proiect, să integreze codul sursă modificat într-un depozit împărtășit de toată echipa.

CI vizează reducerea ineficiențelor ciclului de construire, permițând dezvoltatorilor să compileze codul echipei dintr-un depozit de control al versiunilor partajate.

Totodată, este important  de menționat ca în zilele noastre, conceptul de integrare continua este de obicei utilizat alături de un flux de lucru software precum Agile.

Îmbinând aceste două aspecte, sarcinile în cadrul unei echipe sunt distribuite într-un mod optimizat în cadrul echipei de dezvoltare a proiectului, pentru a fi realizate și livrate la timp.

Sarcinile vor putea fi dezvoltate în același timp, independent de către unul sau mai multi dezvoltatori. Toate aceste aspecte duc la stabilirea unei infrastructuri de DevOps bine pusă la punct în cadrul echipe.

  • Ce problemă rezolvă Continuous Integration?

Nefolosirea conceptului de CI în cadrul unei echipe de dezvoltare a unui proiect este o alegere scumpă. Fără integrarea continuă, vor exista perioade mai lungi între integrările dezvoltatorilor. Aceasta perioada mai lunga duce la un mod mult mai dificil de a identifica și fixa probleme, ceea ce poate duce la pierderi în cadrul afacerii.

Dacă ne imaginam ca în dezvoltarea unui proiect lucrează o echipa mixta alcătuita din membrii care dezvolta și membrii care testează, fără integrarea continua, dezvoltatorii ar fi nevoiți sa ruleze un “build” de fiecare data când vor să trimită modificări spre testare, ceea ce ar presupune o pierdere inutilă de timp. Așadar, printre problemele pe care le rezolva conceptul de Continuous Integration se numără:

  • creșterea vizibilității între membrii unei echipe, datorită comunicării sporite
  • identificarea din timp a problemelor în codul sursa
  • reducerea timpului de așteptare pentru a afla dacă modificările funcționează
  • codul este testat automat, datorită testelor unitare și automate
  • Cum a apărut Continuous Integration?

De-a lungul anilor 90, orice automatizare a procesului de “build” în cadrul unei echipe era făcută utilizând scrierea de script-uri. Existau tot mai multe script-uri scrise care verificau codul și îl construiau peste noapte, astfel încât sa fie pregătit pentru testare în dimineața următoare.  Aici este momentul în care a apărut conceptul de “Continuous Integration”.

Grady Booch a propus primul termenul de CI în 1991, în momentul în care a făcut publica metoda Booch.

Metoda Booch este o metodă cunoscută în domeniul programării orientate obiect descrisă prin intermediul diagramelor UML care cuprinde un proces de dezvoltare iterativ și un set de recomandări. Ceea ce cuprindea aceasta metodă a stat de fapt la baza conceptul de integrarea continuă.

Începând cu anii 2000, au început să apară sisteme în această zonă care își propuneau să construiască și să testeze fiecare modificare și să notifice persoanele în momentul în care un “build” a eșuat.

Printre aceste sisteme se număra Jenkins, TeamCity, Atlassian’s Bamboo si Microsoft’s Team Foundation Server.

  • Ce este un Inginer DevOps?

Inginerii DevOps sunt un grup destul de select, asa că nu este surprinzător că găsim un număr mic de companii care vorbesc despre acest titlu. Kelsey Hightower spunea despre acești oameni ca fiind “forte speciale” într-o organizație. “Inginerul DevOps încapsulează profunzimea cunoștințelor și anii de experiență practică”, preciza Kelsey.

 

Caracteristici Inginer DevOps:

  • abilitatea de a folosi o varietate larga de tehnologii și instrumente
  • experienta cu sisteme și operații IT
  • cunoașterea unor limbaje de scripting
  • abilitatea de automatiza anumite procese
  • abilitatea de a oferi soluții de infrastructura în cadrul unei echipe
  • posibilitatea de a colabora și de a comunica în cadrul echipei

Acestea sunt doar câteva din caracteristicile unui DevOps. În ansamblu este destul de greu de a cuprinde toată aria de abilitați.

În concluzie, inginerii DevOps sunt persoane foarte importante într-o echipa de dezvoltare software, iar în ultimul timp acest fel de poziții au devenit tot mai căutate.

 

Articol scris de Instructorii noștri Robert Iță și Sebastian Burchi

Sponsori și parteneri