Per què es necessita DevOps i qui són els especialistes de DevOps?

Quan una aplicació no funciona, l'últim que voleu escoltar dels vostres companys és la frase "el problema està al vostre costat". Com a resultat, els usuaris pateixen, i no els importa quina part de l'equip és responsable de l'avaria. La cultura DevOps va sorgir precisament per unir el desenvolupament i el suport al voltant d'una responsabilitat compartida pel producte final.

Quines pràctiques s'inclouen en el concepte de DevOps i per què són necessàries? Què fan els enginyers de DevOps i què haurien de ser capaços de fer? Els experts d'EPAM responen aquestes i altres preguntes: Kirill Sergeev, enginyer de sistemes i evangelista DevOps, i Igor Boyko, enginyer de sistemes líder i coordinador d'un dels equips DevOps de la companyia.

Per què es necessita DevOps i qui són els especialistes de DevOps?

Per què és necessari DevOps?

Anteriorment, hi havia una barrera entre els desenvolupadors i el suport (les anomenades operacions). Sembla paradoxal, però tenien objectius i KPI diferents, tot i que estaven fent el mateix. L'objectiu del desenvolupament era implementar els requisits empresarials el més ràpidament possible i afegir-los a un producte de treball. L'assistència s'encarregava de garantir que l'aplicació funcionés de manera estable i qualsevol canvi posava en risc l'estabilitat. Hi ha un conflicte d'interessos: sembla que DevOps va resoldre'l.

Què és DevOps?

És una bona pregunta, i controvertida: el món encara no s'ha posat d'acord en això. EPAM creu que DevOps combina tecnologies, processos i una cultura d'interacció dins d'un equip. Aquesta associació pretén oferir valor contínuament als usuaris finals.

Kirill Sergeev: "Els desenvolupadors escriuen codi, els provadors el revisen i els administradors despleguen el producte final a la producció. Durant molt de temps, aquestes parts de l'equip estaven una mica disperses, i aleshores va sorgir la idea d'unir-les mitjançant un procés comú. Així és com van aparèixer les pràctiques de DevOps".

Va arribar el dia en què els desenvolupadors i els enginyers de sistemes es van interessar en el treball dels altres. La barrera entre producció i suport va començar a desaparèixer. Així va sorgir DevOps, que inclou pràctiques, cultura i interacció en equip.

Per què es necessita DevOps i qui són els especialistes de DevOps?

Quina és l'essència de la cultura DevOps?

El cas és que la responsabilitat del resultat final és de cada membre de l'equip. El més interessant i difícil de la filosofia DevOps és entendre que una persona específica no només és responsable de la seva pròpia etapa de treball, sinó que és responsable de com funcionarà tot el producte. El problema no és de ningú: és compartit i cada membre de l'equip ajuda a resoldre'l.

El més important en una cultura DevOps és resoldre el problema, no només aplicar les pràctiques DevOps. A més, aquestes pràctiques no s'apliquen "al costat d'algú", sinó a tot el producte. Un projecte no necessita un enginyer de DevOps per si; necessita una solució a un problema, i el paper d'un enginyer de DevOps es pot distribuir entre diversos membres de l'equip amb diferents especialitzacions.

Quins són els tipus de pràctiques de DevOps?

Les pràctiques de DevOps cobreixen totes les etapes del cicle de vida del programari.

Igor Boyko: "El cas ideal és quan comencem a utilitzar les pràctiques de DevOps just a l'inici d'un projecte. Juntament amb els arquitectes, planifiquem quin tipus de paisatge arquitectònic tindrà l'aplicació, on s'ubicarà i com escalar-la, i escollim una plataforma. Actualment, l'arquitectura de microserveis està de moda; per a això escollim un sistema d'orquestració: cal poder gestionar cada element de l'aplicació per separat i actualitzar-lo independentment dels altres. Una altra pràctica és "la infraestructura com a codi". Aquest és el nom d'un enfocament en què la infraestructura del projecte es crea i es gestiona mitjançant codi, en comptes de la interacció directa amb els servidors.

A continuació, passem a l'etapa de desenvolupament. Una de les pràctiques més importants aquí és la creació de CI/CD: cal ajudar els desenvolupadors a integrar els canvis al producte ràpidament, en petites porcions, més sovint i sense dolor. CI/CD cobreix la revisió del codi, la càrrega del mestre a la base de codi i el desplegament de l'aplicació en entorns de prova i producció.

