LFCA: Aprèn els conceptes bàsics de l'ús de contenidors - Part 22


Amb el pas del temps, a mesura que la demanda de proves ràpides i desplegament d'aplicacions va créixer juntament amb cicles econòmics més ràpids, les organitzacions es van veure obligades a innovar per mantenir-se al dia amb l'entorn empresarial de ritme ràpid.

La recerca per modernitzar les aplicacions i crear-ne de noves per crear fluxos de treball àgils va portar al concepte d'utilitzar contenidors. La tecnologia de contenidorització és gairebé tan antiga com la virtualització. Tanmateix, els contenidors no van encendre gaire emoció fins que Docker va esclatar a l'escena el 2013 i va despertar un interès frenètic entre els desenvolupadors i altres professionals de les TI.

Actualment, totes les entitats tecnològiques gegants com Google, Amazon, Microsoft i Red Hat, per esmentar-ne algunes, han pujat al carro.

Per què contenidors?

Un dels reptes als quals s'enfronten els desenvolupadors és la diferència d'entorns informàtics en cada etapa del desenvolupament de programari. Els problemes sorgeixen quan l'entorn del programari és diferent d'una etapa a una altra.

Per exemple, una aplicació es pot executar perfectament en un entorn de proves fent servir Python 3.6. Tanmateix, l'aplicació es comporta de manera estranya, retorna alguns errors o es bloqueja per complet quan es porta a un entorn de producció amb Python 3.9.

Els contenidors van arribar a l'escena per abordar aquest repte i garantir que les aplicacions funcionen de manera fiable quan es mouen d'un entorn informàtic a un altre en totes les etapes del desenvolupament del programari, des de l'ordinador dels desenvolupadors fins a l'entorn de producció. I no només l'entorn del programari pot provocar aquestes inconsistències, sinó també les diferències en les polítiques de seguretat.

Què són els contenidors?

Un contenidor és una unitat de programari aïllada que empaqueta tot el codi binari, biblioteques, executables, dependències i fitxers de configuració en un sol paquet de manera que l'aplicació funcioni sense problemes quan es porta d'un entorn informàtic a un altre. No ve amb una imatge del sistema operatiu que el fa lleuger i fàcil de transportar.

Una imatge de contenidor és un paquet autònom, lleuger i executable que agrupa tot el necessari per executar l'aplicació. En temps d'execució, una imatge de contenidor es transforma en un contenidor. En el cas de Docker, per exemple, una imatge de Docker es converteix en un contenidor de Docker quan s'executa a Docker Engine. Docker és un entorn d'execució utilitzat per crear aplicacions en contenidors.

Els contenidors s'executen completament aïllats del sistema operatiu subjacent i les aplicacions en contenidors s'executen sempre de manera coherent, independentment de l'entorn informàtic o la infraestructura. És per aquest motiu que un desenvolupador pot desenvolupar una aplicació des de la comoditat d'aquest ordinador portàtil i desplegar-la fàcilment en un servidor.

La coherència i la fiabilitat de l'execució de contenidors ofereixen als desenvolupadors la tranquil·litat de saber que les seves aplicacions s'executaran com s'esperava, independentment d'on estiguin desplegades.

En què es diferencien els contenidors de les màquines virtuals?

Una cosa habitual que comparteixen els contenidors i les màquines virtuals és que funcionen en un entorn virtualitzat. La contenerització, en cert sentit, és una forma de tecnologia virtualitzada. Tanmateix, els contenidors es diferencien de les màquines virtuals en més d'un aspecte.

Una màquina virtual també anomenada instància virtual o VM, en resum, és una emulació d'un servidor físic o PC. La virtualització és una tecnologia que permet crear màquines virtuals. El concepte de virtualització es remunta a principis dels anys 70 i va establir les bases de la primera generació de tecnologia al núvol.

En la virtualització, es crea una capa d'abstracció a la part superior d'un servidor o maquinari de l'ordinador. Això fa possible que els recursos de maquinari d'un sol servidor es comparteixin entre diverses màquines virtuals.

El programari utilitzat per fer la capa d'abstracció s'anomena hipervisor. L'hipervisor abstra la màquina virtual i el sistema operatiu convidat del maquinari de l'ordinador o del metall nu. Així, una màquina virtual se situa a la part superior de l'hipervisor que fa que els recursos de maquinari estiguin disponibles gràcies a la capa d'abstracció.

Les màquines virtuals executen un sistema operatiu complet (sistema operatiu convidat) que és independent del sistema operatiu subjacent (sistema operatiu amfitrió) on està instal·lat l'hipervisor. Aleshores, el sistema operatiu convidat proporciona una plataforma per crear, provar i desplegar aplicacions juntament amb les seves biblioteques i binaris.

[També us pot agradar: Com instal·lar KVM a CentOS/RHEL 8]

Hi ha dos tipus d'hipervisors:

