LFCA: Aprèn els conceptes bàsics de DevOps - Part 21


DevOps és un tema tendència des de fa molt de temps i ha aconseguit cridar l'atenció tant de professionals com d'empreses de la tecnologia. Com a principiant, pot ser un repte envoltar el concepte de DevOps, i en aquest tema, concretarem els conceptes bàsics d'aquesta paraula de moda a Internet.

Per començar, DevOps és un conjunt de dues paraules: desenvolupament i operacions. És un conjunt de pràctiques i eines que promouen la col·laboració entre els equips de desenvolupament (Devs) i les operacions (Ops). L'objectiu de DevOps és racionalitzar el cicle de vida del desenvolupament de programari, minimitzar les taxes de fallada, augmentar la freqüència dels desplegaments i aconseguir un programari d'alta qualitat.

Per entendre millor DevOps en l'entorn informàtic modern actual, fem una ullada a com era el model de desplegament abans de l'arribada de DevOps.

Pràctiques de TI tradicionals

Abans de DevOps, els equips de desenvolupament i els enginyers de control de qualitat utilitzaven el model de cascada clàssic. El panorama de treball estava en gran part aïllat i les proves i el desplegament d'aplicacions es van fer de forma aïllada. Això va provocar superposicions de deures, llacunes, retards en la retroalimentació i altres ineficiències que requerien temps addicional per completar el projecte. Els comentaris limitats i retardats van significar que la qualitat del programari no es va auditar a fons fins a l'última fase de desenvolupament.

A més, el desplegament manual del codi va ser ocasionat per errors humans i, per tant, va exigir més temps en la depuració d'aplicacions. A més, els diferents equips tenien diversos terminis per completar les seves tasques i no era estrany que els terminis no es sincronitzessin provocant més retards en la realització del producte final.

El concepte de DevOps va ser concebut entre el 2007 i el 2010 per dos desenvolupadors: Andrew Shafer i Patrick Debois. Des dels seus inicis, ha fomentat una col·laboració fluida entre els equips d'operació i desenvolupament en cada pas del cicle de vida del desenvolupament de programari. Això va anunciar nous conceptes com ara la integració contínua (CI) i el lliurament continu (CD) i molts altres que contribueixen a un lliurament ràpid de programari.

Model i pràctiques de DevOps

DevOps no es tracta només de col·laboració i de tenir la mentalitat adequada per assolir un objectiu. Inclou les millors pràctiques que tenen com a objectiu ajudar a oferir un programari de qualitat i preparat per al mercat en el menor temps possible. Fem un cop d'ull a algunes d'aquestes pràctiques recomanades que us ajudaran a augmentar l'eficiència i l'entrega ràpida del codi.

La integració contínua és una pràctica de desenvolupament de programari on els desenvolupadors fusionen els canvis de codi en un dipòsit central. A continuació, s'executen proves i compilacions automatitzades al codi. L'objectiu de la integració contínua és accelerar la depuració d'aplicacions, reduir el temps necessari per publicar noves actualitzacions de programari i millorar la qualitat del programari.

L'entrega contínua (CD) és una altra pràctica on els canvis en el codi es creen automàticament i es despleguen per a proves vigoroses. Més tard, s'executen proves automatitzades amb el codi desplegat per permetre als desenvolupadors identificar i corregir els errors. Normalment, el codi es sotmet progressivament a múltiples entorns de prova on mitjançant un procediment automatitzat estàndard, el codi aconsegueix la màxima marca de qualitat.

Les eines de CI/CD populars inclouen Jenkins, Travis CI, Circle CI, Azure DevOps i la creació de codi AWS.

L'objectiu de les proves contínues és identificar errors i riscos potencials en les primeres etapes del cicle de vida del desenvolupament de programari per tal de minimitzar els errors que es manifestarien en el producte final. Quan el codi falla les proves vigoroses, normalment s'envia de nou al desenvolupador perquè la revisi abans de passar-lo al departament d'assegurament de la qualitat per a avaluacions i proves funcionals. Les eines de prova contínua àmpliament utilitzades inclouen Travis i Selenium.