En les etapes CI/CD, el codi passa per portes de qualitat. Amb la seva ajuda, comproven que el codi que surt de l'estació de treball del desenvolupador compleix els criteris de qualitat especificats. Les proves d'unitat i d'interfície d'usuari s'afegeixen aquí. Per a un desplegament de productes ràpid, indolor i centrat, podeu triar el tipus de desplegament adequat.

Els professionals de DevOps també tenen un lloc en l'etapa de suport al producte acabat. S'utilitzen per a la supervisió, la retroalimentació, la seguretat i la introducció de canvis. DevOps analitza totes aquestes tasques des d'una perspectiva de millora contínua. Minimitzem les operacions repetitives i les automatitzem. Això també inclou migracions, expansió d'aplicacions i suport de rendiment".

Quins són els avantatges de les pràctiques DevOps?

Si estiguéssim escrivint un llibre de text sobre les pràctiques modernes de DevOps, hi hauria tres punts a la primera pàgina: automatització, acceleració de llançaments i comentaris ràpids dels usuaris.

Kirill Sergeev: “El primer és l'automatització. Podem automatitzar totes les interaccions de l'equip: va escriure el codi - l'ha llançat - l'ha comprovat - l'ha instal·lat - ha recollit comentaris - ha tornat al principi. Tot això és automàtic.

El segon és accelerar el llançament i fins i tot simplificar el desenvolupament. Sempre és important per al client que el producte entri al mercat el més aviat possible i comenci a oferir avantatges abans que els anàlegs dels competidors. El procés de lliurament del producte es pot millorar sense parar: reduir el temps, afegir marques de control addicionals, millorar la supervisió.

El tercer és l'acceleració de la retroalimentació dels usuaris. Si té comentaris, podem fer ajustaments i actualitzar l'aplicació immediatament".

Per què es necessita DevOps i qui són els especialistes de DevOps?

Com es relacionen els conceptes d'"enginyer de sistemes", "enginyer de construcció" i "enginyer de DevOps"?

Es superposen, però pertanyen a zones lleugerament diferents.

Enginyer de sistemes a EPAM és una posició. Es presenten en diferents nivells: des de junior fins a especialista en cap.

Un enginyer de construcció és més un paper que es pot realitzar en un projecte. Ara així es diuen els responsables de CI/CD.

Un enginyer de DevOps és un especialista que implementa pràctiques de DevOps en un projecte.

Si ho resumim tot, obtenim alguna cosa com això: una persona en la posició d'enginyer de sistemes fa el paper d'enginyer de construcció en un projecte i participa en la implementació de les pràctiques DevOps allà.

Què fa exactament un enginyer de DevOps?

Els enginyers de DevOps ajunten totes les peces que conformen un projecte. Coneixen les especificitats del treball dels programadors, provadors, administradors de sistemes i ajuden a simplificar la seva feina. Entenen les necessitats i requisits de l'empresa, el seu paper en el procés de desenvolupament i construeixen el procés tenint en compte els interessos del client.

Hem parlat molt sobre l'automatització: això és el que tracten els enginyers de DevOps en primer lloc. Aquest és un punt molt gran, que, entre altres coses, inclou preparar l'entorn.

Kirill Sergeev: "Abans d'implementar actualitzacions al producte, s'han de provar en un entorn de tercers. Està preparat per enginyers de DevOps. Inculquen una cultura DevOps al projecte en conjunt: introdueixen pràctiques DevOps a totes les capes dels seus projectes. Aquests tres principis: automatització, simplificació, acceleració, porten allà on poden arribar".

Què hauria de saber un enginyer de DevOps?

En general, ha de tenir coneixements de diferents àrees: programació, treball amb sistemes operatius, bases de dades, sistemes de muntatge i configuració. Aquests es complementen amb la capacitat de treballar amb infraestructura en núvol, sistemes d'orquestració i monitorització.

1. Llenguatges de programació

