Documente Academic
Documente Profesional
Documente Cultură
1. Introducere
Ca parte a transformării Agile din ultimii ani, am văzut organizații IT adoptând principii de
integrare continuă în ciclul lor de livrare a software-ului, ceea ce a îmbunătățit eficiența
echipelor de dezvoltare. Cu timpul s-a realizat că această optimizare ca parte a integrării
continue - singură - nu ajută la eficientizarea întregului ciclu de viață al livrării sau nu
conduce la eficiența organizației. Cu excepția cazului în care toate componentele unui
ciclu de viață de livrare a software-ului funcționează ca o mașină bine unsă, eficiența
organizării pentru a optimiza ciclul de viață al livrării nu poate fi îndeplinită. Aceasta este
problema pe care DevOps încearcă să o soluționeze. Această lucrare încearcă să
acopere toate aspectele DevOps aplicabile diferitelor faze ale SDLC (Software
Development Life Cycle) și vorbește în mod specific despre necesitatile afacerii,
modalități de a trece de la integrarea continuă la livrarea continuă și beneficiile sale.
Modul în care întreprinderile livrează software trece printr-un val de schimbări pe măsură
ce mediul în care operează se schimbă - nevoile pieței se schimbă continuu, tehnologia
se schimbă rapid, există o presiune mai mare pentru a se adapta la nevoile pieței și a
livra rapid. Întreprinderile nu-și mai pot permite să facă un client să aștepte timp de 6 luni
sau 1 an pentru apariția unei versiuni și apoi să solicite feedback de la client cu privire la
modul în care se comportă software-ul. Clienții așteaptă un angajament continuu, astfel
încât să poată oferi feedback continuu. Pentru a face față provocărilor actuale,
1
Badoiu Mihail - IISC
întreprinderile trebuie să fie agile în toate fazele ciclului de viață al dezvoltării software-
ului.
De-a lungul anilor, organizațiile au adoptat multe optimizări de proces în practicile lor de
dezvoltare software (transformare agilă). Cu toate acestea, în această întreagă evoluție
- accentul a fost pus în principal pe dezvoltarea de software, lăsând partea operațională
a livrării de software rămase în urmă în această cursă de optimizare. Ca urmare, de-a
lungul anilor, ceea ce sa întâmplat este că echipele de dezvoltare software sunt capabile
să ofere un ritm mult mai rapid decât cel în care echipele de operațiuni pot absorbi build-
urile produsului. Se spune pe bună dreptate că puterea lanțului este la fel de puternică
ca cea mai slabă verigă din lanț - așa este și cazul livrării de software, adică orice
optimizări se face în ciclul de livrare a software-ului - dacă o fază nu este capabilă să țină
pasul - întreaga livrarea va fi întârziată.
DevOps este un set de practici care încearcă la baza lucrurilor să reducă decalajul dintre
operațiuni si dezvoltare [5], dar în același timp nu se limitează la această dezvoltare și
transferul operațiunilor acoperă în schimb toate aspectele care ajută la o viteză rapidă,
optimizată și de înaltă calitate livrarea de software. DevOps este un set de principii către
livrarea de software, unde accentul cheie este pe viteza de livrare, testarea continuă în
producție, cum ar fi mediul înconjurător, să fie în stare de expediere în orice zi, feedback
continuu, capacitatea de a reacționa la schimbarea mai rapidă, echipele care lucrează
pentru a realiza un obiectiv în loc de o sarcină (nu mai există limite de echipă care
provoacă o întârziere [1]. DevOps extinde principiile agile pentru întreaga conductă de
livrare a software-ului. Deși principiile DevOps se aplică întregului SDLC (Software
Development Life Cycle), dar motivatorul cheie sau zona de focalizare care a declanșat
toate acestea - se asigură că echipa de operațiuni poate rula împreună cu echipe de
dezvoltare.
A. Planificare continuă
Planurile de afaceri trebuie să fie agile (și au fost într-o anumită măsură), adică capabile
să se adapteze rapid la condițiile de piață în schimbare. Trebuie întotdeauna sa existe un
punct de control intermediar în plan pentru a reevalua situația și a modifica / ajusta
planurile după cum este necesar pe baza feedback-ului pieței. Este dificil pentru echipele
Dev / Test să se adapteze la schimbările rapide din mediile de afaceri. DevOps vă permite
să faceți acest lucru având întotdeauna un backlog de produs prioritar, un canal continuu
de feedback cu clienții și capacitatea de a prioritiza tot timpul restanța de produs, luând
2
Badoiu Mihail - IISC
B. Integrare continuă
Integrarea continuă se referă, practic, la integrarea timpurie, nu se păstrează modificările
localizate în spațiul de lucru mult timp, în schimb se discuta modificările cu echipa și se
valideaza modul în care codul se comportă continuu. Nu numai partajarea în cadrul
echipelor de componente, ci integrarea dincolo de limitele componentelor, la nivelul
integrării produsului. În plus, această etapă a optimizării procesului se referă la realizarea
automatizării, astfel încât imediat ce dezvoltatorul oferă schimbarea, sistemele de
construcție detectează acest lucru (poate fi chiar un eveniment programat la sfârșitul zilei)
și declanșează o construcție, efectuează teste de ‘sanity’ și postează build-ul într-un
depozit (repository) hostat online. Acesta trebuie să fie un proces continuu repetabil pe
tot parcursul ciclului de dezvoltare
C. Implementare continuă
Aceasta este inima DevOps și constituie piesa critică a optimizării generale a livrării de
software. Sondajele au arătat că în majoritatea organizațiilor partea operațiunilor de
livrare contribuie semnificativ la întârzierea livrării de software. Configurarea hardware-
ului pentru a testa build-urile de dezvoltare poate dura timp de zile pana la săptămâni. În
plus, aceste procese de implementare sunt manuale și nu sunt consistente. Principiile
DevOps recomandă automatizarea implementării și furnizării de hardware, iar diferiți
furnizori de cloud joacă un rol crucial în acest domeniu. Abordarea DevOps propune ca
întreaga aprovizionare a infrastructurii să fie menținută ca si cod în depozitul (repository-
ul) de cod sursă - conceptul fiind denumit Infrastructură ca cod (IaC – Infrastructure as
Code) [6].
D. Testare continuă
Condiția preliminară pentru testarea continuă este - Automatizarea fiecarui caz de testare.
Orice proces care trebuie repetat în timp - ar trebui automatizat, există suficiente
tehnologii disponibile pentru a atinge acest obiectiv. Procesul de testare manuală trebuie
evaluat pentru posibilitățile de automatizare și, în majoritatea cazurilor, vor exista
modalități de automatizare a aceluiași lucru. Procesul de livrare a software-ului ar trebui
să poată executa suita de testare pentru fiecare construire de software generată automat,
fără intervenția utilizatorului, orientându-se astfel către scopul final de a putea livra rapid
o versiune de calitate. Întregul principiu al testării continue nu numai că mută procesul de
3
Badoiu Mihail - IISC
E. Monitorizare continuă
Așa cum s-a discutat în abordările adoptării de mai sus, cu capacitatea de a testa timpuriu
și pe un sistem similar producției, există posibilitatea de a observa diverși parametri de
calitate și, prin urmare, capacitatea de a reacționa la orice surpriză în timp util.
4
Badoiu Mihail - IISC
A. Nevoile afacerii
Odată cu creșterea continuă a bazei de clienți și extinderea pe piață, devine esențial ca
procesele de livrare interne ale organizației să fie în conformitate cu așteptările de afaceri
și să fie optimizate în cea mai bună măsură posibilă. Timpul și resursele sunt constrângeri
critice în orice mediu de afaceri. Cu aceste constrângeri date, se așteaptă ca organizatiile
să reacționeze mai rapid la nevoile pieței, cu un nivel ridicat de calitate. Nici o organizație
nu își poate permite să trăiască cu activități manuale, predispuse la erori și repetate în
ciclul de viață al livrării software-ului. Anterior, echipele de proiect identifică această
nevoie precisă a afacerii și adoptă DevOps pentru a-și optimiza procesele, urmând să fie
mai profitabila.
Așa cum s-a explicat mai sus în acest articol, unul dintre domeniile care necesită în
general atenție este faza de testare a SDLC (Software Development Life Cycle),
deoarece această fază depinde de echipa de operațiuni pentru aprovizionarea hardware,
crearea de configurări de testare, menținerea mai multor combinații de produse și sisteme
de operare etc., pentru a da cateva exemple. Cireasa de pe tort este - toate aceste
procese necesită o persoană dedicată pentru a executa manual toate sarcinile de
configurare și configurarea acestor lucruri este întotdeauna imprevizibilă, mai ales din
cauza surprizelor necunoscute. Echipele trebuie să furnizeze manual aceste configurări
de testare, să se recupereze după blocările hardware-ului dedicat la momentele critice
de lansare.
Livrarea continuă încearcă să optimizeze gestionarea infrastructurii și nevoia critică de
a echilibra timpul și resursele. Validarea produselor software implică mai multe intrări
variabile, cum ar fi versiuni ale produselor, sisteme de operare diferite, versiuni diferite
ale software-ului terților etc. Nu este posibil din punct de vedere uman să testăm toate
aceste combinații și nici practic. Echipa folosește diverse metodologii de testare pentru a
optimiza matricea de testare și pentru a păstra hardware dedicat pentru anumite
configurații cheie - DAR acest lucru nu funcționează doar bine. Echipele trebuie să caute
5
Badoiu Mihail - IISC
C. Beneficii
6
Badoiu Mihail - IISC
5. Aplicabilitate
Problemele fundamentale pe care DevOps încearcă să le abordeze sunt adaptabilitatea
la schimbare, viteza de introducere pe piață și menținerea unei calități ridicate cu costuri
reduse - care sunt probleme de afaceri universale în orice tip de proiect software.
7
Badoiu Mihail - IISC
Principiile DevOps se aplică în mod generic livrării de software și nu sunt legate de niciun
tip specific de produs sau servicii. Ele pot fi aplicate la dezvoltarea de produse complexe
la nivel de întreprindere sau la o mică aplicație web sau chiar la o aplicație mobilă. În plus,
depinde într-adevăr de nevoile proiectului, nevoile organizației, capacitățile organizației,
rentabilitatea investiției, care va determina ce abordări sau principii ale DevOps ar trebui
să adopte sau poate adopta o organizație. Nu este necesar (și nici nu ar putea fi practic)
să se treaca de la starea no-DevOps la starea completă end-to-end DevOps intr-un timp
scurt [3]. Organizațiile sau, de altfel, echipele de proiect ar trebui să analizeze și să
evalueze fluxurile de lucru actuale care sunt la locul lor și să descopere zonele în care
există o posibilitate de optimizare și care vor oferi cel mai mare ROI (Return on
Investment) și vor viza acea fază în mod izolat (ar putea fi doar 1 sau 2) abordări ale
DevOps).
6. Concluzie
Așa cum s-a explicat mai sus în această lucrare, modul în care diferitele principii ale
DevOps, dacă sunt adoptate în ciclul de viață al lansării, pot optimiza într-adevăr
capacitatea organizației de a furniza software. DevOps nu implică doar schimbarea
proceselor, ci și schimbarea culturii. Organizațiile care adoptă principiile DevOps vor avea
cu siguranță un avantaj asupra organizațiilor care nu călăresc acest val de DevOps.
Procesele trebuie să se schimbe în timp, pe măsură ce mediul de piață în care se
opereaza se schimbă continuu. DevOps permite organizației să :
• Reduca timpul de lansare pe piață
• Adapteze la feedback-ul continuu
• Echilibreze eficient costul și calitatea
• Aiba mai multă predictibilitate în versiuni
• Sporeasca eficiența organizației în ansamblu
DevOps doar definește setul de principii, dar organizația adoptă această abordare sau
principiu de „cum și folosind ce tehnologie” si este complet evaluată și decisă de
organizație. Chiar și în cadrul unei singure organizații, diferite echipe ar putea avea
nevoie să adopte diferite tehnologii sau instrumente pentru a adopta abordări DevOps -
ceea ce este absolut ok, întregul scop fiind optimizarea și transformarea continuă.
8
Badoiu Mihail - IISC
Bibliografie