close

Devops

Mergi la navigare Mergi la căutare
Schema de interacțiune în metodologia Devops.  Dezvoltare + Testare + Operațiuni = DevOps
O ilustrație care arată opțiunea DevOps ca intersecție între dezvoltare, operațiuni și testare

DevOps ( un acronim pentru dezvoltare și operațiuni ) este o metodologie pentru automatizarea proceselor tehnologice de construire, configurare și implementare a software-ului. Metodologia presupune interacţiunea activă a specialiştilor în dezvoltare cu specialiştii în servicii de tehnologia informaţiei şi integrarea reciprocă a proceselor lor tehnologice între ele pentru a asigura calitatea înaltă a produsului software . Conceput pentru organizarea eficientă a creării și actualizării produselor și serviciilor software. Se bazează pe ideea unei strânse interdependențe între crearea de produse și operarea software-ului, care este insuflată în echipă ca cultură de creare a produsului.  

Organizațiile care au nevoie de lansări frecvente de software pot avea nevoie de DevOps, de exemplu. automatizarea proceselor tehnologice de asamblare, configurare și implementare de software. Ciclul zilnic de lansări de software poate fi mult mai intens pentru organizațiile care lansează mai multe aplicații diferite.

Metodologia se concentrează pe standardizarea mediilor de dezvoltare pentru a muta rapid software-ul prin etapele ciclului de viață al software-ului, facilitând lansarea rapidă a versiunilor de produse software. În mod ideal, construirea și lansarea sistemelor de automatizare ar trebui să fie disponibile pentru toți dezvoltatorii în orice mediu, iar dezvoltatorii ar trebui să aibă control asupra mediului de dezvoltare, iar infrastructura IT ar trebui să devină mai concentrată pe aplicații.

Sarcina inginerilor pentru automatizarea proceselor tehnologice de construire, configurare și implementare a software-ului (ingineri DevOps) este de a face ca procesele de dezvoltare și livrare a software-ului să fie conforme cu operațiunea, combinându-le într-un singur întreg folosind instrumente de automatizare.

Mișcarea de automatizare a proceselor tehnologice de construire, configurare și implementare a software-ului (DevOps-movement) a luat naștere în 2009 și a fost concepută pentru a rezolva problemele de interacțiune dintre echipele de dezvoltare software și operare. În același an, în Belgia au fost organizate o serie de conferințe DevOps Days [1] [2] . Apoi s-au desfășurat „DevOps-days” în diferite orașe și țări ale lumii.

Apariție

Originile a ceea ce a devenit DevOps modern, inclusiv unele principii standard, cum ar fi automatizarea și testarea construcției, integrarea continuă și livrarea continuă , își au originea în lumea Agile , care (neoficial) datează din anii 1990 și oficial 2001. Echipele de dezvoltare care utilizează metode precum Extreme Programming nu ar putea „să satisfacă nevoile clientului prin livrarea regulată și timpurie a software-ului valoros” [3] dacă aceste metode nu ar include responsabilitățile de stabilire a operațiunilor și menținerea infrastructurii aplicației. în curs de dezvoltare (în cel mai automat mod). Pe măsură ce Scrum a devenit cadrul agil dominant la începutul anilor 2000 și nu aveau practicile de inginerie care făceau parte din multe echipe Agile, mișcarea de automatizare a operațiunilor/funcțiilor de infrastructură s-a separat de Agile și s-a extins în ceea ce a devenit DevOps modern. DevOps se concentrează astăzi pe implementarea software-ului dezvoltat, fie că este dezvoltat cu metodologii agile sau cu alte metodologii.

Deci, indirect, nevoia de DevOps s-a născut din popularitatea tot mai mare a metodologiei de dezvoltare Agile , deoarece a dus la mai multe lansări.

Trusa de instrumente

