Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source
Construiește primul tău lanț DevOps în cinci pași pentru începători.

DevOps a devenit un panaceu pentru procesele de dezvoltare prea lente, deconectate și altfel problematice. Dar aveți nevoie de cunoștințe minime în DevOps. Acesta va acoperi concepte precum lanțul DevOps și cum să creați unul în cinci pași. Acesta nu este un ghid complet, ci doar un „pește” care poate fi extins. Să începem cu istoria.

Introducerea mea în DevOps

Obișnuiam să lucrez cu cloud-uri la Citi Group și să dezvolt o aplicație web IaaS pentru a gestiona infrastructura cloud a Citi, dar întotdeauna am fost interesat de cum să optimizez lanțul de dezvoltare și să îmbunătățesc cultura în rândul dezvoltatorilor. Greg Lavender, CTO pentru Cloud Architecture and Infrastructure, mi-a recomandat această carte. Proiectul „Phoenix”. Acesta explică frumos principiile DevOps și se citește ca un roman.

Tabelul de pe spate arată cât de des companiile lansează versiuni noi:

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Cum reușesc Amazon, Google și Netflix să lanseze atât de mult? Și este simplu: și-au dat seama cum să creeze un lanț DevOps aproape perfect.

Lucrurile au fost foarte diferite pentru noi la Citi până când am trecut la DevOps. Apoi, echipa mea a avut medii diferite, dar am făcut livrarea către serverul de dezvoltare manual. Toți dezvoltatorii au avut acces la un singur server de dezvoltare bazat pe IBM WebSphere Application Server Community Edition. Cu o încercare simultană de a livra, serverul a „căzut” și de fiecare dată a trebuit să negociem „dureros” între noi. De asemenea, am avut o acoperire insuficientă a codului cu teste, un proces de livrare manuală consumatoare de timp și nicio modalitate de a urmări livrarea codului cu ajutorul unei sarcini sau al cerințelor clientului.

Era clar că trebuie făcut ceva urgent și mi-am găsit un coleg cu gânduri asemănătoare. Am decis să creăm împreună primul lanț DevOps - el a configurat o mașină virtuală și un server de aplicații Tomcat, iar eu m-am ocupat de Jenkins, de integrarea cu Atlassian Jira și BitBucket, precum și de acoperirea codului cu teste. Proiectul a avut succes: am automatizat complet lanțul de dezvoltare, am obținut un timp de funcționare de aproape 100% pe serverul de dezvoltare, am putut monitoriza și îmbunătăți acoperirea codului cu teste, iar o ramură Git ar putea fi legată de o livrare și o problemă Jira. Și aproape toate instrumentele pe care le-am folosit pentru a construi lanțul DevOps au fost open source.

De fapt, lanțul a fost simplificat, pentru că nici măcar nu am aplicat configurații avansate folosind Jenkins sau Ansible. Dar am reușit. Poate că aceasta este o consecință a principiului Pareto (alias regula 80/20).

O scurtă descriere a lanțului DevOps și CI/CD

DevOps are definiții diferite. DevOps, precum Agile, include diferite discipline. Dar cei mai mulți vor fi de acord cu următoarea definiție: DevOps este o metodă, sau ciclu de viață, de dezvoltare a software-ului, al cărui principiu principal este de a crea o cultură în care dezvoltatorii și alți angajați sunt „pe aceeași lungime de undă”, munca manuală este automatizată, fiecare face ceea ce este mai bun, crește frecvența livrărilor, crește productivitatea muncii, crește flexibilitatea.

Deși instrumentele singure nu sunt suficiente pentru a crea un mediu DevOps, ele sunt indispensabile. Cea mai importantă dintre acestea este integrarea continuă și livrarea continuă (CI/CD). Există diferite etape în lanț pentru fiecare mediu (de exemplu, DEV (dezvoltare), INT (integrare), TST (testare), QA (asigurarea calității), UAT (testare de acceptare a utilizatorului), STG (pregătire), PROD (utilizare)) , sarcinile manuale sunt automatizate, dezvoltatorii pot produce cod de calitate, îl pot livra și pot reconstrui cu ușurință.

