De ce este nevoie de DevOps și cine sunt specialiștii DevOps?

Când o aplicație nu funcționează, ultimul lucru pe care vrei să-l auzi de la colegii tăi este expresia „problema este de partea ta”. Drept urmare, utilizatorii suferă – și nu le pasă care parte a echipei este responsabilă pentru defecțiune. Cultura DevOps a apărut tocmai pentru a aduce dezvoltarea și sprijinul împreună în jurul unei responsabilități comune pentru produsul final.

Ce practici sunt incluse în conceptul DevOps și de ce sunt necesare? Ce fac inginerii DevOps și ce ar trebui să poată face? Experții de la EPAM răspund la aceste și la alte întrebări: Kirill Sergeev, inginer de sisteme și evanghelist DevOps, și Igor Boyko, inginer principal de sisteme și coordonator al uneia dintre echipele DevOps ale companiei.

De ce este nevoie de DevOps și cine sunt specialiștii DevOps?

De ce este nevoie de DevOps?

Anterior, a existat o barieră între dezvoltatori și suport (așa-numitele operațiuni). Sună paradoxal, dar aveau obiective și KPI-uri diferite, deși făceau același lucru. Scopul dezvoltării a fost de a implementa cerințele de afaceri cât mai repede posibil și de a le adăuga la un produs care funcționează. Asistența a fost responsabilă pentru asigurarea faptului că aplicația funcționează stabil - iar orice modificare pune stabilitatea în pericol. Există un conflict de interese - DevOps a părut să-l rezolve.

Ce este DevOps?

Este o întrebare bună – și una controversată: lumea nu a căzut încă de acord în sfârșit asupra acestui lucru. EPAM consideră că DevOps combină tehnologiile, procesele și o cultură a interacțiunii în cadrul unei echipe. Această asociere își propune să ofere în mod continuu valoare utilizatorilor finali.

Kiril Sergheev: „Dezvoltatorii scriu cod, testerii îl revizuiesc, iar administratorii implementează produsul final în producție. Multă vreme, aceste părți ale echipei au fost oarecum împrăștiate, iar atunci a apărut ideea de a le uni printr-un proces comun. Așa au apărut practicile DevOps.”

A venit ziua în care dezvoltatorii și inginerii de sistem au devenit interesați unul de munca celuilalt. Bariera dintre producție și sprijin a început să dispară. Așa a apărut DevOps, care include practici, cultură și interacțiune în echipă.

De ce este nevoie de DevOps și cine sunt specialiștii DevOps?

Care este esența culturii DevOps?

Cert este că responsabilitatea pentru rezultatul final revine fiecărui membru al echipei. Cel mai interesant și dificil lucru din filosofia DevOps este să înțelegeți că o anumită persoană nu este responsabilă doar de propria etapă a muncii, ci este responsabilă de modul în care va funcționa întregul produs. Problema nu este de partea nimănui - este împărtășită și fiecare membru al echipei ajută la rezolvarea ei.

Cel mai important lucru într-o cultură DevOps este să rezolvi problema, nu doar să aplici practicile DevOps. Mai mult, aceste practici nu sunt implementate „de partea cuiva”, ci pe întregul produs. Un proiect nu are nevoie de un inginer DevOps per se - are nevoie de o soluție la o problemă, iar rolul unui inginer DevOps poate fi distribuit între mai mulți membri ai echipei cu specializări diferite.

Care sunt tipurile de practici DevOps?

Practicile DevOps acoperă toate etapele ciclului de viață al software-ului.

Igor Boyko: „Cazul ideal este atunci când începem să folosim practicile DevOps chiar de la inițierea proiectului. Împreună cu arhitecții, planificăm ce fel de peisaj arhitectural va avea aplicația, unde va fi amplasată și cum se va scala și alegem o platformă. În zilele noastre, arhitectura de microservicii este la modă - pentru aceasta alegem un sistem de orchestrare: trebuie să poți gestiona fiecare element al aplicației separat și să îl actualizezi independent de celelalte. O altă practică este „infrastructura ca cod”. Acesta este numele unei abordări în care infrastructura proiectului este creată și gestionată folosind cod, mai degrabă decât prin interacțiunea directă cu serverele.