Deoarece DevOps este un efort de echipă (între Dev, Operations și Test), nu există un singur instrument „DevOps”: este mai mult un set (sau „Lanț de instrumente DevOps”) de mai multe instrumente. De obicei, instrumentele DevOps se încadrează într-una sau mai multe dintre aceste categorii, reflectând aspecte cheie ale dezvoltării și livrării de software: [4]

  1. Codare — dezvoltarea și analiza codului, instrumente de control al versiunilor, fuziunea codului;
  2. Build - instrumente de integrare continuă, starea build;
  3. Testare - instrumente de testare continuă care asigură evaluarea rapidă și în timp util a riscurilor de afaceri;
  4. Ambalare - depozit de artefacte, preinstalare a aplicației;
  5. Lansare - managementul modificărilor, aprobarea lansării, automatizarea lansării;
  6. Personalizare - configurare și gestionarea infrastructurii, Infrastructura ca instrumente de cod;
  7. Monitorizare - măsurarea performanței aplicației, interacțiunea cu utilizatorul final;
  8. Furnizare continuă;
  9. Integrare continuă.

Deși există multe instrumente disponibile, unele categorii de instrumente sunt deosebit de importante în personalizarea instrumentelor DevOps pentru a fi utilizate într-o organizație. Unele încercări de identificare a acestor instrumente de bază pot fi găsite în literatura existentă [5] .

Instrumente precum managementul containerizării ( Docker , Kubernetes ), integrarea continuă ( Jenkins , GitLab ), implementarea de medii șablon ( Puppet , Ansible , Terraform ) și multe altele sunt adesea folosite și adesea menționate în discuțiile despre instrumentele DevOps [6] .

Comparație cu livrarea continuă

Livrarea continuă și DevOps au semnificație similară (și adesea combinate), dar sunt două concepte diferite:

DevOps este aplicat într-un sens mai larg și se concentrează pe:

  1. Schimbări organizaționale: în special, pentru a sprijini o cooperare mai strânsă între diferitele tipuri de lucrători implicați în livrarea de software;
  2. Dezvoltatori;
  3. operațiuni;
  4. Asigurarea calității;
  5. management;
  6. Administrarea sistemului;
  7. Administrare baze de date;
  8. Coordonatori
  9. Automatizarea proceselor în livrarea de software. [7]

Livrarea continuă este o abordare a automatizării aspectului livrării care se concentrează pe:

  1. Combinarea diferitelor procese;
  2. Făcându-le mai repede și mai des.

Ele împărtășesc obiective finale comune și sunt adesea folosite împreună pentru a le atinge. DevOps și Continuous Delivery folosesc metode agile: schimbări mici și rapide cu un rezultat țintit pentru clientul final.

Goluri

Obiectivele specifice DevOps acoperă întregul proces de livrare a software-ului. Acestea includ:

  1. Reducerea timpului de lansare pe piață;
  2. Reducerea ratei de eșec a noilor versiuni;
  3. Reducerea timpului necesar pentru a face remedieri;
  4. Reducerea timpului de restaurare (în cazul unei defecțiuni a noii versiuni sau al unei alte întreruperi a sistemului actual).

Practicile DevOps fac procesele simple mai programabile și mai dinamice. Cu DevOps, puteți maximiza predictibilitatea, eficiența, securitatea și mentenabilitatea proceselor operaționale.

Integrarea DevOps este concepută pentru livrarea produselor, testarea continuă, testarea calității, dezvoltarea funcțiilor și actualizările de întreținere pentru a îmbunătăți fiabilitatea și securitatea și pentru a oferi un ciclu de dezvoltare și implementare mai rapid. [opt]

DevOps aduce beneficiile managementului versiunilor de software unei organizații prin standardizarea mediului de dezvoltare. Evenimentele pot fi urmărite mai ușor și pot fi activate procese de management documentate și rapoarte detaliate. Abordarea DevOps oferă dezvoltatorilor mai mult control asupra mediului, oferind infrastructurii o înțelegere mai centrată pe aplicație.

Beneficii

Companiile care folosesc DevOps au raportat beneficii semnificative, inclusiv: timp de lansare pe piață redus semnificativ, satisfacție îmbunătățită a clienților, calitate îmbunătățită a produsului, lansări mai fiabile, productivitate și eficiență crescute și capacitatea crescută de a construi produsul potrivit prin experimentare rapidă. [opt]