Această notă descrie cum să creați un lanț DevOps în cinci pași, așa cum se arată în imaginea de mai jos, folosind instrumente open source.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Sa trecem la treaba.

Pasul 1: Platforma CI/CD

În primul rând, aveți nevoie de un instrument CI/CD. Jenkins este un instrument CI/CD open-source cu licență MIT, scris în Java, care a popularizat mișcarea DevOps și a devenit standardul de facto pentru CICD.

Ce este Jenkins? Imaginați-vă că aveți un panou de control magic pentru o varietate de servicii și instrumente. Pe cont propriu, un instrument CI/CD precum Jenkins este inutil, dar cu instrumente și servicii diferite, devine atotputernic.

Pe lângă Jenkins, există multe alte instrumente open source, alegeți oricare.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Iată cum arată un proces DevOps cu un instrument CI/CD

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Aveți un instrument CI/CD în localhost, dar încă nu sunt multe de făcut. Să trecem la pasul următor.

Pasul 2: Controlul versiunii

Cel mai bun (și probabil cel mai ușor) mod de a testa magia unui instrument CI/CD este să îl integrați cu un instrument de management al controlului sursei (SCM). De ce aveți nevoie de controlul versiunilor? Să presupunem că faci o cerere. Îl scrii în Java, Python, C++, Go, Ruby, JavaScript sau orice alt limbaj care este un cărucior și un mic cărucior. Ceea ce scrii se numește cod sursă. La început, mai ales dacă lucrați singur, puteți salva totul într-un director local. Dar pe măsură ce proiectul crește și mai mulți oameni se alătură, aveți nevoie de o modalitate de a partaja modificările codului, dar să evitați conflictele atunci când îmbinați modificările. Și, de asemenea, trebuie să restaurați cumva versiunile anterioare fără a utiliza copii de siguranță și folosind metoda copy-paste pentru fișierele de cod.

Și aici fără SCM nicăieri. SCM stochează codul în depozite, gestionează versiunile acestuia și îl coordonează între dezvoltatori.

Există multe instrumente SCM, dar Git a devenit pe bună dreptate standardul de facto. Vă sfătuiesc să îl folosiți, dar există și alte opțiuni.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Iată cum arată conducta DevOps după adăugarea SCM.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Instrumentul CI/CD poate automatiza încărcarea și descărcarea codului sursă și colaborarea în echipă. Nu-i rău? Dar acum cum să faci o aplicație funcțională din asta, iubită de miliarde de utilizatori?

Pasul 3: Construiți instrumentul de automatizare

Totul merge așa cum trebuie. Puteți să încărcați cod și să efectuați modificări pentru controlul sursei și să invitați prietenii să lucreze cu dvs. Dar încă nu aveți o aplicație. Pentru ca aceasta să fie o aplicație web, trebuie să fie compilată și ambalată pentru distribuție sau rulată ca un executabil. (Un limbaj de programare interpretat precum JavaScript sau PHP nu trebuie să fie compilat.)

Utilizați un instrument de automatizare a construcției. Indiferent de instrumentul pe care îl alegeți, acesta va asambla codul în formatul potrivit și va automatiza curățarea, compilarea, testarea și livrarea. Instrumentele de compilare variază în funcție de limbă, dar următoarele opțiuni open source sunt utilizate în mod obișnuit.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Perfect! Acum să inserăm fișierele de configurare a instrumentului de automatizare a construirii în controlul sursei, astfel încât instrumentul CI/CD să le construiască.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Se simte bine. Dar unde sunt toate astea să fie lansate acum?

Pasul 4: Server de aplicații web