În continuare trecem la etapa de dezvoltare. Una dintre cele mai mari practici aici este construirea CI/CD: trebuie să-i ajutați pe dezvoltatori să integreze modificările în produs rapid, în porțiuni mici, mai des și fără durere. CI/CD acoperă revizuirea codului, încărcarea masterului în baza de cod și implementarea aplicației în medii de testare și producție.

În etapele CI/CD, codul trece prin porți de calitate. Cu ajutorul lor, ei verifică dacă codul care iese din stația de lucru a dezvoltatorului îndeplinește criteriile de calitate specificate. Testarea unitară și UI este adăugată aici. Pentru o implementare rapidă, nedureroasă și concentrată a produsului, puteți alege tipul de implementare adecvat.

Practicienii DevOps au un loc și în etapa de susținere a produsului finit. Sunt folosite pentru monitorizare, feedback, securitate și introducerea de modificări. DevOps analizează toate aceste sarcini dintr-o perspectivă de îmbunătățire continuă. Minimizăm operațiunile repetitive și le automatizăm. Aceasta include, de asemenea, migrările, extinderea aplicațiilor și suportul de performanță.”

Care sunt beneficiile practicilor DevOps?

Dacă am scrie un manual despre practicile moderne DevOps, ar exista trei puncte pe prima pagină: automatizare, accelerarea lansărilor și feedback rapid din partea utilizatorilor.

Kiril Sergheev: „Primul lucru este automatizarea. Putem automatiza toate interacțiunile din echipă: a scris codul - l-am lansat - l-am verificat - l-am instalat - a colectat feedback - a revenit la început. Toate acestea sunt automate.

Al doilea este accelerarea lansării și chiar simplificarea dezvoltării. Este întotdeauna important pentru client ca produsul să intre pe piață cât mai curând posibil și să înceapă să ofere beneficii mai devreme decât analogii concurenților. Procesul de livrare a produselor poate fi îmbunătățit la nesfârșit: reduceți timpul, adăugați semne de control suplimentare, îmbunătățiți monitorizarea.

În al treilea rând este accelerarea feedback-ului utilizatorilor. Dacă are comentarii, putem face imediat ajustări și putem actualiza imediat aplicația.”

De ce este nevoie de DevOps și cine sunt specialiștii DevOps?

Cum se raportează conceptele de „inginer de sisteme”, „inginer de construcție” și „inginer DevOps”?

Se suprapun, dar aparțin unor zone ușor diferite.

Inginer de sisteme la EPAM este o poziție. Ele vin pe diferite niveluri: de la junior la specialist șef.

Un inginer constructor este mai mult un rol care poate fi îndeplinit pe un proiect. Acum, așa se numesc oamenii responsabili pentru CI/CD.

Un inginer DevOps este un specialist care implementează practicile DevOps într-un proiect.

Dacă rezumăm totul, obținem așa ceva: o persoană în postura de inginer de sisteme joacă rolul unui inginer de construcție pe un proiect și este implicată în implementarea practicilor DevOps acolo.

Ce face exact un inginer DevOps?

Inginerii DevOps au reunit toate piesele care alcătuiesc un proiect. Ei cunosc specificul muncii programatorilor, testerilor, administratorilor de sistem și ajută la simplificarea muncii lor. Ei înțeleg nevoile și cerințele afacerii, rolul acesteia în procesul de dezvoltare - și construiesc procesul ținând cont de interesele clientului.

Am vorbit mult despre automatizare - cu asta se ocupă în primul rând inginerii DevOps. Acesta este un punct foarte mare, care, printre altele, include pregătirea mediului.

Kiril Sergheev: „Înainte de implementarea actualizărilor în produs, acestea trebuie testate într-un mediu terță parte. Este pregătit de inginerii DevOps. Ei insuflă o cultură DevOps în proiectul în ansamblu: introduc practici DevOps la toate nivelurile proiectelor lor. Aceste trei principii: automatizare, simplificare, accelerare - ele aduc oriunde pot ajunge.”

Ce ar trebui să știe un inginer DevOps?

În general, el trebuie să aibă cunoștințe din diferite domenii: programare, lucru cu sisteme de operare, baze de date, sisteme de asamblare și configurare. Acestea sunt completate de capacitatea de a lucra cu infrastructura cloud, sisteme de orchestrare și monitorizare.

1. Limbaje de programare

