5 abilități pe care ar trebui să le aibă orice inginer DevOps

A fi un inginer DevOps modern este un rol foarte complex din perspectiva tehnologiei.

Este necesar să fiți familiarizat cu limbaje de programare obișnuite, cum ar fi Node.JS, scripturi batch, Python sau scripturi batch. O altă așteptare este înțelegerea modului de încorporare a automatizării testelor în procesele de implementare.

În calitate de integrator de cod în conducte automate, trebuie să cunoașteți cel puțin funcționalitatea de bază a diferitelor servicii cloud.

În ciuda acestei complexități tehnologice, abilitățile tehnice nu sunt întotdeauna în fruntea abilităților de care le lipsește inginerilor DevOps. Chiar dacă ar fi de așteptat să presupunem că stăpânirea abilităților tehnice este cheia, diverse perspective adunate de la practicieni reali DevOps arată că abilitățile lor sunt adesea și mai importante.

Abilități DevOps importante

Sursă: devopsuniversity.org

Vizionarea interacțiunii unui inginer DevOps în cadrul unei echipe Scrum este adesea o observație destul de interesantă. De cele mai multe ori, au foarte puține detalii despre conținutul concret al poveștilor pe care restul echipei le implementează, doar din cauza informațiilor tehnice despre funcționalitățile concrete din interiorul poveștilor pentru echipă.

Cu toate acestea, ei trebuie să fie capabili să încorporeze rezultatele echipei într-un canal de implementare funcțional, alături de execuția și validarea diferitelor teste automate.

Aici nu mai este suficient să fii un expert tehnic de nivel scăzut. Comunicarea devine o parte cheie a succesului. Deci, haideți să explorăm cele mai importante abilități DevOps necesare.

Soft Skills

Într-adevăr, colaborarea și discuția din interiorul echipei agile este principalul motiv pentru care lipsa abilităților soft a fost în fruntea listei abilităților DevOps. Dacă tot te întrebi de ce, iată câteva dintre cele mai solide argumente:

  • Inginerii DevOps nu pot fi eficienți fără adaptabilitate la restul echipei de dezvoltare. Această echipă construiește fundația caracteristicilor software sau platformei. Depinde de inginerul DevOps să creeze un mediu live pentru toate acestea și să-l facă să funcționeze.
  • Pe lângă faptul că sunt sincronizați cu propria echipă de dezvoltare, aceștia sunt un punct de contact cheie pentru părțile interesate externe care se străduiesc să aibă acces la platforma software. Ei trebuie să fie capabili să înțeleagă astfel de solicitări și să traducă toată complexitatea tehnică a mediului automatizat de cloud în echivalente non-tehnice, astfel încât părțile interesate să le poată înțelege efectiv. Și fiți middleware-ul suprem între echipa de dezvoltare și părțile interesate externe.
  • În timp ce, de obicei, puteți construi un sistem de învățare pentru a dobândi abilități tehnice specifice, maturizarea în abilitățile soft potrivite necesită să mergeți mult mai adânc în integritatea și personalitatea dvs. Pentru a învăța cum să te privești din altă perspectivă în timp și să identifici zonele de creștere. Acesta nu este ceva ce toată lumea poate face cu ușurință.
  10 convertoare audio în video pentru conținut extraordinar de rețele sociale

Rețele

Când te uiți la peisajul tehnologic al platformelor moderne de cloud, nu este nevoie de mult pentru a te pierde. Trebuie să faceți față serviciilor de sistem de fișiere, servicii de baze de date multiple, API-uri backend, arhitecturi server sau fără server, servicii front-end, modele de învățare automată, medii hibride, rețele private virtuale, echilibratori de încărcare de înaltă disponibilitate, diverse servicii de streaming în timp real și multe altele.

Este imposibil să știi totul despre toate. Dar este absolut necesar ca inginerii DevOps să știe cum să le conecteze pe toate într-o singură platformă software funcțională. Construirea unei comunități puternice de rețea este o necesitate.

Găsirea echilibrului optim între simplitatea și eficacitatea comunicării sistemelor distribuite este o provocare de care trebuie să fie conștienți și gata să ofere echipei o soluție.

De obicei, știi că infrastructura pe care o construiești este suficient de matură doar atunci când începi să te ocupi mai serios de întrebările de securitate și provocările platformei. Și ghiciți ce – este din nou domeniul unui inginer DevOps.

