28 juliol, 2020
Contenidors vs. instàncies cloud

 

Contenidors vs. Instàncies cloud

La virtualització es porten utilitzant des de fa molt temps amb la finalitat que el software pugui aprofitar tota la capacitat del hardware. Simulant recursos hardware a través del software, la virtualització permet executar múltiples aplicacions utilitzant una part del hardware físic. Normalment, quan es parla de virtualització, s’està parlant de la creació de màquines virtuals que executen un sistema operatiu i que tenen assignades uns recursos parcials del maquinari total de la màquina física.

Actualment, en virtualització s’ha fet molt popular l’ús de contenidors, que creguin un entorn aïllat per a executar aplicacions. L’ús de contenidors ajuda a aconseguir major flexibilitat a l’hora de portar aplicacions entre diferents entorns, podent ser traslladades entre ambients amb un mínim o nul impacte.

En aquest article parlarem de contenidors i veurem què són els contenidors Docker i què és una màquina virtual.

Què són els contenidors

Els contenidors són uns mecanismes d’empaquetament d’aplicacions que permeten executar-les en diferents entorns. Els contenidors separen les aplicacions de l’entorn on s’executen permetent que s’implementin de manera senzilla en diferents tipus d’ambients com a servidors, núvols públics, núvols privats o ordinadors personals dels mateixos desenvolupadors.

Un contenidor és un entorn de proves segur on els desenvolupadors poden treballar en una aplicació en el seu entorn original, sense haver de preocupar-se per la portabilitat d’aquesta.

Els contenidors s’inicien a partir d’imatges que inclouen l’aplicació, així com els components requerits perquè s’executin (arxius de configuració, llibreries, etc.). L’ús d’aquestes imatges fa que la instal·lació sigui molt senzilla (introduint una simple línia de comando).

Per què usar contenidors

Els contenidors s’han fet molt populars en l’actualitat gràcies als múltiples beneficis que aporten. Podem destacar entre els principals avantatges dels contenidors:

  • Lleugeresa. Els contenidors no virtualitzen el sistema operatiu complet, executant-se directament en el kernel del sistema operatiu, la qual cosa fa que siguin molt més lleugers i ràpids a l’hora d’arrencar. Els contenidors són ideals per a transferir i migrar càrregues de treball pel qual són ideals el desenvolupament i implementació d’aplicacions.
  • Uniformitat. Els contenidors aporten als desenvolupadors un entorn complet i uniforme que conté totes les dependències de software que l’aplicació requereix (biblioteques, versions de llenguatges de programació i similars).
  • Portabilitat. L’ús de contenidors brinda una portabilitat i autosuficiència que permeten executar l’aplicació en qualsevol entorn com a diferents sistemes operatius (Windows, Linux i macOS), equips físics, màquines virtuals, o en el núvol.
  • Aïllament. Cada contenidor aïlla l’aplicació del sistema operatiu i d’altres aplicacions. Aquest aïllament permet que els desenvolupadors puguin treballar i testar aplicacions sense que interfereixin amb unes altres.
  • Ocupen poc espai. Al contrari de les màquines virtuals que poden ocupar molts gigues d’espai, els contenidors ocupen poc espai en el disc.

Què són els contenidors Docker

Docker és un projecte de codi obert que automatitza el desplegament d’aplicacions dins de contenidors de software, proporcionant una capa addicional d’abstracció i automatització de virtualització d’aplicacions en múltiples sistemes operatius.

Amb Docker és possible encapsular tot l’entorn de treball permetent treballar en els diferents entorns de desenvolupament (local, producció, test, etc.) amb la mateixa configuració.

Docker és un programa de codi obert per a crear contenidors que compta amb una gran comunitat d’usuaris que, per exemple, comparteixen contenidors a través de Docker hub. La seva tecnologia permet utilitzar el kernel de Linux i les seves funcions per a separar els processos (com Cgroups i Namespaces) i permetre que puguin executar-se de manera independent. D’aquesta manera Docker es converteix en una excel·lent eina per a la gestió de contenidors individuals.

Quan el nombre de contenidors amb el qual es treballa comença a ser elevat, la seva gestió comença a complicar-se, sent necessari recórrer a una plataforma de gestió de contenidors, com poden ser Docker Swarm o Kubernetes.

contenedor docker - Contenidors vs. Instàncies cloud

 

Imatge de Google Cloud

Què són les màquines virtuals (VM)

A mesura que la capacitat del maquinari ha anat augmentant (processament, memòria i emmagatzematge), els servidors quedaven sobredimensionats, ja que les aplicacions continuaven utilitzant els mateixos recursos que abans. Amb l’objectiu d’optimitzar tota aquesta nova capacitat es van crear les màquines virtuals (VM – Virtual Machine).

Les màquines virtuals emulen un sistema operatiu i tenen assignada part del maquinari físic de la màquina. Així era possible executar diferents màquines virtuals sota un mateix maquinari, assignant a cadascuna uns recursos propis. Amb l’ús de màquines virtuals és possible utilitzar un sistema operatiu dins d’un altre sistema operatiu.

Quins són els avantatges de les màquines virtuals

L’ús d’una màquina virtual aporta una sèrie de beneficis entre els quals podem destacar:

  • La màquina virtual ofereix una arquitectura de conjunt d’instruccions diferent de la de l’ordinador on s’executa.
  • El manteniment i els controls de seguretat d’una màquina virtual són més senzills i controlables.
  • Permet instal·lar múltiples sistemes operatius en una mateixa màquina, sent independents entre si. Per exemple, és possible disposar en el mateix equip d’una màquina amb Linux, una altra amb Windows i una tercera amb macOS, totes elles independents.
  • Es poden restaurar o reiniciar fàcilment i en molt poc temps.
  • El seu ús permet reduir costos en infraestructura, aprovisionament més ràpid del servidor i recuperació de desastres.
  • Són escalables, podent augmentar els seus recursos de manera senzilla.

Quan es parla de virtualització, l’habitual és pensar en màquines virtuals, encara que només es tracta d’una mena de virtualització on s’utilitza un sistema operatiu amb uns recursos virtuals. Els contenidors són un altre tipus de virtualització on l’aplicació és empaquetada amb les dependències necessàries per al seu funcionament, permetent que s’executi en diferents ambients de manera òptima.

Els contenidors són una alternativa per a la virtualització de hardware que aporta una gran quantitat de beneficis. No obstant això, l’ús de contenidors significa tenir un nivell més baix de seguretat que la virtualització convencional del maquinari (màquines virtuals), pel fet que una vulnerabilitat del sistema afectarà a tots els contenidors. A més, existeixen escenaris on la paquetizació dels contenidors no és una solució apropiada. Per això, encara que l’ús de contenidors està molt estès, no poden, de moment, substituir per complet a les màquines virtuals.