Sunteți pe pagina 1din 7

Badoiu Mihail IISC

Dezvoltarea de software și operațiuni IT


(DevOps) – Concepte si unelte

DevOps este un set de practici care combină dezvoltarea software-ului (Dev) și


operațiunile IT (Ops). Scopul său este de a scurta ciclul de viață al dezvoltării
sistemelor și de a oferi o livrare continuă cu o calitate software ridicată. [1] DevOps
este complementar cu dezvoltarea de software Agile; mai multe aspecte DevOps au
venit din metodologia Agile. DevOps este despre o dezvoltare rapidă și flexibilă și
despre aprovizionarea proceselor de afaceri. Integreaza eficient dezvoltarea, livrarea
și operațiunile, facilitând astfel o conexiune usoara și fluidă a acestor funcții separate
în mod tradițional.

Livrări de calitate cu ciclu scurt au nevoie de un grad


ridicat de automatizare

DevOps integreaza cele două lumi ale dezvoltării și operațiunilor, utilizând


dezvoltarea automată, implementarea și monitorizarea infrastructurii. Este o
schimbare organizațională în care, în loc de grupuri distribuite care îndeplinesc
funcții separat, echipele multifuncționale lucrează la livrări continue de caracteristici
operaționale. Această abordare ajută la furnizarea de valoare mai rapidă și continuă,
reducând problemele datorate comunicării greșite între membrii echipei și
accelerând rezolvarea problemelor.[2]

DevOps înseamnă o schimbare culturală către colaborarea dintre dezvoltare,


asigurarea calității și operațiuni. Figura 1 prezintă procesul generic, care urmărește
să integreze mai bine procesele de dezvoltare, producție și operațiuni cu tehnologia
adecvată. În loc să rămână cu concepte de proces extrem de artificiale care nu vor
zbura niciodată, organizațiile organizează livrare continuă cu mici actualizări.
Companii precum Amazon și Google au condus această abordare, realizând cicluri
de minute. Evident, ciclul realizabil depinde de constrângerile de mediu și de modelul
de implementare; un serviciu cloud unic este mai ușor de facilitat decât livrările reale
de produse software reale.

DevOps poate fi aplicat unor modele de livrare foarte diferite, dar trebuie să fie
adaptate mediului și arhitecturii produsului. Nu toate produsele facilitează livrarea
continuă - de exemplu, în sisteme critice pentru siguranță. Cu toate acestea, chiar și
în astfel de medii restrânse, upgrade-urile pot fi planificate și livrate rapid și fiabil, așa
cum arată evoluția recentă a software-ului auto în aer. Pe lângă livrarea bazată pe
cloud extrem de securizată, astfel de modele de livrare necesită modificări de
arhitectură și hardware dedicate. Un exemplu este un controler hot-swap în care o
jumătate este operațională și cealaltă jumătate construiește următoarele actualizări,
care sunt schimbate în modul activ după proceduri de securitate și verificare adânci.

1
Badoiu Mihail IISC

DevOps pentru sistemele încorporate este mai provocator decât serviciile cloud și IT,
deoarece încearcă să combine codul vechi și arhitectura cu livrarea continuă.

Fig 1. Procesul generic de producție și livrare DevOps. Acesta își propune să integreze mai bine procesele de afaceri, de
dezvoltare, producție și operațiuni cu o tehnologie adecvată.

Unelte DevOps

Instrumentele sunt obligatorii în automatizarea DevOps. Livrările de calitate cu un


ciclu scurt de timp necesită un grad ridicat de automatizare. Deci, alegerea
instrumentelor potrivite pentru mediul sau proiectul dvs. este importantă atunci când
vă mutați la DevOps. Tabelul 1 prezintă instrumentele de automatizare pe care le
discutăm în acest articol.

Build

În această fază DevOps, instrumentele trebuie să suporte fluxuri de lucru rapide. Aici
discutăm două tipuri de instrumente. Instrumentele de build ajută la realizarea unei
iterații rapide, reducând sarcinile manuale care consumă timp. Instrumentele de
integrare continuă (CI – Continuous integration) îmbină codul de la toți dezvoltatorii
și verifică codul defect, îmbunătățind calitatea software-ului.

Instrumente de build: Automatizarea procesului de build este crucială pentru


