Ghid DevOps pentru începători

Care este importanța DevOps, ce înseamnă pentru profesioniștii IT, o descriere a metodelor, cadrelor și instrumentelor.

Ghid DevOps pentru începători

S-au întâmplat multe de când termenul DevOps a luat loc în lumea IT. Cu o mare parte din ecosistemul open source, este important să ne gândim de ce a început și ce înseamnă pentru o carieră în IT.

Ce este DevOps

Deși nu există o definiție unică, cred că DevOps este un cadru tehnologic care permite colaborarea între echipele de dezvoltare și operațiuni pentru a implementa codul mai rapid în mediile de producție, cu capacitatea de a repeta și automatiza. Vom petrece restul acestui articol pentru a despacheta această revendicare.

Cuvântul „DevOps” este o combinație a cuvintelor „dezvoltare” și „operații”. DevOps ajută la creșterea vitezei de livrare a aplicațiilor și serviciilor. Acest lucru permite organizațiilor să-și servească în mod eficient clienții și să devină mai competitive pe piață. Mai simplu spus, DevOps este alinierea între dezvoltare și operațiunile IT cu o comunicare și o colaborare mai eficiente.

DevOps implică o cultură în care colaborarea între echipele de dezvoltare, operațiuni și afaceri este considerată critică. Nu este vorba doar de instrumente, deoarece DevOps într-o organizație beneficiază continuu și de clienți. Instrumentele sunt unul dintre pilonii săi, alături de oameni și procese. DevOps crește capacitatea organizațiilor de a furniza soluții de înaltă calitate în cel mai scurt timp posibil. DevOps automatizează, de asemenea, toate procesele, de la compilare la implementare, aplicație sau produs.

Discuția DevOps se concentrează pe relația dintre dezvoltatori, oamenii care scriu software pentru a-și câștiga existența și operatorii responsabili cu întreținerea respectivului software.

Provocări pentru echipa de dezvoltare

Dezvoltatorii tind să fie entuziaști și dornici să implementeze noi abordări și tehnologii pentru a rezolva problemele organizaționale. Cu toate acestea, ei se confruntă și cu anumite probleme:

  • Piața concurențială creează multă presiune pentru livrarea produsului la timp.
  • Ei trebuie să aibă grijă de gestionarea codului pregătit pentru producție și de introducerea de noi funcții.
  • Ciclul de lansare poate fi lung, astfel încât echipa de dezvoltare trebuie să facă mai multe ipoteze înainte de a implementa aplicațiile. În acest scenariu, este nevoie de mai mult timp pentru a rezolva problemele care apar în timpul implementării într-un mediu de producție sau de testare.

Provocări cu care se confruntă echipa de operațiuni

Echipele de operațiuni s-au concentrat istoric pe stabilitatea și fiabilitatea serviciilor IT. De aceea, echipele de operațiuni caută stabilitate prin schimbări în resurse, tehnologii sau abordări. Sarcinile lor includ:

  • Gestionați alocarea resurselor pe măsură ce cererea crește.
  • Gestionați modificările de design sau personalizare necesare pentru utilizare într-un mediu de producție.
  • Diagnosticați și rezolvați problemele de producție după implementarea automată a aplicațiilor.

Cum rezolvă DevOps problemele de dezvoltare și operațiuni

În loc să lanseze un număr mare de funcții ale aplicației simultan, companiile încearcă să vadă dacă pot lansa un număr mic de funcții pentru clienții lor printr-o serie de iterații de lansare. Această abordare are o serie de avantaje, cum ar fi calitate mai bună a software-ului, feedback mai rapid al clienților etc. Acest lucru, la rândul său, asigură o satisfacție ridicată a clienților. Pentru a atinge aceste obiective, companiile trebuie să:

  • Reduceți rata de eșec atunci când lansați noi versiuni
  • Creșteți frecvența de implementare
  • Obțineți un timp mediu mai rapid până la recuperare în cazul unei noi lansări a aplicației.
  • Reduceți timpul pentru corecții

DevOps îndeplinește toate aceste sarcini și ajută la asigurarea unei livrări neîntrerupte. Organizațiile folosesc DevOps pentru a atinge niveluri de productivitate care erau de neimaginat cu doar câțiva ani în urmă. Ei efectuează zeci, sute și chiar mii de implementări pe zi, oferind în același timp fiabilitate, stabilitate și securitate de clasă mondială. (Aflați mai multe despre dimensiunile loturilor și impactul acestora asupra livrării de software).