În loc să rămâi la vechile contacte dovedite, trebuie să cauți în mod constant altele noi pentru a acoperi acel nou serviciu solicitat de echipa ta.

Teste software

În special în lumea Agile, flexibilitatea în lansările de software este critică. Este posibil să aveți o configurație de scrum cu perioade de sprint de două săptămâni. Apoi, o nouă lansare de producție la fiecare două săptămâni este o așteptare.

Dacă vă gândiți la întregul ciclu de viață al proiectului, care include planificarea, estimarea, dezvoltarea, testarea și lansarea, nu puteți realiza asta fără o automatizare serioasă pe cât mai mulți dintre acești pași.

Principala condiție prealabilă a succesului în această configurare (și, în cele din urmă, pentru a permite un timp mai rapid de implementare în producție) este concentrarea puternică asupra automatizării testării. Implementări mai rapide împreună cu testele automate au ca rezultat un timp mai scurt pentru feedbackul utilizatorilor către dezvoltatori.

Pentru un inginer DevOps, asta înseamnă integrarea rezultatelor diferitelor echipe de testare într-o conductă CI/CD:

  • Activați execuția scriptului de test unitar după fiecare comitere a depozitului. Dacă acestea nu există, negociați cu dezvoltatorii pentru a le crea.
  • Includeți cazuri de testare de integrare în conductele CI/CD implementate într-un mediu de testare complet integrat și consistent. Nu are sens să rulezi teste de integrare pe fiecare mediu de dezvoltare pe care îl folosește echipa de dezvoltare. Cazurile de testare de integrare trebuie să ruleze impecabil în mediul în care sunt implementate toate serviciile, iar datele sunt consecvente.
  • Încorporați cazuri de testare end-to-end din lumea reală în conducta CI/CD. Faceți o execuție obligatorie pentru fiecare implementare a codului principal în testul de integrare sau mediul de testare a acceptării utilizatorilor. Acest lucru asigură că toate procesele de afaceri importante și critice pot rula fără eșecuri.
  Monica – Manager Relații Personale

Scrierea cazurilor de testare eficiente în așa fel încât să nu exagerați, dar să acoperiți și toate procesele critice este o altă provocare de stăpânit. Inginerii DevOps nu trebuie neapărat să fie aici singuri.

Analiștii de afaceri sau managerii de asigurare a calității pot face parte din rețea (dacă nu fac parte direct din echipă) pentru a ajuta cu asta și a defini pașii exacti. Dar atunci este rolul inginerului DevOps să îl traducă în cod executabil automat.

CI/CD și infrastructura ca cod

Am atins-o deja în mai multe locuri. Cu toate acestea, nu se poate nega faptul că IaC (și ulterior execuția sa prin conducte CI/CD) sunt principalele rezultate ale inginerilor DevOps. Aici toate intrările din partea echipei de dezvoltare (sub formă de diferite funcționalități de serviciu) sunt conectate împreună cu unele medii de infrastructură reale. Apoi, formează software utilizabil ca ieșire de serviciu, care poate fi implementat în mod repetat în diferite medii.

Nu e de mirare că aceasta este una dintre principalele provocări pentru fiecare inginer DevOps. Cu atât mai mult, dacă cerința este să rămâneți independent de cloud, aceasta înseamnă de obicei să scrieți IaC în limbajul Terraform și să vă asigurați că codul nu conține nuanțe specifice furnizorului de cloud. Experiența o arată clar. Trecerea la scripturi de cod de infrastructură agnostice de cloud poate fi o sarcină foarte dificilă, chiar și pentru inginerii cu experiență.

Este destul de imposibil să mențineți infrastructura cloud folosind doar pași manuali pentru implementări. În timpul on-premise, acesta era standardul. Dar, în același mod, a fost standardul solid pentru a livra prin moduri de lucru în cascadă. Nu există nicio șansă de a supraviețui cu implementări manuale într-un mediu Agile. Tranziția trebuie făcută, care este aproape întotdeauna dureroasă.