mediul DevOps - în mic și în mare. Odată cu dezvoltarea agilă și fluidă,
instrumentele de build au devenit, de asemenea, instrumente pentru gestionarea
dezvoltării software-ului și a ciclului de viață al serviciului, care implică compilarea
codului, gestionarea dependențelor, generarea documentației, rularea testelor sau
implementarea unei aplicații în diferite medii.

Apache Ant a devenit instrumentul standard pentru construirea de aplicații, în


special în open source atunci când trebuie să faci build din surse. Sintaxa simplă
utilizată pentru definirea sarcinilor de executare afectează principalul avantaj și
dezavantaj al lui Ant. Este ușor de înțeles, dar detaliat chiar și pentru sarcini simple,
deoarece folosește XML, care nu este un limbaj procedural de programare.

2
Badoiu Mihail IISC

Maven își propune să rezolve unele dintre problemele lui Ant. De asemenea, folosește
XML pentru a defini procesul de construire. În acest caz, declarațiile nu conțin natura
proiectului în locul sarcinilor care îl construiesc. Maven folosește Modelul Obiectului
Proiectului, care definește o modalitate uniformă de a construi sisteme. Acest lucru are
avantajul de a defini un standard la începutul unui proiect, dar uneori provoacă
inflexibilitate atunci când trebuie definite operațiuni personalizate. Gestionarea
dependențelor ajută, de asemenea, la automatizarea procesului de construire, dar
uneori creează probleme din cauza dependențelor automate externe.

Rake și Gradle încearcă să rezolve problemele lui Ant și Maven oferind un


instrument bazat pe limbaj de programare pentru a construi aplicații. Cu Rake, liniile
de cod sunt scrise în ruby; cu Gradle, configurația folosește un limbaj specific
domeniului (DSL) bazat pe Groovy.

Table 1 Unelte DevOps de automatizare

Configuration
Tool DevOps phase Tool type format Language License

Ant Build Build XML Java Apache

Maven Build Build XML Java Apache

Rake Build Build Ruby Ruby MIT

Gradle Build Build Based on Groovy Java and a Groovy- Apache


based domain-specific
language (DSL)

Jenkins Build Continuous UI Java MIT


integration

TeamCity Build Continuous UI Java Commercial


integration

Bamboo Build Continuous UI Java Commercial


integration

Puppet Deployment Configuration DSL similar to Ruby Apache


management JSON (JavaScript
Object Notation)

Chef Deployment Configuration Ruby-based DSL Ruby Apache


management

Ansible Deployment Configuration YAML (YAML Ain’t Python GPL (GNU General
management Markup Language) Public License)

Loggly Operations Logging — Cloud based Commercial

Graylog Operations Logging — Java Open source

Nagios Operations Monitoring — C Open source and


GPL

New Relic Operations Monitoring — — Commercial

Cacti Operations Monitoring — PHP GPL

3
Badoiu Mihail IISC

Instrumente de integrare continua: CI este un concept cheie de tip AGILE.


Instrumentele CI integrează munca dezvoltatorilor cât mai devreme și cât mai des
posibil. În acest fel, sistemul este testat constant. Îmbunătățirea CI nu este
întotdeauna ușoară și simplă. De exemplu, în dezvoltarea sistemului încorporat,
testarea este o provocare, deoarece construirea și testarea pe hardware-ul țintă nu
sunt întotdeauna posibile și, prin urmare, trebuie simulate. Mai mult, limitările
hardware afectează viteza de testare și, prin urmare, timpul ciclului.

Jenkins este un sistem open source, bazat pe Java și unul dintre cele mai
implementate instrumente, deci opțiunile de plug-in sunt multe. Datorită popularității
sale, găsirea de asistență din baza sa mare de utilizatori este ușoară. Cu toate
acestea, interfața sa de utilizare este depășită și mai puțin atractivă decât interfața
de utilizare a celorlalte instrumente.

TeamCity, dezvoltat de JetBrains, se bazează pe Java și, prin urmare, are un suport
Java bun, precum Jenkins. Spre deosebire de Jenkins, oferă și un suport .NET bun.
Deși este licențiat, are o ediție gratuită pentru proiecte mici.

Bamboo este de la Attlasian și se integrează bine cu alte instrumente de la Attlasian.


Deci, oferă avantaje dacă utilizați deja instrumente Attlasian.

Lansarea (Deployment)