DevOps încearcă să rezolve diverse probleme rezultate din metodologiile anterioare, inclusiv:

  • Izolarea muncii între echipele de dezvoltare și operațiuni
  • Testarea și implementarea sunt faze separate care au loc după proiectare și construcție și necesită mai mult timp decât ciclurile de construire.
  • Timp excesiv petrecut testând, implementând și proiectând în loc să se concentreze pe construirea de servicii de business de bază
  • Implementarea manuală a codului care duce la erori în producție
  • Diferențele în programul echipei de dezvoltare și operațiuni provoacă întârzieri suplimentare

Ghid DevOps pentru începători

Confruntare între DevOps, Agile și IT tradițional

DevOps este adesea discutat în legătură cu alte practici IT, în special Agile și Waterfall IT.

Agile este un set de principii, valori și practici pentru producția de software. Deci, de exemplu, dacă aveți o idee pe care doriți să o transformați în software, puteți utiliza principiile și valorile Agile. Dar acest software poate rula doar într-un mediu de dezvoltare sau de testare. Aveți nevoie de o modalitate simplă și sigură de a vă muta software-ul în producție rapid și repetat, iar calea este prin instrumentele și tehnicile DevOps. Dezvoltarea agilă de software se concentrează pe procesele de dezvoltare, iar DevOps este responsabil pentru dezvoltarea și implementarea în cel mai sigur și mai fiabil mod.

Compararea modelului tradițional în cascadă cu DevOps este o modalitate bună de a înțelege beneficiile pe care le aduce DevOps. Următorul exemplu presupune că aplicația va fi activă în patru săptămâni, dezvoltarea este finalizată în proporție de 85%, aplicația va fi live și procesul de cumpărare a serverelor pentru a livra codul tocmai a început.

Procese tradiționale
Procese în DevOps

După plasarea unei comenzi pentru servere noi, echipa de dezvoltare lucrează la testare. Grupul de lucru lucrează la documentația extinsă necesară întreprinderilor pentru a implementa infrastructura.
Odată plasată o comandă pentru noi servere, echipele de dezvoltare și operațiuni lucrează împreună la procesele și documentele pentru a instala noile servere. Acest lucru vă permite să înțelegeți mai bine cerințele de infrastructură.

Informațiile despre failover, redundanță, locațiile centrelor de date și cerințele de stocare sunt denaturate deoarece nu există nicio contribuție din partea unei echipe de dezvoltare care are cunoștințe aprofundate de domeniu.
Detaliile despre failover, redundanță, recuperare în caz de dezastru, locațiile centrelor de date și cerințele de stocare sunt cunoscute și corecte datorită contribuției echipei de dezvoltare.

Echipa de operațiuni nu are idee despre progresul echipei de dezvoltare. De asemenea, ea dezvoltă un plan de monitorizare bazat pe propriile idei.

Echipa de operațiuni este pe deplin conștientă de progresul realizat de echipa de dezvoltare. De asemenea, interacționează cu echipa de dezvoltare și lucrează împreună pentru a dezvolta un plan de monitorizare care să răspundă nevoilor IT și ale afacerii. De asemenea, folosesc instrumente de monitorizare a performanței aplicațiilor (APM).

Un test de încărcare efectuat înainte de lansarea unei aplicații provoacă blocarea aplicației, întârziind lansarea acesteia.
Un test de încărcare efectuat înainte de a rula o aplicație are ca rezultat performanță slabă. Echipa de dezvoltare rezolvă rapid blocajele, iar aplicația se lansează la timp.

Ciclul de viață DevOps

DevOps presupune adoptarea anumitor practici general acceptate.

Planificare continuă

Planificarea continuă se bazează pe principii lean pentru a începe cu mici, prin identificarea resurselor și a rezultatelor necesare pentru a testa valoarea afacerii sau a viziunii, pentru a se adapta continuu, a măsura progresul, a învăța din nevoile clienților, a schimba direcția după cum este necesar pentru a se adapta agilității și a reinventa planul de afaceri.

Dezvoltare comună

Procesul de dezvoltare colaborativă permite companiilor, echipelor de dezvoltare și echipelor de testare răspândite în diferite fusuri orare să livreze continuu software de calitate. Aceasta include dezvoltarea multi-platformă, suport pentru programare în mai multe limbi, crearea poveștii utilizatorului, dezvoltarea ideilor și managementul ciclului de viață. Dezvoltarea colaborativă include procesul și practica integrării continue, care promovează integrarea frecventă a codului și construirea automată. Prin implementarea frecventă a codului într-o aplicație, problemele de integrare sunt identificate la începutul ciclului de viață (când sunt mai ușor de remediat) și efortul general de integrare este redus prin feedback continuu, deoarece proiectul arată un progres continuu și vizibil.