Aquest hipervisor s'instal·la directament en un servidor físic o en el maquinari subjacent. No hi ha cap sistema operatiu que es trobi entre l'hipervisor i el maquinari de l'ordinador, d'aquí el nom de l'etiqueta hipervisor de metall nu. Proporciona un suport excel·lent, ja que els recursos no es comparteixen amb el sistema operatiu amfitrió.

A causa de la seva eficiència, els hipervisors tipus 1 s'utilitzen principalment en entorns empresarials. Els proveïdors d'hipervisors de tipus 1 inclouen VMware Esxi i KVM.

També es considera un hipervisor allotjat. S'instal·la a la part superior del sistema operatiu amfitrió i comparteix els recursos de maquinari subjacents amb el sistema operatiu amfitrió.

Els hipervisors tipus 2 són ideals per a entorns informàtics petits i s'utilitzen principalment per provar sistemes operatius i investigar. Els proveïdors d'hipervisors de tipus 2 inclouen VMware Workstation Pro.

Les màquines virtuals acostumen a tenir una mida enorme (poden ocupar diversos GB), lentes a iniciar i aturar-se i consumir molts recursos del sistema, provocant interrupcions i un rendiment lent a causa dels recursos limitats. Com a tal, una màquina virtual es considera voluminosa i està associada a costos generals elevats.

Contenidors

A diferència d'una màquina virtual, un contenidor no requereix un hipervisor. Un contenidor es troba al damunt d'un servidor físic i del seu sistema operatiu i comparteix el mateix nucli que el sistema operatiu, entre altres coses, com ara biblioteques i binaris. Es poden executar diversos contenidors al mateix sistema, cadascun executant el seu propi conjunt d'aplicacions i processos de la resta. Les plataformes de contenidors populars inclouen Docker i Podman.

A diferència de les màquines virtuals, els contenidors funcionen completament aïllats del sistema operatiu subjacent. Els contenidors són excepcionalment lleugers, només uns quants megabytes, ocupen menys espai i són respectuosos amb els recursos. Són fàcils d'iniciar i aturar i poden gestionar més aplicacions que una màquina virtual.

Els contenidors ofereixen una manera còmoda de dissenyar, provar i desplegar aplicacions des del vostre ordinador directament a un entorn de producció, ja sigui a la premissa o al núvol. Aquests són alguns dels avantatges d'utilitzar aplicacions en contenidors.

Abans dels contenidors, teníem el model monolític antic on s'agruparia en un sol paquet una aplicació sencera que comprenia components tant d'interfície com de backend. Els contenidors permeten dividir una aplicació en diversos components individuals que es poden comunicar entre ells.

D'aquesta manera, els equips de desenvolupament poden col·laborar en diverses parts d'una aplicació sempre que no es facin modificacions importants pel que fa a com les aplicacions interactuen entre elles.

En això es basa el concepte de microserveis.

Més modularitat significa més productivitat, ja que els desenvolupadors poden treballar en components individuals de l'aplicació i depurar errors molt més ràpidament que abans.

En comparació amb les màquines virtuals i altres entorns informàtics convencionals, els contenidors utilitzen menys recursos del sistema ja que no inclouen un sistema operatiu. Això evita despeses innecessàries en l'adquisició de servidors cars per crear i provar aplicacions.

A causa de la seva petita empremta, les aplicacions en contenidors es poden desplegar fàcilment en diversos entorns informàtics/sistemes operatius.

Els contenidors permeten un ràpid desplegament i escalat d'aplicacions. També proporcionen la flexibilitat tan necessària per desplegar aplicacions en diversos entorns de programari.

Com beneficien els contenidors els equips de DevOps?

Els contenidors tenen un paper clau en DevOps i seria impossible imaginar com seria la situació sense aplicacions en contenidors. Aleshores, què aporten els contenidors a la taula?

En primer lloc, els contenidors sustenten l'arquitectura de microserveis, la qual cosa permet desenvolupar, desplegar i escalar els blocs de construcció d'una aplicació sencera de manera independent. Com s'ha esmentat, això fa que hi hagi una col·laboració més gran i un desplegament ràpid d'aplicacions.

La contenerització també juga un paper important a l'hora de facilitar les canonades CI/CD proporcionant un entorn controlat i coherent per a les aplicacions de construcció. Totes les biblioteques i dependències estan empaquetades juntament amb el codi en una sola unitat per a un desplegament més ràpid i fàcil. L'aplicació provada serà el programari exacte que es desplegarà en producció.

A més, els contenidors milloren el desplegament de pedaços i actualitzacions quan una aplicació es divideix en diversos microserveis, cadascun en un contenidor independent. Els contenidors individuals es poden examinar, pegar i reiniciar sense interrompre la resta de l'aplicació.

Qualsevol organització que vulgui assolir la maduresa en DevOps hauria de considerar aprofitar el poder dels contenidors per a desplegaments àgils i sense problemes. El repte rau a saber com configurar-los, protegir-los i desplegar-los de manera perfecta en diversos entorns.