Deci, aveți un fișier împachetat care poate fi executat sau lansat. Pentru ca o aplicație să fie cu adevărat utilă, trebuie să aibă un fel de serviciu sau interfață, dar trebuie să le pui pe toate undeva.

O aplicație web poate fi găzduită pe un server de aplicații web. Serverul de aplicații oferă un mediu în care puteți executa logica împachetată, redați interfețe și expuneți servicii web printr-un socket. Aveți nevoie de un server HTTP și de alte câteva medii (o mașină virtuală, de exemplu) pentru a instala serverul de aplicații. Deocamdată, să ne prefacem că ai de-a face cu toate acestea pe măsură ce mergi (deși voi vorbi mai jos despre containere).

Există mai multe servere de aplicații web deschise.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Avem deja un lanț DevOps aproape funcțional. Buna treaba!

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

În principiu, te poți opri aici, apoi te poți descurca singur, dar merită să vorbim despre calitatea codului.

Pasul 5: Testați acoperirea

Testarea necesită mult timp și efort, dar este mai bine să găsiți erori imediat și să îmbunătățiți codul pentru a mulțumi utilizatorii finali. În acest scop, există multe instrumente deschise care nu numai că vor testa codul, ci și vor sfătui cum să-l îmbunătățească. Majoritatea instrumentelor CI/CD se pot conecta la aceste instrumente și automatizează procesul.

Testarea este împărțită în două părți: cadre de testare pentru scrierea și executarea testelor și instrumente cu sugestii pentru îmbunătățirea calității codului.

Cadre de testare

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Instrumente cu sfaturi de calitate

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Cele mai multe dintre aceste instrumente și cadre sunt scrise pentru Java, Python și JavaScript, deoarece C++ și C# sunt proprietare (deși GCC este open source).

Am aplicat instrumentele de acoperire a testelor, iar acum conducta DevOps ar trebui să arate ca imaginea de la începutul tutorialului.

Pași suplimentari

containere

După cum am mai spus, un server de aplicații poate fi găzduit într-o mașină virtuală sau într-un server, dar containerele sunt mai populare.

Ce sunt containerele? Pe scurt, într-o mașină virtuală, sistemul de operare ocupă adesea mai mult spațiu decât aplicația, iar un container este de obicei suficient cu câteva biblioteci și configurație. În unele cazuri, mașinile virtuale sunt indispensabile, dar containerul poate găzdui aplicația împreună cu serverul fără costuri suplimentare.

Pentru containere, de obicei sunt luate Docker și Kubernetes, deși există și alte opțiuni.

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Citiți articole despre Docker și Kubernetes la opensource.com:

Instrumente de automatizare middleware

Lanțul nostru DevOps este axat pe construirea și livrarea în colaborare a unei aplicații, dar există și alte lucruri interesante pe care le puteți face cu instrumentele DevOps. De exemplu, utilizați instrumente Infrastructure as Code (IaC), cunoscute și ca instrumente de automatizare middleware. Aceste instrumente ajută la automatizarea instalării, gestionării și a altor sarcini pentru middleware. De exemplu, un instrument de automatizare poate prelua aplicații (server de aplicații web, bază de date, instrumente de monitorizare) cu configurațiile corecte și le poate împinge către serverul de aplicații.

Iată câteva opțiuni pentru instrumentele de automatizare middleware deschise:

Ghid pentru manechin: Construirea lanțurilor DevOps cu instrumente open source

Detalii in articole opensource.com:

Acum ce?

Acesta este doar vârful aisbergului. Lanțul DevOps poate face mult mai mult. Începeți cu un instrument CI/CD și vedeți ce altceva puteți automatiza pentru a vă ușura munca. Nu uita de instrumente de comunicare deschise pentru o colaborare eficientă.

Iată mai multe articole DevOps bune pentru începători:

De asemenea, puteți integra DevOps cu instrumente agile deschise:

Sursa: www.habr.com

Adauga un comentariu