Testare continuă

Testarea continuă reduce costul testării, ajutând echipele de dezvoltare să echilibreze viteza cu calitatea. De asemenea, elimină blocajele de testare prin virtualizarea serviciilor și facilitează crearea de medii de testare virtualizate care pot fi partajate, implementate și actualizate cu ușurință pe măsură ce sistemele se schimbă. Aceste capabilități reduc costurile de furnizare și întreținere a mediilor de testare și scurtează durata ciclului de testare, permițând testării integrării să aibă loc mai devreme în ciclul de viață.

Lansare și implementare continuă

Aceste tehnici aduc cu ele o practică de bază: lansarea și implementarea continuă. Acest lucru este asigurat de o conductă continuă care automatizează procesele cheie. Reduce pașii manuali, timpii de așteptare a resurselor și reluarea, permițând implementarea prin apăsarea unui buton, rezultând mai multe versiuni, mai puține erori și o transparență completă.

Automatizarea joacă un rol cheie în asigurarea unei lansări stabile și de încredere a software-ului. Una dintre cele mai mari provocări este preluarea proceselor manuale precum construirea, regresia, implementarea și crearea infrastructurii și automatizarea acestora. Acest lucru necesită controlul versiunii codului sursă; scenarii de testare și implementare; date de configurare a infrastructurii și a aplicațiilor; și bibliotecile și pachetele de care depinde aplicația. Un alt factor important este capacitatea de a interoga starea tuturor mediilor.

Monitorizare continuă

Monitorizarea continuă oferă raportare la nivel de întreprindere, care ajută echipele de dezvoltare să înțeleagă disponibilitatea și performanța aplicațiilor din mediile de producție înainte ca acestea să fie implementate în producție. Feedback-ul timpuriu oferit de monitorizarea continuă este esențial pentru a reduce costul erorilor și pentru a conduce proiectele în direcția corectă. Această practică include adesea instrumente de monitorizare care dezvăluie de obicei valori legate de performanța aplicației.

Feedback și optimizare constantă

Feedback-ul și optimizarea continuă oferă o reprezentare vizuală a fluxului clienților și identifică zonele cu probleme. Feedback-ul poate fi inclus atât în ​​etapele pre- și post-vânzare pentru a maximiza valoarea și pentru a asigura că și mai multe tranzacții sunt finalizate cu succes. Toate acestea oferă vizualizarea imediată a cauzei principale a problemelor clienților care le influențează comportamentul și impactul asupra afacerii.

Ghid DevOps pentru începători

Beneficiile DevOps

DevOps poate ajuta la crearea unui mediu în care dezvoltatorii și operațiunile lucrează în echipă pentru a atinge obiective comune. O etapă importantă în acest proces este implementarea integrării continue și a livrării continue (CI/CD). Aceste tehnici vor permite echipelor să introducă software-ul pe piață mai rapid, cu mai puține erori.

Beneficiile importante ale DevOps sunt:

  • Previzibilitate: DevOps oferă o rată de eșec semnificativ mai mică pentru noile versiuni.
  • Mentenabilitatea: DevOps permite o recuperare ușoară dacă o nouă versiune eșuează sau o aplicație se defectează.
  • Reproductibilitate: Controlul versiunilor unei versiuni sau al unui cod vă permite să restaurați versiunile anterioare după cum este necesar.
  • Calitate superioară: abordarea problemelor de infrastructură îmbunătățește calitatea dezvoltării aplicațiilor.
  • Time to Market: optimizarea livrării de software reduce timpul de lansare pe piață cu 50%.
  • Reducerea riscurilor: Implementarea securității în ciclul de viață al software-ului reduce numărul de defecte de-a lungul ciclului de viață.
  • Eficiența costurilor: urmărirea eficienței costurilor în dezvoltarea de software atrage managementul superior.
  • Stabilitate: sistemul software este mai stabil, mai sigur, iar modificările pot fi auditate.
  • Împărțirea unei baze de cod mai mare în bucăți gestionabile: DevOps se bazează pe metode de dezvoltare agile, care vă permite să descompuneți o bază de cod mare în bucăți mai mici, gestionabile.

Principiile DevOps