În această fază, cea mai importantă schimbare este de a trata infrastructura ca si


cod. Cu această abordare, infrastructura poate fi partajată, testată și controlată de
versiune. Dezvoltarea și producția au o infrastructură omogenă, reducând
problemele și erorile datorate diferitelor configurații de infrastructură.

DevOps împinge automatizarea de la aplicație la infrastructură. Comparativ cu


aprovizionarea manuală a infrastructurii, instrumentele de gestionare a configurației pot
reduce aprovizionarea producției și complexitatea întreținerii configurației, permițând în
același timp recreerea sistemului de producție pe mașinile de dezvoltare. Astfel de
instrumente sunt un factor principal de activare DevOps, mai ales că arhitectura trece de
la un bloc monolitic de software la o abordare de microservicii. [3]

Pentru a realiza o livrare continuă pentru sistemele încorporate, dispozitivele trebuie


să fie conectate, deci este necesară comunicarea mașină la mașină și arhitectura
IoT. Livrarea continuă va îmbunătăți timpul de introducere pe piață și va permite
practici Agile, cu feedback rapid al consumatorilor. Cu toate acestea, pentru
aplicațiile critice în care eșecul nu este o opțiune - de exemplu, aplicații medicale sau
aerospațiale - este preferabilă o abordare mai conservatoare. Următoarele
instrumente vor îmbunătăți ciclul de viață al aplicației.

Abordarea Puppet în ceea ce privește aprovizionarea infrastructurii se referă la


descrierea stării finale dorite a sistemului. În general, o infrastructură bazată pe păpuși
constă dintr-un server principal cu agenți pe fiecare client. Marioneta se bazează pe
Ruby, dar folosește un DSL similar cu JSON (JavaScript Object Notation) pentru a
reprezenta configurațiile mașinii. Abordarea Chef se referă mai mult la scrierea unei
rețete pe un DSL pur pe bază de Ruby, care detaliază pașii necesari pentru

4
Badoiu Mihail IISC

aprovizionarea sistemului. Puteți utiliza Chef ca instrument client-server sau ca


instalație izolată în modul „chef-solo”.

Ansible este cel mai ușor de implementat, deoarece nu necesită instalarea agenților
pe computerele client, deoarece folosește SSH (Secure Shell) pentru a crea
configurațiile. Este un instrument open source bazat pe Python, dar configurația este
codificată în fișiere YAML (YAML Ain’t Markup Language), reducând curba de
învățare. În cele din urmă, atunci când selectați tehnologia de orchestrație, trebuie
să luați în considerare dacă infrastructura de producție se bazează pe virtualizare
sau doriți să treceți la tehnologii de containerizare, cum ar fi Docker.

Operațiuni

Deși cercetătorii s-au concentrat considerabil pe construcție și implementare,


DevOps are și impact asupra operațiunilor de infrastructură. Așadar, aveți nevoie de
instrumente pentru a vă menține stabilitatea și performanța infrastructurii.

Instrumente de logging: Logging-ul este uneori considerat un înlocuitor pentru


depanare (debug), iar programatorilor li s-a recomandat să depaneze în loc să
logheze, astfel încât să nu lase urme într-o aplicație. Dar, din punct de vedere
DevOps, urmele sunt necesare pentru gestionarea aplicațiilor. Regula este să
înregistrați totul și să determinați nivelul log-ului (de exemplu, fatal, error, warn, info,
trace sau debug). Pentru aplicațiile care nu sunt foarte complexe, puteți utiliza
instrumentele standard (în Java, acesta este pachetul java.util.logging). Pentru
proiecte mai complexe, puteți utiliza framework-uri precum Log4j sau familia de
instrumente Log4j pentru diferite limbaje de programare, deși cele mai cunoscute
instrumente pentru aceste sarcini sunt sistemele de gestionare a log-urilor.

Instrumentul Loggly oferă un serviciu bazat pe cloud pentru a colecta date de jurnal
de la aplicații, platforme și servere în timp real, utilizând standarde deschise precum
HTTP sau syslog. Instalarea este simplă și crearea de dashboard-uri personalizate
de DevOps si de performanta este, de asemenea, ușoară. Loggly oferă, de
asemenea, o funcție de căutare puternică. Loggly poate fi integrat cu New Relic,
făcându-l eficient pentru identificarea și izolarea problemelor și găsirea soluțiilor.

