{"id":87418,"date":"2020-07-08T01:42:16","date_gmt":"2020-07-07T23:42:16","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih"},"modified":"2020-07-08T01:42:16","modified_gmt":"2020-07-07T23:42:16","slug":"gajd-po-devops-dlya-nachinayushhih","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih","title":{"rendered":"Ghid pentru DevOps pentru \u00eencep\u0103tori","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Care este importan\u021ba DevOps, ce \u00eenseamn\u0103 pentru speciali\u0219tii IT, descrierea metodelor, cadrelor \u0219i instrumentelor.<\/p>\n<p><img decoding=\"async\" alt=\"Ghid pentru DevOps pentru \u00eencep\u0103tori\" src=\"\/wp-content\/uploads\/2020\/07\/519136aa266da5031b3def0cbd67d582.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS-au \u00eent\u00e2mplat multe de c\u00e2nd termenul DevOps s-a consolidat \u00een lumea IT. Av\u00e2nd \u00een vedere c\u0103 majoritatea ecosistemului este cu surs\u0103 deschis\u0103, este important s\u0103 revizuim de ce a \u00eenceput \u0219i ce \u00eenseamn\u0103 pentru cariera \u00een IT.<\/p>\n<h3>Ce este DevOps<\/h3>\n<p>\nDe\u0219i nu exist\u0103 o defini\u021bie unic\u0103, eu consider c\u0103 DevOps este o structur\u0103 tehnologic\u0103 care asigur\u0103 interac\u021biunea dintre echipele de dezvoltare \u0219i echipele opera\u021bionale pentru o implementare mai rapid\u0103 a codului \u00een medii de produc\u021bie, cu capacitatea de a repeta ac\u021biunile \u0219i de a automatiza. Restul articolului va fi dedicat dezv\u0103luirii acestei afirma\u021bii.<\/p>\n<p>Cuv\u00e2ntul \u201eDevOps\u201d este o combina\u021bie a cuvintelor \u201edezvoltare\u201d (development) \u0219i \u201eopera\u021biuni\u201d (operations). DevOps ajut\u0103 la cre\u0219terea vitezei de livrare a aplica\u021biilor \u0219i serviciilor. Acest lucru permite organiza\u021biilor s\u0103 \u00ee\u0219i serveasc\u0103 eficient clien\u021bii \u0219i s\u0103 devin\u0103 mai competitive pe pia\u021b\u0103. Pe scurt, DevOps reprezint\u0103 coeren\u021ba \u00eentre dezvoltare \u0219i opera\u021biunile IT, cu o interac\u021biune \u0219i colaborare mai eficiente.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDevOps presupune o astfel de cultur\u0103 \u00een care colaborarea \u00eentre echipele de dezvoltare, operatori \u0219i echipele de afaceri este considerat\u0103 un aspect critic. Este vorba nu doar despre instrumente, deoarece DevOps aduce constant beneficii \u0219i clien\u021bilor din organiza\u021bie. Instrumentele sunt unul dintre pilonii s\u0103i, al\u0103turi de oameni \u0219i procese. DevOps cre\u0219te capacitatea organiza\u021biilor de a oferi solu\u021bii de \u00eenalt\u0103 calitate \u00eentr-un timp c\u00e2t mai scurt. De asemenea, DevOps automatizeaz\u0103 toate procesele, de la construire la implementare, aplica\u021bie sau produs.<\/p>\n<p>Discu\u021bia despre DevOps se concentreaz\u0103 pe rela\u021biile dintre dezvoltatori, persoanele care scriu software pentru a tr\u0103i, \u0219i operatori, responsabiliza\u021bi cu suportul acestui software.<\/p>\n<h3>Provoc\u0103rile pentru echipa de dezvoltare<\/h3>\n<p>\nDezvoltatorii, de regul\u0103, sunt entuziasma\u021bi \u0219i dornici s\u0103 implementeze abord\u0103ri \u0219i tehnologii noi pentru a rezolva problemele organiza\u021biilor. Totu\u0219i, se confrunt\u0103 \u0219i cu anumite provoc\u0103ri:<\/p>\n<ul>\n<li>Pia\u021ba competitiv\u0103 creeaz\u0103 o mare presiune pentru livrarea la timp a produsului.<\/li>\n<li>Ei trebuie s\u0103 se ocupe de gestionarea codului preg\u0103tit pentru produc\u021bie \u0219i de implementarea de noi func\u021bionalit\u0103\u021bi.<\/li>\n<li>Ciclul de lansare poate fi lung, a\u0219a c\u0103 echipa de dezvoltare trebuie s\u0103 fac\u0103 mai multe presupuneri \u00eenainte de implementarea aplica\u021biilor. \u00cen acest scenariu, este necesar mai mult timp tampon pentru a rezolva problemele care apar \u00een timpul desf\u0103\u0219ur\u0103rii \u00een medii de produc\u021bie sau de testare.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Problemele cu care se confrunt\u0103 grupul opera\u021bional<\/h3>\n<p>\nGrupele opera\u021bionale au fost istoric orientate c\u0103tre stabilitatea \u0219i fiabilitatea serviciilor IT. De aceea, echipele opera\u021bionale caut\u0103 stabilitatea prin modific\u0103ri aduse resurselor, tehnologiilor sau abord\u0103rilor. Sarcinile lor includ:<\/p>\n<ul>\n<li>Gestionarea distribu\u021biei resurselor pe m\u0103sur\u0103 ce cererea cre\u0219te. <\/li>\n<li>Gestionarea modific\u0103rilor de design sau a set\u0103rilor necesare pentru a fi aplicate \u00een medii de produc\u021bie.<\/li>\n<li>Diagnosticarea \u0219i solu\u021bionarea problemelor legate de produc\u021bie, dup\u0103 desf\u0103\u0219urarea autonom\u0103 a aplica\u021biilor.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Cum DevOps rezolv\u0103 problemele dintre dezvoltare \u0219i opera\u021biuni<\/h3>\n<p>\n\u00cen loc s\u0103 lanseze un volum mare de func\u021bionalit\u0103\u021bi ale aplica\u021biei simultan, companiile \u00eencearc\u0103 s\u0103 determine dac\u0103 pot desf\u0103\u0219ura un num\u0103r mai mic de func\u021bionalit\u0103\u021bi pentru clien\u021bii lor printr-o serie de itera\u021bii de lansare. Aceast\u0103 abordare are numeroase avantaje, cum ar fi o calitate mai bun\u0103 a software-ului, un feedback mai rapid din partea clien\u021bilor etc. Aceasta, la r\u00e2ndul ei, asigur\u0103 un grad ridicat de satisfac\u021bie a clien\u021bilor. Pentru a atinge aceste obiective, companiile trebuie s\u0103:<\/p>\n<ul>\n<li>Reduc\u0103 procentajul de e\u0219ecuri la lansarea de noi versiuni.<\/li>\n<li>Creasc\u0103 frecven\u021ba desf\u0103\u0219ur\u0103rilor.<\/li>\n<li>Ating\u0103 un timp mediu de recuperare mai rapid \u00een cazul unei noi versiuni a aplica\u021biei.<\/li>\n<li>Scurteze timpul necesar pentru corecturi.<\/li>\n<\/ul>\n<p>\nDevOps \u00eendepline\u0219te toate aceste sarcini \u0219i ajut\u0103 la asigurarea unei livr\u0103ri continue. Organiza\u021biile utilizeaz\u0103 DevOps pentru a ob\u021bine niveluri de performan\u021b\u0103 care erau impensabile acum c\u00e2\u021biva ani. Ele desf\u0103\u0219oar\u0103 zeci, sute \u0219i chiar mii de desf\u0103\u0219ur\u0103ri pe zi, asigur\u00e2nd \u00een acela\u0219i timp fiabilitate, stabilitate \u0219i securitate de clas\u0103 mondial\u0103. <noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/3\/devops-most-important-tech-strategy\">(Afl\u0103 mai multe despre dimensiunile loturilor<\/a><\/noindex> \u0219i impactul acestora asupra livr\u0103rii software-ului).<\/p>\n<p>DevOps \u00eencearc\u0103 s\u0103 rezolve diverse probleme generate de aplicarea metodologiilor din trecut, inclusiv:<\/p>\n<ul>\n<li>Izolarea muncii echipelor de dezvoltare \u0219i opera\u021biuni <\/li>\n<li>Testarea \u0219i desf\u0103\u0219urarea ca faze separate, realizate dup\u0103 proiectare \u0219i construc\u021bie \u0219i care necesitaz\u0103 mai mult timp dec\u00e2t ciclurile de construc\u021bie.<\/li>\n<li>Timpul excesiv cheltuit pe testare, desf\u0103\u0219urare \u0219i proiectare \u00een loc s\u0103 se concentreze pe crearea serviciilor de baz\u0103 pentru afaceri<\/li>\n<li>Desf\u0103\u0219urarea manual\u0103 a codului, care duce la erori \u00een produc\u021bie<\/li>\n<li>Diferen\u021ba \u00eentre graficele de lucru ale grupurilor de dezvoltare \u0219i opera\u021biuni, care conduce la \u00eent\u00e2rzieri suplimentare<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Ghid pentru DevOps pentru \u00eencep\u0103tori\" src=\"\/wp-content\/uploads\/2020\/07\/efa9f7d0e530abcdb53d2e6168fa112f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Opozi\u021bia \u00eentre DevOps, Agile \u0219i IT tradi\u021bional<\/h3>\n<p>\nDevOps este adesea discutat \u00een leg\u0103tur\u0103 cu alte practici IT, \u00een special cu infrastructura Agile \u0219i \u00een cascad\u0103.<\/p>\n<p>Agile reprezint\u0103 un set de principii, valori \u0219i metode pentru produc\u021bia de software. De exemplu, dac\u0103 ai o idee pe care dore\u0219ti s\u0103 o transformi \u00een software, po\u021bi utiliza principiile \u0219i valorile Agile. \u00cens\u0103 acest software poate func\u021biona doar \u00een medii de dezvoltare sau testare. Ai nevoie de o modalitate simpl\u0103 \u0219i sigur\u0103 de a transfera rapid \u0219i cu o mare repetabilitate software-ul \u00een mediu de produc\u021bie, iar calea este prin instrumentele \u0219i metodele DevOps. Metodologia Agile pentru dezvoltarea software-ului se concentreaz\u0103 pe procesele de dezvoltare, iar DevOps se ocup\u0103 cu dezvoltarea \u0219i desf\u0103\u0219urarea \u2014 \u00een cel mai sigur \u0219i fiabil mod.<\/p>\n<p>Compararea modelului tradi\u021bional \u00een cascad\u0103 cu DevOps este o modalitate bun\u0103 de a \u00een\u021belege avantajele pe care le ofer\u0103 DevOps. \u00cen exemplul urm\u0103tor, se presupune c\u0103 aplica\u021bia va fi lansat\u0103 \u00een patru s\u0103pt\u0103m\u00e2ni, dezvoltarea este finalizat\u0103 \u00een propor\u021bie de 85%, aplica\u021bia va fi lansat\u0103, iar procesul de achizi\u021bie a serverelor pentru a trimite codul a fost abia \u00eenceput.<\/p>\n<p>Procese tradi\u021bionale<br \/>\nProcese \u00een DevOps<\/p>\n<p>Dup\u0103 plasarea comenzii pentru noi servere, echipa de dezvoltare lucreaz\u0103 la testare. Grupul opera\u021bional lucreaz\u0103 la documenta\u021bia ampl\u0103 necesar\u0103 pentru desf\u0103\u0219urarea infrastructurii \u00een \u00eentreprinderi.<br \/>\nDup\u0103 plasarea comenzii pentru servere noi, echipele de dezvoltatori \u0219i operatori colaboreaz\u0103 la procesele \u0219i documenta\u021bia necesare pentru instalarea noilor servere. Aceasta permite o mai bun\u0103 \u00een\u021belegere a cerin\u021belor infrastructurii.<\/p>\n<p>Informa\u021biile despre recuperarea \u00een caz de defec\u021biune, redundan\u021b\u0103, amplasarea centrelor de date \u0219i cerin\u021bele pentru stocare sunt distorsionate, deoarece lipse\u0219te inputul echipei de dezvoltatori, care are cuno\u0219tin\u021be ad\u00e2nci \u00een domeniul aplic\u0103rii.<br \/>\nInforma\u021biile detaliate despre dep\u0103\u0219irea defec\u021biunilor, redundan\u021b\u0103, recuperare \u00een caz de dezastru, amplasarea centrelor de date \u0219i cerin\u021bele pentru stocare sunt cunoscute \u0219i corecte datorit\u0103 contribu\u021biei echipei de dezvoltatori.<\/p>\n<p>Echipa operativ\u0103 nu are cuno\u0219tin\u021b\u0103 despre progresul echipei de dezvoltatori. Totodat\u0103, aceasta elaboreaz\u0103 un plan de monitorizare pe baza propriilor concepte. <\/p>\n<p>Echipa operativ\u0103 este pe deplin informat\u0103 despre progresul realizat de echipa de dezvoltatori. De asemenea, aceasta colaboreaz\u0103 cu echipa de dezvoltatori pentru a dezvolta \u00eempreun\u0103 un plan de monitorizare care s\u0103 satisfac\u0103 nevoile IT \u0219i ale afacerii. Ei folosesc, de asemenea, instrumente pentru monitorizarea performan\u021bei aplica\u021biilor (APM).<\/p>\n<p>Testarea de \u00eenc\u0103rcare efectuat\u0103 \u00eenainte de lansarea aplica\u021biei duce la o defec\u021biune a aplica\u021biei, \u00eent\u00e2rziind lansarea acesteia.<br \/>\nTestarea de \u00eenc\u0103rcare efectuat\u0103 \u00eenainte de lansarea aplica\u021biei duce la o sc\u0103dere a performan\u021bei. Echipa de dezvoltatori elimin\u0103 rapid punctele slabe, iar aplica\u021bia este lansat\u0103 la timp.<\/p>\n<h3>Ciclul de via\u021b\u0103 DevOps<\/h3>\n<p>\nDevOps implic\u0103 adoptarea unor practici standard acceptate.<\/p>\n<h3>Planificare continu\u0103<\/h3>\n<p>\nPlanificarea continu\u0103 se bazeaz\u0103 pe principiile de lean pentru a \u00eencepe mic, definind resursele \u0219i rezultatele necesare pentru a verifica valoarea afacerii sau viziunea, adaptarea continu\u0103, m\u0103surarea progresului, \u00een\u021belegerea nevoilor clien\u021bilor, schimbarea direc\u021biei pe m\u0103sur\u0103 ce este necesar, av\u00e2nd \u00een vedere agilitatea, precum \u0219i actualizarea planului de afaceri.<\/p>\n<h3>Dezvoltare colaborativ\u0103<\/h3>\n<p>\nProcesul de dezvoltare colaborativ\u0103 permite afacerilor, echipelor de dezvoltatori \u0219i echipelor de testare, distribuite \u00een diferite fusuri orare, s\u0103 livreze continuu software de calitate. Acesta include dezvoltarea multiplatform\u0103, suport pentru programare \u00een diferite limbi, crearea de pove\u0219ti utilizator \u0219i gestionarea ciclului de via\u021b\u0103. Dezvoltarea colaborativ\u0103 presupune procesul \u0219i practica integr\u0103rii continue, ceea ce faciliteaz\u0103 integrarea frecvent\u0103 a codului \u0219i compilarea automat\u0103. Prin implementarea frecvent\u0103 a codului \u00een aplica\u021bie, problemele de integrare sunt identificate devreme \u00een ciclul de via\u021b\u0103 (c\u00e2nd sunt mai u\u0219or de corectat), iar eforturile generale de integrare sunt reduse datorit\u0103 feedback-ului continuu, pe m\u0103sur\u0103 ce proiectul demonstreaz\u0103 un progres vizibil \u0219i constant.<\/p>\n<h3>Testare continu\u0103<\/h3>\n<p>\nTestarea continu\u0103 reduce costurile de testare, ajut\u00e2nd echipele de dezvoltatori s\u0103 echilibreze rapiditatea cu calitatea. De asemenea, elimin\u0103 blocajele \u00een testare prin virtualizarea serviciilor \u0219i simplific\u0103 crearea mediilor de testare virtualizate, care pot fi u\u0219or partajate, desf\u0103\u0219urate \u0219i actualizate pe m\u0103sur\u0103 ce sistemele se schimb\u0103. Aceste capacit\u0103\u021bi reduc costurile de ini\u021biere \u0219i \u00eentre\u021binere a mediilor de testare, precum \u0219i timpul ciclului de testare, permi\u021b\u00e2ndu-le echipelor s\u0103 efectueze testare de integrare \u00een etapele timpurii ale ciclului de via\u021b\u0103.<\/p>\n<h3>Livrare \u0219i desf\u0103\u0219urare continu\u0103<\/h3>\n<p>\nAceste metodologii aduc cu sine una dintre practicile fundamentale: livrare \u0219i desf\u0103\u0219urare continu\u0103. Acestea asigur\u0103 un canal continuu, care automatizeaz\u0103 procesele cheie. Reduce num\u0103rul de opera\u021bii manuale, timpul de a\u0219teptare pentru resurse \u0219i volumul refacerilor, permi\u021b\u00e2nd desf\u0103\u0219urarea printr-o simpl\u0103 ap\u0103sare de buton, ceea ce asigur\u0103 un num\u0103r mai mare de lans\u0103ri, o reducere a erorilor \u0219i o transparen\u021b\u0103 complet\u0103.<\/p>\n<p>Automatizarea joac\u0103 un rol esen\u021bial \u00een asigurarea unei lans\u0103ri de software stabile \u0219i de \u00eencredere. Una dintre cele mai importante sarcini este s\u0103 \u00eembun\u0103t\u0103\u021bim procesele manuale, cum ar fi compilarea, regresia, desf\u0103\u0219urarea \u0219i crearea infrastructurii, \u0219i s\u0103 le automatiz\u0103m. Pentru aceasta, este necesar\u0103 controlul versiunii codului surs\u0103; scenariile de testare \u0219i desf\u0103\u0219urare; datele despre infrastructur\u0103 \u0219i configurarea aplica\u021biilor; precum \u0219i bibliotecile \u0219i pachetele de care depinde aplica\u021bia. Un alt factor important este capacitatea de a solicita starea tuturor mediilor.<\/p>\n<h3>Monitorizare continu\u0103<\/h3>\n<p>\nMonitorizarea continu\u0103 asigur\u0103 generarea de rapoarte la nivel corporativ, care ajut\u0103 echipele de dezvoltare s\u0103 \u00een\u021beleag\u0103 disponibilitatea \u0219i performan\u021ba aplica\u021biilor \u00een medii de produc\u021bie \u00eenainte ca acestea s\u0103 fie desf\u0103\u0219urate efectiv. Feedback-ul timpuriu, oferit de monitorizarea continu\u0103, este crucial pentru reducerea costurilor erorilor \u0219i gestionarea proiectelor \u00een direc\u021bia corect\u0103. Aceast\u0103 practic\u0103 include adesea instrumente de observa\u021bie, care de obicei relev\u0103 metrici legate de performan\u021ba aplica\u021biilor.<\/p>\n<h3>Feedback \u0219i optimizare constant\u0103<\/h3>\n<p>\nFeedback-ul continuu \u0219i optimizarea ofer\u0103 o reprezentare vizual\u0103 a fluxului de clien\u021bi \u0219i determinarea precis\u0103 a punctelor problematice. Feedback-ul poate fi inclus at\u00e2t \u00een etapele pre-v\u00e2nzare, c\u00e2t \u0219i \u00een cele post-produc\u021bie, pentru a maximiza valoarea \u0219i a asigura finalizarea cu succes a unui num\u0103r \u0219i mai mare de tranzac\u021bii. Toate acestea asigur\u0103 o vizualizare imediat\u0103 a cauzelor problemelor clien\u021bilor, care influen\u021beaz\u0103 comportamentul acestora \u0219i impactul asupra afacerii.<\/p>\n<p><img decoding=\"async\" alt=\"Ghid pentru DevOps pentru \u00eencep\u0103tori\" src=\"\/wp-content\/uploads\/2020\/07\/dbf4a074aee8877a1121ad9f7c13c5d8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Beneficiile DevOps<\/h3>\n<p>\nDevOps poate contribui la crearea unui mediu \u00een care dezvoltatorii \u0219i operatorii lucreaz\u0103 ca o echip\u0103 unic\u0103 pentru atingerea obiectivelor comune. O etap\u0103 important\u0103 \u00een acest proces este implementarea integr\u0103rii continue \u0219i livr\u0103rii continue (CI\/CD). Aceste metode vor permite echipelor s\u0103 lanseze software pe pia\u021b\u0103 mai repede \u0219i cu mai pu\u021bine erori.<\/p>\n<p>Printre avantajele importante ale DevOps se num\u0103r\u0103:<\/p>\n<ul>\n<li>Previzibilitate: DevOps ofer\u0103 o frecven\u021b\u0103 semnificativ mai sc\u0103zut\u0103 a e\u0219ecurilor \u00een timpul lans\u0103rii noilor versiuni.<\/li>\n<li>Mentenabilitate: DevOps asigur\u0103 recuperare u\u0219oar\u0103 \u00een caz de e\u0219ecuri \u00een noua versiune sau oprirea aplica\u021biei.<\/li>\n<li>Reproducibilitate: Sistemul de control al versiunilor build-ului sau codului permite restaurarea versiunilor anterioare, dac\u0103 este necesar.<\/li>\n<li>Calitate mai \u00eenalt\u0103: Rezolvarea problemelor de infrastructur\u0103 \u00eembun\u0103t\u0103\u021be\u0219te calitatea dezvolt\u0103rii aplica\u021biilor.<\/li>\n<li>Timp de lansare pe pia\u021b\u0103: Optimizarea livr\u0103rii software-ului reduce timpul de lansare pe pia\u021b\u0103 cu 50%.<\/li>\n<li>Reducerea riscurilor: Asigurarea securit\u0103\u021bii \u00een ciclul de via\u021b\u0103 al software-ului reduce num\u0103rul defectelor pe parcursul \u00eentregului ciclu de via\u021b\u0103.<\/li>\n<li>Eficien\u021b\u0103 economic\u0103: Aspirarea c\u0103tre eficien\u021ba economic\u0103 \u00een dezvoltarea software-ului este pe placul conducerii superioare.<\/li>\n<li>Stabilitate: Sistemul software este mai stabil, mai sigur, iar modific\u0103rile pot fi testate.<\/li>\n<li>Codul mai mare este segmentat \u00een p\u0103r\u021bi gestionabile: DevOps se bazeaz\u0103 pe metode agile de dezvoltare care permit divizarea unui cod surs\u0103 mare \u00een sec\u021biuni mai mici \u0219i gestionabile.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Principiile DevOps<\/h3>\n<p>\nAdoptarea DevOps a generat mai multe principii care au evoluat (\u0219i continu\u0103 s\u0103 evolueze). Majoritatea furnizorilor de solu\u021bii \u0219i-au dezvoltat propriile modific\u0103ri ale diferitelor metodologii. Toate aceste principii sunt bazate pe o abordare holistic\u0103 a DevOps \u0219i organiza\u021bii de orice dimensiune le pot utiliza.<\/p>\n<h3>Dezvolta\u021bi \u0219i testa\u021bi \u00eentr-un mediu similar cu cel de produc\u021bie<\/h3>\n<p>\nIdeea este de a permite echipelor de dezvoltare \u0219i speciali\u0219tilor \u00een asigurarea calit\u0103\u021bii (QA) s\u0103 dezvolte \u0219i s\u0103 testeze sisteme care se comport\u0103 ca sisteme de produc\u021bie, astfel \u00eenc\u00e2t s\u0103 poat\u0103 vedea cum func\u021bioneaz\u0103 \u0219i reac\u021bioneaz\u0103 aplica\u021bia cu mult \u00eenainte ca aceasta s\u0103 fie gata de desf\u0103\u0219urare.<\/p>\n<p>Aplica\u021bia trebuie s\u0103 fie conectat\u0103 la sistemele de produc\u021bie c\u00e2t mai devreme \u00een cursul ciclului de via\u021b\u0103 pentru a aborda trei probleme poten\u021biale majore. \u00cen primul r\u00e2nd, acest lucru permite testarea aplica\u021biei \u00eentr-un mediu apropiat de cel real. \u00cen al doilea r\u00e2nd, permite testarea \u0219i verificarea proceselor de livrare a aplica\u021biei din timp. \u00cen al treilea r\u00e2nd, permite echipei operationale s\u0103 verifice din fazele timpurii ale ciclului de via\u021b\u0103 cum va func\u021biona mediul lor atunci c\u00e2nd aplica\u021biile vor fi desf\u0103\u0219urate, permi\u021b\u00e2ndu-le astfel s\u0103 creeze un mediu personalizabil, orientat pe aplica\u021bii.<\/p>\n<h3>Desf\u0103\u0219urare cu procese reproductibile \u0219i fiabile<\/h3>\n<p>\nAcest principiu permite echipelor de dezvoltare \u0219i opera\u021biuni s\u0103 men\u021bin\u0103 procese flexible de dezvoltare software pe parcursul \u00eentregului ciclu de via\u021b\u0103. Automatizarea este esen\u021bial\u0103 pentru crearea de procese iterative, fiabile \u0219i reproducibile. Prin urmare, organiza\u021bia trebuie s\u0103 creeze un pipeline de livrare care s\u0103 asigure desf\u0103\u0219urare \u0219i testare automatizate continue. Desf\u0103\u0219ur\u0103rile frecvente permit de asemenea echipelor s\u0103 testeze procesele de desf\u0103\u0219urare, reduc\u00e2nd astfel riscul e\u0219ecurilor de desf\u0103\u0219urare \u00een timpul lans\u0103rilor reale.<\/p>\n<h3>Monitorizarea \u0219i verificarea calit\u0103\u021bii func\u021bion\u0103rii<\/h3>\n<p>\nOrganiza\u021biile sunt bune la monitorizarea aplica\u021biilor \u00een produc\u021bie, deoarece dispun de instrumente care \u00eenregistreaz\u0103 metricele \u0219i indicatorii cheie de performan\u021b\u0103 (KPI) \u00een timp real. Acest principiu aduce monitorizarea \u00een fazele timpurii ale ciclului de via\u021b\u0103, asigur\u00e2nd c\u0103 testarea automatizat\u0103 urm\u0103re\u0219te atributelor func\u021bionale \u0219i nefunc\u021bionale ale aplica\u021biei \u00een etapele ini\u021biale ale procesului. De fiecare dat\u0103 c\u00e2nd aplica\u021bia este testat\u0103 \u0219i desf\u0103\u0219urat\u0103, indicatorii de calitate trebuie s\u0103 fie examina\u021bi \u0219i analiza\u021bi. Instrumentele de monitorizare ofer\u0103 o alert\u0103 timpurie cu privire la problemele legate de func\u021bionare \u0219i calitate care pot ap\u0103rea \u00een procesul de produc\u021bie. Ace\u0219ti indicatori trebuie s\u0103 fie colecta\u021bi \u00eentr-un format accesibil \u0219i u\u0219or de \u00een\u021beles pentru toate p\u0103r\u021bile interesate.<\/p>\n<h3>\u00cembun\u0103t\u0103\u021birea ciclurilor de feedback<\/h3>\n<p>\nUnul dintre obiectivele proceselor DevOps este de a permite organiza\u021biilor s\u0103 reac\u021bioneze mai repede \u0219i s\u0103 efectueze modific\u0103ri. \u00cen livrarea de software, acest obiectiv necesit\u0103 ca organiza\u021bia s\u0103 primeasc\u0103 feedback devreme \u0219i apoi s\u0103 \u00eenve\u021be rapid din fiecare ac\u021biune \u00eentreprins\u0103. Acest principiu impune organiza\u021biilor s\u0103 creeze canale de comunicare care permit p\u0103r\u021bilor interesate s\u0103 acceseze \u0219i s\u0103 interac\u021bioneze prin feedback. Dezvoltarea poate fi realizat\u0103 prin ajustarea planurilor de proiectare sau a priorit\u0103\u021bilor. Produc\u021bia poate ac\u021biona prin \u00eembun\u0103t\u0103\u021birea mediului de produc\u021bie.<\/p>\n<h3>Dev<\/h3>\n<p><\/p>\n<ul>\n<li><b>Planificare:<\/b> Kanboard, Wekan \u0219i alte alternative la Trello; GitLab, Tuleap, Redmine \u0219i alte alternative la JIRA; Mattermost, Roit.im, IRC \u0219i alte alternative la Slack. <\/li>\n<li><b>Scrierea codului:<\/b> Git, Gerrit, Bugzilla; Jenkins \u0219i alte instrumente open-source pentru CI\/CD<\/li>\n<li><b>Construc\u021bie:<\/b> Apache Maven, Gradle, Apache Ant, Packer<\/li>\n<li><b>Teste:<\/b> JUnit, Cucumber, Selenium, Apache JMeter<\/li>\n<\/ul>\n<h3>Ops <\/h3>\n<p><\/p>\n<ul>\n<li><b>Lansare, desf\u0103\u0219urare, operare:<\/b> Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform<\/li>\n<li><b>Monitorizare:<\/b> Grafana, Prometheus, Nagios, InfluxDB, Fluentd \u0219i altele acoperite \u00een acest ghid<\/li>\n<\/ul>\n<p>\n<i>(* Instrumentele pentru opera\u021biuni au fost numerotate \u00een ordinea \u00een care sunt utilizate de echipele opera\u021bionale, dar instrumentul lor se suprapune cu etapele ciclului de via\u021b\u0103 ale instrumentelor de lansare \u0219i desf\u0103\u0219urare. Pentru confortul citirii, numerotarea a fost eliminat\u0103.)<\/i><\/p>\n<h3>\u00cen concluzie<\/h3>\n<p>\nDevOps este o metodologie din ce \u00een ce mai popular\u0103, al c\u0103rei scop este de a uni dezvoltatorii \u0219i operatorii \u00eentr-un \u00eentreg. Este unic\u0103, diferit\u0103 de opera\u021biunile IT tradi\u021bionale \u0219i completeaz\u0103 Agile (dar nu este la fel de flexibil\u0103).<\/p>\n<p><img decoding=\"async\" alt=\"Ghid pentru DevOps pentru \u00eencep\u0103tori\" src=\"\/wp-content\/uploads\/2020\/07\/270640805d10c24a189b1cb4af916488.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAfla\u021bi detaliile despre cum s\u0103 ob\u021bine\u021bi o profesie solicitat\u0103 de la zero sau s\u0103 face\u021bi un Level Up pentru abilit\u0103\u021bi \u0219i salariu, parcurg\u00e2nd cursurile online cu plat\u0103 SkillFactory:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=06072003\">Curs de DevOps<\/a><\/noindex> (12 luni)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">alte cursuri<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=06072003\">Curs de Machine Learning<\/a><\/noindex> (12 s\u0103pt\u0103m\u00e2ni)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=06072003\">\u00cenv\u0103\u021barea profesiei Data Science de la zero<\/a><\/noindex> (12 luni)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=06072003\">Profesia de analist cu orice nivel de \u00eenceput<\/a><\/noindex> (9 luni)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=06072003\">Cursul \u201ePython pentru dezvoltarea web\u201d<\/a><\/noindex> (9 luni)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Util<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 de cursuri gratuite de la Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Tendin\u021bele \u00een Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science a murit. Tr\u0103iasc\u0103 Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science pe steroizi: introducere \u00een Decision Intelligence<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Cea mai de succes \u0219i controversat\u0103 \u201eData Science\u201d a proiectului: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509344\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0447\u0435\u043c \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c DevOps, \u0447\u0442\u043e \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043b\u044f \u0418\u0422-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041c\u043d\u043e\u0433\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440, \u043a\u0430\u043a \u0442\u0435\u0440\u043c\u0438\u043d DevOps \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0441\u044f \u0432 IT-\u043c\u0438\u0440\u0435. \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u0432\u0430\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0438 \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043b\u044f \u043a\u0430\u0440\u044c\u0435\u0440\u044b \u0432 IT. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DevOps \u0425\u043e\u0442\u044f \u043d\u0435\u0442 \u0435\u0434\u0438\u043d\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87419,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0447\u0435\u043c \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c DevOps, \u0447\u0442\u043e \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043b\u044f \u0418\u0422-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0413\u0430\u0439\u0434 \u043f\u043e DevOps \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0447\u0435\u043c \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c DevOps, \u0447\u0442\u043e \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043b\u044f \u0418\u0422-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-07T23:42:16+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-07T23:42:16+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ghidul DevOps pentru \u00eencep\u0103tori | ProHoster","description":"Care este importan\u021ba DevOps, ce \u00eenseamn\u0103 pentru speciali\u0219tii IT, descrierea metodelor, cadrelor \u0219i instrumentelor.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0413\u0430\u0439\u0434 \u043f\u043e DevOps \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 | ProHoster","og:description":"\u0412 \u0447\u0435\u043c \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c DevOps, \u0447\u0442\u043e \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043b\u044f \u0418\u0422-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gajd-po-devops-dlya-nachinayushhih","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-07T23:42:16+00:00","article:modified_time":"2020-07-07T23:42:16+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87418","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:51:33","updated":"2022-09-29 14:42:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/87418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=87418"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/87418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/87419"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=87418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=87418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=87418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}