Adoptarea DevOps a dat naștere mai multor principii care au evoluat (și continuă să evolueze). Majoritatea furnizorilor de soluții au dezvoltat propriile modificări ale diferitelor tehnici. Toate aceste principii se bazează pe o abordare holistică a DevOps, iar organizațiile de orice dimensiune le pot folosi.

Dezvoltați și testați într-un mediu de producție

Ideea este de a permite echipelor de dezvoltare și asigurare a calității (QA) să dezvolte și să testeze sisteme care se comportă ca sistemele de producție, astfel încât să poată vedea cum se comportă și cum funcționează aplicația cu mult înainte de a fi gata de implementare.

Aplicația ar trebui să fie conectată la sistemele de producție cât mai devreme posibil în ciclul său de viață pentru a rezolva trei probleme potențiale majore. În primul rând, vă permite să testați aplicația într-un mediu apropiat de mediul real. În al doilea rând, vă permite să testați și să validați procesele de livrare a aplicațiilor în avans. În al treilea rând, permite echipei de operațiuni să testeze la începutul ciclului de viață modul în care mediul lor se va comporta atunci când aplicațiile sunt implementate, permițându-le astfel să creeze un mediu extrem de personalizat, centrat pe aplicații.

Implementați cu procese repetabile și fiabile

Acest principiu permite echipelor de dezvoltare și operațiuni să susțină procesele agile de dezvoltare a software-ului de-a lungul întregului ciclu de viață al software-ului. Automatizarea este esențială pentru a crea procese iterative, fiabile și repetabile. Prin urmare, organizația trebuie să creeze o conductă de livrare care să permită implementarea și testarea continuă și automată. De asemenea, implementarea frecventă permite echipelor să testeze procesele de implementare, reducând astfel riscul de eșecuri de implementare în timpul lansărilor live.

Monitorizarea si verificarea calitatii muncii

Organizațiile sunt bune la monitorizarea aplicațiilor în producție, deoarece au instrumente care captează valorile și indicatorii cheie de performanță (KPI) în timp real. Acest principiu mută monitorizarea la începutul ciclului de viață, asigurând că testarea automată monitorizează atributele funcționale și nefuncționale ale unei aplicații la începutul procesului. Ori de câte ori o aplicație este testată și implementată, valorile de calitate trebuie examinate și analizate. Instrumentele de monitorizare oferă avertizare timpurie asupra problemelor operaționale și de calitate care pot apărea în timpul producției. Acești indicatori trebuie colectați într-un format care este accesibil și ușor de înțeles pentru toate părțile interesate.

Îmbunătățirea buclelor de feedback

Unul dintre obiectivele proceselor DevOps este acela de a permite organizațiilor să răspundă și să facă schimbări mai rapid. În livrarea de software, acest obiectiv necesită ca organizația să primească feedback din timp și apoi să învețe rapid din fiecare acțiune întreprinsă. Acest principiu impune organizațiilor să creeze canale de comunicare care să permită părților interesate să acceseze și să interacționeze într-o manieră de feedback. Dezvoltarea se poate face prin ajustarea planurilor sau priorităților proiectului. Producția poate acționa prin îmbunătățirea mediului de producție.

dev

  • Planificare: Kanboard, Wekan și alte alternative Trello; GitLab, Tuleap, Redmine și alte alternative JIRA; Mattermost, Roit.im, IRC și alte alternative Slack.
  • Cod de scriere: Git, Gerrit, Bugzilla; Jenkins și alte instrumente open source pentru CI/CD
  • de asamblare: Apache Maven, Gradle, Apache Ant, Packer
  • Teste: JUnit, Castravete, Seleniu, Apache JMeter

Ops

  • Lansare, implementare, operațiuni: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Monitorizarea: Grafana, Prometheus, Nagios, InfluxDB, Fluentd și altele abordate în acest ghid

(*Instrumentele operaționale au fost numerotate în ordinea utilizării de către echipele de operațiuni, dar instrumentele lor se suprapun cu etapele ciclului de viață ale instrumentelor de lansare și implementare. Pentru ușurință de lizibilitate, numerotarea a fost eliminată.)

în concluzie

DevOps este o metodologie din ce în ce mai populară, care își propune să aducă dezvoltatorii și operațiunile împreună ca o singură unitate. Este unic, diferit de operațiunile IT tradiționale și completează Agile (dar nu este la fel de flexibil).

Ghid DevOps pentru începători

Aflați detalii despre cum să obțineți o profesie căutată de la zero sau Level Up în ceea ce privește competențele și salariul, urmând cursuri online plătite de la SkillFactory:

mai multe cursuri

Util

Sursa: www.habr.com

Adauga un comentariu