Els enginyers de DevOps coneixen diversos idiomes bàsics per a l'automatització i poden, per exemple, dir-li a un programador: "I si instal·leu el codi no a mà, sinó utilitzant el nostre script, que ho automatitza tot? Prepararem un fitxer de configuració per a ell, serà convenient llegir-lo tant per a tu com per a nosaltres, i el podrem canviar en qualsevol moment. També veurem qui, quan i per què hi fa canvis".

Un enginyer de DevOps pot aprendre un o més d'aquests idiomes: Python, Groovy, Bash, Powershell, Ruby, Go. No cal conèixer-los a un nivell profund: els fonaments bàsics de la sintaxi, els principis de POO i la capacitat d'escriure scripts senzills per a l'automatització són suficients.

2. Sistemes operatius

Un enginyer de DevOps ha d'entendre en quin servidor s'instal·larà el producte, en quin entorn s'executarà i amb quins serveis interactuarà. Podeu triar especialitzar-vos en Windows o la família Linux.

3. Sistemes de control de versions

Sense coneixement d'un sistema de control de versions, un enginyer de DevOps no és enlloc. Git és un dels sistemes més populars del moment.

4. Proveïdors de núvol

AWS, Google, Azure, sobretot si parlem de la direcció de Windows.

Kirill Sergeev: "Els proveïdors de núvol ens proporcionen servidors virtuals que s'adapten perfectament a CI/CD.

La instal·lació de deu servidors físics requereix un centenar d'operacions manuals. Cada servidor s'ha d'iniciar manualment, instal·lar i configurar el sistema operatiu requerit, instal·lar la nostra aplicació en aquests deu servidors i després comprovar-ho tot deu vegades. Els serveis al núvol substitueixen aquest procediment amb deu línies de codi i un bon enginyer de DevOps hauria de poder operar amb ells. Això estalvia temps, esforç i diners, tant per al client com per a l'empresa".

5. Sistemes d'orquestració: Docker i Kubernetes

Kirill Sergeev: “Els servidors virtuals estan dividits en contenidors, en cadascun dels quals podem instal·lar la nostra aplicació. Quan hi ha molts contenidors, cal gestionar-los: encendre un, apagar un altre, fer còpies de seguretat en algun lloc. Això esdevé força complex i requereix un sistema d'orquestració.

Anteriorment, cada aplicació era gestionada per un servidor independent; qualsevol canvi en el seu funcionament podria afectar la funcionalitat de l'aplicació. Gràcies als contenidors, les aplicacions s'aïllen i s'executen per separat, cadascuna a la seva pròpia màquina virtual. Si es produeix una fallada, no cal perdre temps buscant la causa. És més fàcil destruir el contenidor antic i afegir-ne un de nou".

6. Sistemes de configuració: Chef, Ansible, Puppet

Quan necessiteu mantenir tota una flota de servidors, heu de fer moltes operacions del mateix tipus. És llarg i difícil, i el treball manual també augmenta la possibilitat d'error. Aquí és on els sistemes de configuració vénen al rescat. Amb la seva ajuda, creen un script fàcil de llegir per a programadors, enginyers de DevOps i administradors de sistemes. Aquest script ajuda a realitzar les mateixes operacions als servidors automàticament. Això redueix les operacions manuals (i per tant els errors).

Quin tipus de carrera pot construir un enginyer de DevOps?

Es pot desenvolupar tant horitzontalment com verticalment.

Igor Boyko: "Des del punt de vista del desenvolupament horitzontal, els enginyers de DevOps tenen ara les perspectives més àmplies. Tot canvia constantment i podeu desenvolupar habilitats en diferents àrees: des dels sistemes de control de versions fins a la supervisió, des de la gestió de la configuració fins a les bases de dades.

Podeu convertir-vos en arquitecte de sistemes si un empleat està interessat a entendre com funciona una aplicació en totes les etapes del seu cicle de vida, des del desenvolupament fins al suport".

Com esdevenir enginyer DevOps?

  1. Llegiu el projecte Phoenix i el manual de DevOps. Aquests són els veritables pilars de la filosofia DevOps, sent el primer una obra de ficció.
  2. Apreneu tecnologies de la llista anterior: pel vostre compte o mitjançant cursos en línia.
  3. Uneix-te com a enginyer de DevOps per a un projecte de codi obert.
  4. Practica i ofereix pràctiques DevOps en els teus projectes personals i laborals.

Font: www.habr.com

Afegeix comentari