Inginerii DevOps cunosc mai multe limbaje de bază pentru automatizare și pot, de exemplu, să-i spună unui programator: „Ce zici să instalezi codul nu manual, ci folosind scriptul nostru, care automatizează totul? Vom pregăti un fișier de configurare pentru acesta, va fi convenabil să citiți atât dvs., cât și nouă și îl vom putea schimba oricând. Vom vedea, de asemenea, cine, când și de ce îi face modificări.”

Un inginer DevOps poate învăța una sau mai multe dintre aceste limbi: Python, Groovy, Bash, Powershell, Ruby, Go. Nu este necesar să le cunoașteți la un nivel profund - elementele de bază ale sintaxei, principiile OOP și capacitatea de a scrie scripturi simple pentru automatizare sunt suficiente.

2. Sisteme de operare

Un inginer DevOps trebuie să înțeleagă pe ce server va fi instalat produsul, în ce mediu va rula și cu ce servicii va interacționa. Puteți alege să vă specializați în Windows sau în familia Linux.

3. Sisteme de control al versiunilor

Fără cunoștințe despre un sistem de control al versiunilor, un inginer DevOps nu este nicăieri. Git este unul dintre cele mai populare sisteme în acest moment.

4. Furnizori de cloud

AWS, Google, Azure – mai ales dacă vorbim de direcția Windows.

Kiril Sergheev: „Furnizorii de cloud ne oferă servere virtuale care se potrivesc perfect în CI/CD.

Instalarea a zece servere fizice necesită aproximativ o sută de operații manuale. Fiecare server trebuie lansat manual, instalat și configurat sistemul de operare necesar, instalat aplicația noastră pe aceste zece servere și apoi verificat totul de zece ori. Serviciile cloud înlocuiesc această procedură cu zece linii de cod și un inginer DevOps bun ar trebui să poată opera cu ele. Acest lucru economisește timp, efort și bani – atât pentru client, cât și pentru companie.”

5. Sisteme de orchestrare: Docker și Kubernetes

Kiril Sergheev: „Serverele virtuale sunt împărțite în containere, în fiecare dintre ele ne putem instala aplicația. Când există o mulțime de containere, trebuie să le gestionați: porniți unul, opriți altul, faceți copii de rezervă undeva. Acest lucru devine destul de complex și necesită un sistem de orchestrare.

Anterior, fiecare aplicație era gestionată de un server separat - orice modificare în funcționarea acesteia putea afecta funcționalitatea aplicației. Datorită containerelor, aplicațiile devin izolate și rulează separat - fiecare pe propria sa mașină virtuală. Dacă apare o defecțiune, nu este nevoie să pierdeți timp căutând cauza. Este mai ușor să distrugi vechiul container și să adaugi unul nou.”

6. Sisteme de configurare: Chef, Ansible, Puppet

Când trebuie să întrețineți o flotă întreagă de servere, trebuie să faceți multe operațiuni de același tip. Este lung și dificil, iar munca manuală crește și șansa de eroare. Aici sistemele de configurare vin în ajutor. Cu ajutorul lor, ei creează un script ușor de citit pentru programatori, inginerii DevOps și administratorii de sistem. Acest script vă ajută să efectuați automat aceleași operațiuni pe servere. Acest lucru reduce operațiunile manuale (și, prin urmare, erorile).

Ce fel de carieră poate construi un inginer DevOps?

Te poți dezvolta atât pe orizontală, cât și pe verticală.

Igor Boyko: „Din punct de vedere al dezvoltării orizontale, inginerii DevOps au acum cele mai largi perspective. Totul se schimbă constant și vă puteți dezvolta abilități într-o varietate de domenii: de la sisteme de control al versiunilor la monitorizare, de la gestionarea configurației la baze de date.

Puteți deveni arhitect de sistem dacă un angajat este interesat să înțeleagă cum funcționează o aplicație în toate etapele ciclului ei de viață - de la dezvoltare până la asistență.”

Cum să devii inginer DevOps?

  1. Citiți Proiectul Phoenix și Manualul DevOps. Aceștia sunt adevărații piloni ai filozofiei DevOps, primul fiind o operă de ficțiune.
  2. Învață tehnologii din lista de mai sus: pe cont propriu sau prin cursuri online.
  3. Alăturați-vă ca inginer DevOps pentru un proiect open source.
  4. Practicați și oferiți practici DevOps pentru proiectele dvs. personale și de lucru.

Sursa: www.habr.com

Adauga un comentariu