Dar odată ce este făcut corect, ești acolo.

  • Aveți nevoie de o implementare de producție? Doar rulați canalul de lansare care conține implementarea codului în producție.
  • Aveți nevoie de un alt mediu de dezvoltare pentru a nu se suprapune cu alte activități de dezvoltare din cadrul echipei? Apoi, găsiți conducta de dezvoltare și apăsați butonul Run. Toată infrastructura de dezvoltare va fi executată și creată automat, inclusiv datele de testare.
  • Odată ce necesitatea existenței unui mediu dispare, aceeași conductă de dezvoltare poate executa comenzile de distrugere pentru toate serviciile implementate anterior în mediu.

Este inevitabil ca o echipă Agile de succes să implementeze infrastructura ca cod și să o plaseze în conductele CI/CD care pot face treaba oricând și de fiecare dată. Inginerii DevOps sunt aici pentru a livra.

Containerizarea

Sursă: aws.amazon.com

În proiectele de anvergură, posibilitatea de replicare rapidă este crucială. Realizarea a sute de copii ale acelorași medii în același timp nu ar fi cu adevărat posibilă fără medii containerizate. Containerizarea este o abilitate care necesită o curbă de învățare abruptă. Acesta este și motivul pentru care doar câteva dintre proiecte îl folosesc în mod serios.

  11 Biblioteci de diagrame React pentru grafice și diagrame atrăgătoare

Serverul containerului este un șablon de aplicat ori de câte ori este necesar, iar rezultatul va fi întotdeauna același. Infrastructură identică și date identice. Este o proprietate pe care numai inginerii DevOps o pot construi pentru echipă. Ei trebuie să învețe cum să creeze asta folosind diferite instrumente.

Containerele sunt concepute pentru a fi ușor create și distruse. Inginerii DevOps vor implementa instrumente de orchestrare a containerelor, cum ar fi Kubernetes sau Docker Swarm, care pot gestiona automat implementarea, scalarea și recuperarea containerelor.

Containerele au același sistem de operare gazdă. Dacă un container este compromis, poate compromite alte containere de pe aceeași gazdă. De asemenea, dacă containerele sunt construite din imagini de la terți, acestea pot conține vulnerabilități în interiorul codului. Inginerii DevOps vor depune eforturi pentru a implementa funcții de securitate, cum ar fi izolarea containerelor, controlul accesului și scanarea vulnerabilităților, pentru a atenua aceste riscuri.

Scalabilitatea este o altă proprietate nativă a containerelor. Le puteți scala cu ușurință pe orizontală pentru a face față sarcinii de lucru crescute. Acest lucru poate duce la conflicte de resurse și probleme de performanță. Inginerii DevOps vor implementa instrumente de gestionare a resurselor, cum ar fi cgroups sau cote de resurse Kubernetes, care pot limita numărul de resurse pe care le poate consuma fiecare container.

Inginerii DevOps trebuie să abordeze containerizarea având în vedere securitatea, scalabilitatea și rezistența. Printre toate celelalte abilități tehnice, stăpânirea containerizării necesită o curbă de învățare deosebit de abruptă. Complexitatea este pur și simplu prea mare. Acesta este și motivul pentru care doar câteva dintre proiecte îl folosesc în mod serios.

Concluzie

Practicantul DevOps este un membru unic al echipei tale agile. Este posibil să aveți doar unul sau două dintre ele pentru întregul proiect, dar chiar și atunci, ele vor fi cruciale pentru succes.

Așteptările de la inginerii DevOps sunt mari, deoarece trebuie să îndeplinească mai multe roluri în același timp:

  • Trebuie să fie dezvoltatori tehnici puternici,
  • jucători de echipă plini de empatie, înțelegere și pregătire pentru colaborare,
  • middleware eficient între echipa de dezvoltare și părțile interesate externe non-tehnice,
  • conectarea întregii echipe la automatizare și verificări de testare a codului,
  • permițând lansările regulate ale proiectului,
  • și construirea constantă a unei rețele de experți care se schimbă de la o zi la alta.

În ciuda întregii complexități tehnice, elementul uman este cel care joacă un rol crucial în succesul oricărei inițiative DevOps. Dacă sunteți pe punctul de a deveni unul dintre ei, aveți dreptul de a fi mândru de decizia dvs. și de a aborda abordarea educațională dintr-o perspectivă mult mai largă, fără a vă limita doar la cunoștințele tehnice.

Apoi, consultați întrebările și răspunsurile frecvente la interviu DevOps.