Graylog2 este un analizor de jurnal open source care permite stocarea și căutarea
prin erori de jurnal. În interfața sa web ușor de utilizat, puteți crea dashboard-uri ad
hoc și caracteristici puternice de alertă. Se ocupă de o gamă largă de tipuri de date
și poate fi personalizat cu un număr considerabil de plugin-uri.

Instrumente de monitorizare: Instrumentele de monitorizare permit organizațiilor


să identifice și să rezolve problemele de infrastructură IT înainte de a afecta
procesele comerciale critice. Aceste instrumente monitorizează aspecte ale
sistemului, cum ar fi încărcarea procesorului, alocarea RAM, statistici de trafic în
rețea, consumul de memorie și disponibilitatea spațiului liber pe disc. Ele urmăresc
continuu starea de sănătate a sistemului și alertează administratorii atunci când
detectează probleme, astfel încât administratorii să poată lua măsuri corective. [4]

5
Badoiu Mihail IISC

Nagios este un instrument open source bine cunoscut pentru monitorizarea


infrastructurilor IT, cum ar fi stațiile utilizatorilor finali, serviciile IT și componentele de
rețea active. Oferă o interfață web ușor de navigat cu un tablou de bord interactiv
care include o imagine de ansamblu la nivel înalt a gazdelor, serviciilor și
dispozitivelor de rețea. Oferă grafice de tendințe și de planificare a capacității care
permit organizațiilor să planifice actualizări de infrastructură. Pluginurile rezolvă
unele dintre limitările instrumentului, cum ar fi lipsa descoperirii automate a
dispozitivelor și dificultatea de configurare a instrumentului.

New Relic, bazat pe software ca serviciu (SaaS – software as a service), oferă o


interfață puternică pentru aplicațiile web și monitorizează aplicațiile mobile native
pentru iOS și Android. Puteți monitoriza aplicațiile care rulează în medii hibride,
cloud sau locale. Tablourile de bord personalizabile vă permit să integrați funcții
suplimentare de monitorizare. Puteți genera rapoarte personalizate și seta alarme de
prag pentru a declanșa notificări de evenimente specifice.

Cacti este un sistem bazat pe web cu o interfață intuitivă, ușor de utilizat.


Configurația sa bazată pe șabloane permite un nivel ridicat de personalizare. Puteți
crea grafice, care pot fi afișate în modul de vizualizare de tip arbore, în plus față de
modurile standard de vizualizare listă și previzualizare.

Concluzie

DevOps are impact asupra întregii industrii de software și IT. Bazându-se pe practici
“lean” și agile, DevOps înseamnă automatizare end-to-end în dezvoltarea și livrarea
software-ului. Cu greu cineva va putea să abordeze modelul Agile în stilul cărților de
bucate, dar majoritatea dezvoltatorilor vor beneficia de o mai bună conectare a
dezvoltării și operațiunilor. De obicei, înțelegerea reciprocă de la cerințe până la
întreținere, service și evoluția produsului va îmbunătăți timpul ciclului cu 10 până la 30 la
sută și va reduce costurile cu până la 20 la sută. Punctele principale sunt mai puține
modificări ale cerințelor, testări concentrate și asigurarea calității și un ciclu de livrare
mult mai rapid cu echipe bazate fiecare pe task-uri bine definite. Cu toate acestea,
deoarece produsele și procesele ciclului de viață variază, fiecare companie are nevoie
de propria abordare pentru a realiza DevOps, de la arhitectură la instrumente până la
cultură.

6
Badoiu Mihail IISC

Bibliografie

[1] Loukides, Mike (7 June 2012). "What is DevOps?". O'Reilly Media.


[2]
M. Virmani, “Understanding DevOps & Bridging the Gap from Continuous Integration to
Continuous Delivery,” Proc. 5th Int’l Conf. Innovative Computing Technology (INTECH
15), 2015, pp. 78–82.
[3]
D. Spinellis, “Don’t Install Software by Hand,” IEEE Software, vol. 29, no. 4, 2012,
pp. 86–87.
[4]
J. Hernantes, G. Gallardo, and N. Serrano, “IT Infrastructure-Monitoring Tools,” IEEE
Software, vol. 32, no. 4, 2015, pp. 88–93.

S-ar putea să vă placă și