Com és d'esperar, les aplicacions i la infraestructura subjacent requereixen un seguiment continu per comprovar la identitat del seu rendiment qualsevol error o defecte i garantir el compliment de diversos estàndards del sector. Es controlen una gran varietat de mètriques, com ara:

  • Ús de memòria i CPU
  • Ús de l'espai en disc
  • Ús de l'ample de banda
  • Interacció amb el client

En supervisar i analitzar les dades i els registres generats per les aplicacions, els desenvolupadors poden obtenir informació fàcilment sobre com afecten les funcions o les configuracions als usuaris. A més, la configuració d'alertes ajudarà a identificar errors o canvis no desitjats a cada pas del camí. En definitiva, la supervisió contínua garanteix l'alta disponibilitat d'aplicacions i inspira confiança que les coses funcionen com s'esperava.

Les eines de monitorització populars inclouen Prometheus, Netdata per esmentar-ne algunes.

Abreujat com a IaC, Infrastructure as Code es descriu com el desplegament i la gestió de recursos com ara servidors virtuals i equilibradors de càrrega que utilitzen fitxers de configuració llegibles per màquina en lloc d'eines de configuració interactives. Això és especialment essencial en entorns de núvol com AWS on podeu activar fàcilment instàncies de càlcul definint els detalls de la instància en un fitxer de configuració i aprofitant eines com Terraform per desplegar els recursos.

Per exemple, Amazon AWS proporciona API que permeten als usuaris interactuar de manera programàtica amb la plataforma Cloud des de la línia d'ordres. Això facilita el desplegament ràpid dels recursos eliminant els processos manuals i la fluïdesa. En poques paraules, IaC fa més feina en poc temps.

L'arquitectura de microserveis és on una única aplicació és una integració o una amalgama de diversos serveis més petits i poc acoblats. Cada servei s'executa de manera independent i es comunica amb la resta d'aplicacions mitjançant API basades en HTTP. Els microserveis es poden implementar com un grup de serveis o un únic servei

L'arquitectura de microserveis és molt diferent de l'arquitectura monolítica tradicional. A l'arquitectura tradicional, les aplicacions són d'un sol nivell i tots els components, inclòs el codi i la interfície d'usuari, s'agrupen en un sol programa.

Els microserveis faciliten el desplegament i la gestió independents dels recursos. També garanteixen una alta disponibilitat evitant un únic punt de fallada. quan una sola aplicació es bloqueja, la resta continuarà executant-se.

Beneficis del model DevOps

Després d'haver mirat les millors pràctiques de DevOps, centrem-nos ara en els avantatges d'adoptar el model DevOps.

La col·laboració entre els equips de desenvolupament i operació es tradueix en una responsabilitat conjunta, que en última instància augmenta la productivitat i fomenta el compromís de l'equip.

La col·laboració també permet als equips depurar fàcilment el codi en cada etapa abans d'arribar a la fase final. Això produeix un programari d'alta qualitat i preparat per al mercat.

El desplegament d'aplicacions és més racionalitzat i molt més ràpid gràcies a les eines d'automatització que ofereix DevOps (com ara Ansible, Chef i Puppet) i la integració contínua avançada (CI).

Com que el coneixement del producte es distribueix entre diversos departaments, hi ha un objectiu i una visió clars sobre el producte, que es tradueixen en una millor presa de decisions en cada etapa del desenvolupament.

La creença arrelada que els equips de desenvolupament i operació han de treballar per sempre per separat està desfasada i té defectes. És possible que la filosofia de l'aïllament segueixi viva en algunes indústries, però això ha donat lloc a ineficiències evidents al llarg del camí.

DevOps busca integrar els equips de desenvolupament i operació i fomentar un canvi cultural de l'antiga manera de treballar en sitges a treballar en conjunt per reduir els errors en el codi, millorar la qualitat del programari, accelerar els terminis de lliurament i augmentar la productivitat general. En última instància, l'usuari final acaba amb un producte d'alta qualitat de manera oportuna.