Cu toate acestea, un studiu lansat în ianuarie 2017 de F5 Labs, bazat pe un sondaj efectuat pe aproape 2.200 de directori IT și profesioniști din industrie, a constatat că doar unul din cinci respondenți consideră că DevOps are un impact strategic asupra organizației lor, în ciuda creșterii utilizării. Același studiu a constatat că doar 17% au identificat DevOps ca un instrument cheie. [9]

Condiții arhitecturale

Pentru a utiliza DevOps în mod eficient, aplicațiile trebuie să îndeplinească un set de cerințe semnificative din punct de vedere arhitectural (ASR), cum ar fi: capabilități de implementare, mutabilitate, testare și monitorizare.

În timp ce DevOps poate fi utilizat în principiu cu orice stil arhitectural, stilul de microservicii devine standardul pentru construirea implementată în mod persistent[ clarifica ] sisteme. Deoarece dimensiunea fiecărui serviciu este mică, devine posibilă schimbarea fiecărui serviciu individual prin refactorizare continuă, ceea ce reduce necesitatea unui proiect inițial mare și permite ca software-ul să fie lansat într-un stadiu incipient în mod continuu.

GitOps

GitOps a evoluat din DevOps [10] [11] [12] . În cadrul acestei abordări, starea specifică a configurației este atribuită Git -ului care a dat numele abordării. În teorie, un alt sistem de control al versiunilor poate fi folosit în locul lui Git , dar în practică este aproape întotdeauna Git. Utilizarea unui sistem de control al versiunilor vă permite să aplicați practici de revizuire a codului și să anulați configurația.

Note

  1. Debois, Patrick DevOps Days Gent . DevopsDays. Preluat la 19 august 2019. Arhivat din original la 24 martie 2011.
  2. Coautorul DevOps Cookbook, John Willis, a scris o postare fantastică Arhivată 25 august 2019 pe Wayback Machine despre acest eveniment.
  3. Principiile fundamentale ale Manifestului Agile . agilemanifesto.org . Preluat la 10 noiembrie 2021. Arhivat din original la 20 ianuarie 2022.
  4. Tendințele pieței Gartner: DevOps – nu o piață, ci o filozofie centrată pe instrumente care susține un lanț valoric de livrare continuă  (engleză)  : jurnal. - Gartner , 2015. - 18 februarie.
  5. Theakanath, Thomas DevOps Stack on a Shoestring Budget . laptrinhx.com . Consultat la 5 februarie 2016. Arhivat din original la 21 martie 2022.
  6. Stronger DevOps Culture with Puppet and Vagrant (link în jos) . Laboratoarele de păpuși . Consultat la 22 octombrie 2015. Arhivat din original la 29 ianuarie 2016. 
  7. Umil, Jez; Farley, David. Livrare continuă: lansări software de încredere prin automatizarea construirii, testării și implementării  . - Pearson Education [en] , 2011. - ISBN 978-0-321-60191-9 .
  8. 1 2 Chen, Lianping. Livrare continuă: beneficii uriașe, dar și provocări  // IEEE Software [en]  : journal  . - 2015. - Vol. 32 , nr. 2 . - P. 50 . - doi : 10.1109/MS.2015.27 .
  9. Bourne, James. O nouă cercetare pune la îndoială importanța strategică a DevOps, în ciuda creșterii utilizării  //  CloudTech : jurnal. - 2017. - 23 ianuarie.
  10. Noțiuni introductive cu GitOps . TheNewStack.io (13 decembrie 2021). Preluat: 5 aprilie 2022.
  11. Fluxuri de lucru și principii GitOps pentru Kubernetes . ContainerJournal.com (1 aprilie 2022). Preluat: 5 aprilie 2022.
  12. Kubernetes la scară fără GitOps este o idee proastă . TheNewStack.io (7 martie 2022). Preluat: 5 aprilie 2022.