¿Te ha gustado el artículo?
0
¿Te ha gustado el artículo?
0

CaaS: los mejores proveedores de Container as a Service

Si estás interesado en la virtualización con contenedores a nivel del sistema operativo, pero no estás en disposición de afrontar los costes y el trabajo que supone la instalación de los componentes necesarios de hardware y de software, un servicio de contenedores a demanda podría ser una buena opción. El modelo Container as a Service (CaaS), la más reciente innovación en el mercado de la computación en la nube, facilita plataformas de contenedores como solución completa alojada en la nube. Con el Google Container Engine (GKE), el Amazon EC2 Container Service (ECS) y el Microsoft Azure Container Service (ACS) presentamos tres de las plataformas de CaaS más populares en la actualidad y explicamos cómo utilizar servicios de contenedores en la nube en un contexto corporativo.

¿Qué es CaaS?

Acrónimo de Container as a Service (contenedor como servicio), CaaS es un modelo de negocio por el cual los proveedores de computación en la nube ofrecen prestaciones en torno a la virtualización basada en contenedores como servicio online escalable, lo que permite utilizar contenedores sin tener que instalar la infraestructura necesaria para ello. El término es propio del marketing y toma como referencia otros modelos de servicios en la nube ya consolidados como Infrastructure as a Service (IaaS, Infraestructura como servicio), Platform as a Service (PaaS, Plataforma como servicio) y Software as a Service (SaaS, Software como servicio), que explicamos más adelante.

¿Qué se conoce por servicios de contenedores?

Cuando un proveedor de cloud computing ofrece un servicio con el que los usuarios pueden desarrollar, probar y ejecutar software en los llamados contenedores de aplicaciones o distribuirlos más allá de la infraestructura de TI, se habla de servicios de contenedores.

Los contenedores de aplicaciones tienen su origen en el entorno Linux y permiten la virtualización a nivel del sistema operativo. Esto significa que las aplicaciones, junto con todas sus dependencias (bibliotecas y archivos de configuración), se ejecutan como instancias encapsuladas aisladas las unas de las otras. Este método permite gestionar de forma paralela varias aplicaciones que cuentan con distintos requerimientos en un único sistema operativo, así como desplegarlas en sistemas diferentes.

Por lo general, un CaaS comprende un entorno completo de contenedores que incluye herramientas de orquestación, un catálogo de imágenes (el denominado Registry), un software de gestión de clústeres así como un juego de herramientas para desarrolladores y diversas API (Application Programming Interfaces o interfaces de programación de aplicaciones). La suscripción sigue un modelo de alquiler en función del uso.

Diferencias con otros servicios en la nube

Desde mediados de los años 2000, tanto empresas como particulares cuentan con la computación en la nube como alternativa a la asignación de recursos de TI en suelo propio, es decir, on premises. En este sentido se diferencian tres modelos de uso: IaaS, PaaS y SaaS.

  • IaaS (Infrastructure as a Service): comprende la provisión de recursos virtuales de hardware como potencia de cálculo, espacio en disco y capacidad de red, componentes fundamentales de toda infraestructura de TI, en forma de máquinas virtuales (VM) o redes virtuales de área local (VLAN). Los usuarios acceden a los recursos en la nube desde Internet por medio de API. La IaaS representa la base del modelo de computación en la nube.
  • PaaS (Platform as a Service): situado en un nivel intermedio del modelo tecnológico en la nube, un servicio de PaaS facilita plataformas de programación y entornos de desarrollo online. Una plataforma como servicio cubre generalmente el ciclo de vida completo de un programa (lifecycle management) desde su desarrollo a la entrega y la ejecución, pasando por las pruebas. Una PaaS se erige sobre una IaaS.
  • SaaS (Software as a Service): el nivel superior del modelo en la nube es un mero nivel práctico, porque el llamado software como servicio permite utilizar software de aplicaciones desde Internet. Los programas que se ofrecen por medio de este modelo de negocio no se ejecutan en el hardware del consumidor, sino en el servidor del proveedor. SaaS se construye así sobre una IaaS y una PaaS y se accede a él por el navegador o un software agente.

El objetivo de este concepto orientado a servicios es permitir a los usuarios concentrarse en la actividad central de su negocio: un desarrollador que utiliza una plataforma como servicio (PaaS) para probar aplicaciones solo carga en la nube el código que ha programado, mientras que el proveedor se encarga de suministrar todos los requisitos técnicos para el proceso de creación así como para la gestión y el despliegue (deploy) de la aplicación.

En este clásico esquema, CaaS podría situarse a medio camino entre una infraestructura como servicio (IaaS) y una plataforma como servicio (PaaS), diferenciándose de estos dos modelos por un concepto de virtualización fundamentalmente diferente como es la tecnología de contenedores.

CaaS también permite gestionar completamente el ciclo de vida de las aplicaciones de software, pero a diferencia de en IaaS y PaaS, para proveer los recursos no se recurre a la virtualización de máquinas virtuales independientes basada en hipervisores, cada una con un sistema operativo propio. En lugar de ello, CaaS utiliza funciones nativas del núcleo de Linux con las cuales es posible aislar cada uno de los procesos que tienen lugar dentro de un mismo sistema operativo. La tecnología de contenedores crea para ello un nivel de abstracción que encapsula las aplicaciones, junto con su sistema de archivos, y las aísla del sistema subyacente, permitiendo así su funcionamiento en cualquier plataforma que soporte esta tecnología. ¿Qué supone esto para el usuario?

Cuando un desarrollador utiliza un entorno de desarrollo en la nube según el modelo de PaaS, tiene que limitarse a las tecnologías que facilita el proveedor, como los lenguajes de programación o los frameworks. Container as a Service, por el contrario, ofrece a los usuarios una plataforma libre de programación en la cual las aplicaciones, encapsuladas en contenedores, pueden escalarse a cualquier infraestructura de TI sean cuales sean los requisitos tecnológicos del usuario.

En resumen

Container as a Service es una forma de virtualización basada en contenedores en la cual un proveedor de servicios de cloud computing suministra el entorno de tiempo de ejecución, las herramientas de orquestación y los recursos infraestructurales fundamentales.

¿Cómo funciona CaaS?

Container as a Service tiene como base un clúster de ordenadores accesible en la nube que los usuarios pueden alquilar parcialmente para subir, crear, gestionar y ejecutar aplicaciones en la nube. Para interactuar con el entorno de contenedores basado en la nube, el usuario puede utilizar una interfaz gráfica de usuario (GUI) o llamadas a API. El tipo de tecnología de contenedores disponible para el usuario varía en función del proveedor, aunque el núcleo de toda plataforma CaaS lo constituye una herramienta de orquestación (también llamado Orchestrator) que permite la gestión de arquitecturas de contenedores más complejas, como son las aplicaciones multicontenedor.

Las aplicaciones-contenedor que se utilizan en entornos productivos suelen estar compuestas por un conjunto de contenedores distribuidos por diversos sistemas físicos y virtuales. Se habla en este caso de aplicaciones multicontenedor (multi-container application) y, dada su complejidad, la administración manual se sustituye por herramientas de orquestación que coordinan los contenedores que se están ejecutando y permiten su funcionamiento automático. Aquí tienen relevancia las siguientes funciones:

  • Distribución de contenedores por varios hosts
  • Agrupación de los contenedores en unidades lógicas
  • Escalado de contenedores
  • Balanceo de carga
  • Asignación de capacidad de memoria
  • Puntos de contacto entre contenedores
  • Service Discovery (descubrimiento de servicios)

El orquestador es el que determina las funciones con las que cuenta el usuario. En la actualidad tres son las herramientas de orquestación que dominan el mercado de la virtualización con contenedores: Docker Swarm, Kubernetes y Mesosphere DC/OS.

  • Docker Swarm: Swarm es un programa open source de gestión de clústeres y orquestación comercializado por Docker como herramienta nativa para administrar clústeres Docker y gestionar contenedores. Este orquestador constituye el fundamento para el Docker Datacenter (DDC), producto de CaaS on premises de Docker, y permite a las empresas poseedoras de la versión Enterprise de Docker (EE) implantar un entorno CaaS autogestionado en su propio centro de datos o en nubes privadas (Docker Datacenter on AWS/Azure). Swarm es conocido por ser fácil de instalar y usar, y está integrado estrechamente con el entorno de tiempo de ejecución de contenedores del líder del mercado que es hoy Docker. Esta herramienta de orquestación utiliza la API estándar de Docker, de forma que es compatible con otras herramientas de la casa que se comunican a través de la API de Docker. Para gestionar los clústeres y los contenedores se utilizan comandos clásicos de Docker.
  • Kubernetes: en el caso de Kubernetes se trata de una herramienta de código abierto para la provisión, el escalado y la gestión de aplicaciones-contenedor en infraestructuras de TI distribuidas de forma automática. Originariamente desarrollada por Google, Kubernetes hoy cuenta con el patrocinio de la Cloud Native Computing Foundation (CNCF) y, al contrario que Swarm, no soporta únicamente contenedores Docker. Gracias a una Container Runtime Interface (CRI), el programa facilita interfaces a diversos entornos de tiempo de ejecución de contenedores basados en hipervisores y conformes con la OCI (Open Container Initiative) de la fundación Linux, así como al principal rival de Docker, rkt de CoreOS. Con todo, instalar y configurar Kubernetes es mucho más complejo que en el caso de Docker Swarm.
  • DC/OS: DC/OS (Data Center Operating System) es una evolución del gestor de clústeres open source Apache Mesos, creado por la startup de Silicon Valley Mesosphere como sistema operativo con licencia abierta para centros de datos. DC/OS se diferencia especialmente de Docker Swarm y de Kubernetes porque su gestor de clústeres no se limita a administrar aplicaciones-contenedor, sino que permite ejecutar paralelamente diferentes trabajos (workloads) como contenedores, microservicios y sistemas de big data.

En nuestro artículo sobre las herramientas de Docker más populares tienes acceso a una detallada descripción de estas tres populares herramientas de orquestación.

¿Qué proveedores ofrecen CaaS?

La tecnología de contenedores se encuentra en plena expansión, así como también la oferta de servicios de CaaS, hasta el punto de que hoy se encuentran servicios de virtualización a nivel del sistema operativo en los porfolios de casi todos los proveedores de servicios en la nube. También Amazon, Microsoft y Google, bien situados entre los principales actores del mercado de CaaS, han ampliado en los últimos años sus plataformas cloud con una solución para contenedores basada en Docker. A continuación comparamos sus productos:

  • Google Container Engine (GKE)
  • Amazon EC2 Container Service (ECS)
  • Azure Container Service (ACS)
Nota

Docker es la plataforma de contenedores más conocida en la actualidad. Su formato de contenedor, una evolución del contenedor de Linux (LXC), está ampliamente extendido y cuenta con el soporte de todos los proveedores de CaaS.

Estas preguntas pueden ayudar a perfilar la elección de un servicio de CaaS empresarial:

  • ¿Qué herramientas de orquestación ofrece?
  • ¿Qué formatos de archivos soporta para aplicaciones-contenedor?
  • ¿Permite gestionar aplicaciones multicontenedor?
  • ¿Cómo gestiona los clústeres para el funcionamiento de los contenedores?
  • ¿Qué funciones de red y de almacenamiento soporta?
  • ¿Ofrece el proveedor un registro privado para imágenes de contenedor?
  • ¿Cómo está integrado el entorno de tiempo de ejecución de contenedores con otros servicios en la nube del proveedor?
  • ¿Qué modelos de facturación ofrece?

Amazon EC2 Container Service (ECS)

Desde abril de 2015, el gigante digital Amazon también ofrece soluciones de virtualización basadas en contenedores bajo el nombre de Amazon EC2 Container Service (ECS) en su plataforma en la nube AWS (Amazon Web Service).

El ECS de Amazon incluye diversas interfaces que permiten gestionar en la Amazon Elastic Compute Cloud (EC2) las aplicaciones aisladas en contenedores Docker. Este servicio de CaaS se fundamenta técnicamente en los siguientes recursos de la nube:

  • Instancias de Amazon EC2: Amazon EC2 consiste en capacidad computacional escalable del servicio de cloud computing de Amazon que puede alquilarse en forma de las llamadas “instancias”.

  • Amazon S3 (Amazon Simple Storage): se trata de una plataforma de almacenamiento de objetos basada en la nube.

  • Amazon EBS (Amazon Elastic Block Store): Amazon EBS facilita volumen de almacenamiento de bloques altamente disponible para instancias EC2.

  • Amazon RDS (Amazon Relational Database Service): Amazon RDS es un servicio de base de datos que se utiliza para gestionar los motores relacionales Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle y Microsoft SQL Server.

ECS solo soporta el formato Docker para los contenedores.

En la configuración estándar de ECS, los contenedores se administran por medio de un orquestador propietario que actúa como master y se comunica con los agentes en cada uno de los nodos del clúster que se gestiona. Como alternativa ofrecen el módulo de código abierto Blox, que permite integrar en ECS schedulers de creación propia así como herramientas de terceros como Mesos.

Una ventaja del servicio de Container as a Service EC2 de Amazon es su integración con otros servicios de la casa como:

  • AWS Identity and Access Management (IAM): el gestor de acceso e identidad permite definir roles y grupos para controlar el acceso de los usuarios a los recursos de la nube de Amazon (AWS).
  • Elastic Load Balancing: el balanceador de carga elástico reparte automáticamente el tráfico de aplicaciones entrantes a través de varias instancias EC2.
  • AWS CloudTrail: en este caso se trata de un servicio de auditoría operativa que registra todas las actividades de los usuarios y las llamadas a la API dentro de un clúster. Esto permite hacer un seguimiento de los procesos y evaluarlos en el marco de la gestión de los recursos y los análisis de seguridad.
  • Amazon CloudWatch: el CloudWatch de Amazon es un servicio de monitorización de los recursos de la nube y las aplicaciones que se ejecutan en ella que también está disponible para los usuarios de AWS que operan contenedores de aplicaciones.
  • AWS CloudFormation: este servicio Amazon permite a los usuarios de AWS definir plantillas para crear recursos de AWS. Los servicios de contenedores se pueden describir en plantillas JSON reutilizables que incluyen el diseño de la aplicación, las instancias y la capacidad de memoria necesarias para su ejecución, así como sus interacciones con otros servicios de AWS.

Para la gestión centralizada de las imágenes de contenedor, Amazon provee repositorios Docker privados en el EC2 Container Registry (ECR), cuyo acceso puede regularse por AWS IAM en el nivel de los recursos.

Una desventaja del servicio de contenedores de Amazon es que se limita a instancias EC2 y no ofrece soporte para infraestructuras de TI ajenas a AWS, ni física ni virtualmente. De esta forma, los escenarios de nube híbrida, en los cuales las aplicaciones multicontenedor se operan parcialmente on premises, son tan poco posibles como combinar los recursos de TI de diferentes proveedores de nube pública (multicloud). Esto guarda relación con el modelo de negocio con el cual Amazon ofrece su servicio de CaaS, y es que EC2 está disponible en la AWS de forma gratuita; los usuarios solo pagan por el suministro de la infraestructura de computación en la nube, por ejemplo, para un clúster de instancias EC2 que ha de fundamentar la gestión de aplicaciones-contenedor.

aracterísticas principales del Amazon EC2 Container Service

Disponibilidad general (GA)

Abril de 2015

Orquestación

Herramienta de orquestación propietaria

Con Blox se pueden integrar schedulers de creación propia y herramientas de terceros (Mesos)

Administración de la plataforma de contenedores

GUI y CLI

Formato del contenedor

Docker

Hasta ahora solo es compatible con los Windows Container en estado beta (no se recomienda su uso en sistemas productivos)

Funciones de red

No soporta redes superpuestas (overlay networking) con Libnetwork (Docker)

Integración con sistemas de almacenamiento externos

Soporta Docker Volume (solo con algunos controladores)

Registry

Docker Registry y Amazon EC2 Container Registry

Integración con otros servicios en la nube (selección)

AWS IAM

Elastic Load Balancing

AWS CloudTrail

Amazon CloudWatch

AWS CloudFormation

Costes

ECS es un servicio gratuito. Los usuarios pagan únicamente por los recursos que utilizan de la plataforma AWS.

El siguiente vídeo muestra un breve tutorial sobre el Amazon EC2 Container Service (en inglés):

Ventajas Inconvenientes
✔ Integración completa con otros productos AWS ✘ El despliegue de contenedores se limita a instancias EC2 de Amazon
  ✘ Orquestador propietario no compatible con otras herramientas open source tan habituales como Kubernetes

Google Container Engine (GKE)

Con la Google Container Engine (GKE) Google también ha integrado en la nuble pública un servicio de contenedores alojado cuyo componente central lo constituye la herramienta de orquestación Kubernetes.

La GKE utiliza los recursos de la Google Compute Engine (GCE) y permite a los usuarios administrar aplicaciones basadas en contenedores en clústeres de la Google Cloud Platform (GCP). No obstante, la infraestructura de la nube de Google no limita a los usuarios a la GKE, sino que el Cluster Federation System de Kubernetes posibilita la agrupación de los recursos de diferentes clústeres de ordenadores en una federación lógica e implantar escenarios de nube híbrida o multicloud si fuera necesario.

Cada clúster creado con la GKE está compuesto por un nodo-maestro (master) en el que se ejecuta el servidor API de Kubernetes y un número indefinido de nodos-trabajadores (worker) que sirven las consultas REST del servidor API y ejecutan los servicios necesarios para soportar los contenedores Docker.

Mientras que los nodos-maestro supervisan la distribución de los recursos y el estado de los clústeres, en los nodos-trabajador se ejecutan las aplicaciones aisladas en contenedores. Si uno deja de funcionar, el nodo-maestro distribuye las tareas que requiere el funcionamiento de la aplicación entre el resto de nodos.

El Container as a Service de Google también soporta el extendido formato Docker y para la realización de imágenes Docker los usuarios disponen de un registro privado. Una sintaxis basada en JSON ofrece la opción de definir los servicios de contenedores como plantillas.

La integración de Kubernetes en GKE provee las siguientes funciones para la orquestación de aplicaciones-contenedor:

  • Automatic binpacking: basándose en reglas y requisitos, Kubernetes coloca los contenedores de modo que se aproveche la capacidad del clúster al máximo. Esto evita que la disponibilidad de las aplicaciones-contenedor se vea obstaculizada.
  • Chequeos de salud con función auto-repair: con los health checks automáticos, Kubernetes asegura que todas las cuentas y todos los contenedores funcionan bien. Los nodos o los contenedores que no responden se finalizan y sustituyen por otros.
  • Escalado horizontal: con Kubernetes se pueden escalar aplicaciones hacia arriba o hacia abajo, bien de forma manual o por líneas de comando, en la interfaz gráfica de usuario o automáticamente a partir del uso de CPU.
  • Service discovery y balanceo de carga: Kubernetes ofrece dos modos para el descubrimiento de servicios: por variables de entorno y por registros DNS. El balanceo de carga entre contenedores tiene lugar por medio de direcciones IP y nombres DNS.
  • Orquestación de la memoria: Kubernetes también permite el montaje automático de diversos sistemas de almacenaje, ya se trate de memoria local, en la nube pública (vía GCP o AWS) o de sistemas de almacenamiento en red como NFS, iSCSI, Gluster, Ceph o Flocker.

De forma similar a ECS en la nube AWS de Amazon, GKE está integrado en la nube de Google de forma que los usuarios pueden acceder a varias funciones de la nube pública, que se añaden así a las del orquestador:

  • Gestión de la identidad y el acceso: la IAM (Identity and Access Management) de la GKE se basa en las cuentas de Google y soporta un sistema de permisos basado en roles de usuario.
  • Stackdriver Monitoring: la herramienta de monitorización de Google informa a los usuarios sobre el rendimiento, el tiempo operativo y el estado de las aplicaciones en la nube. Para ello, Stackdriver recoge métricas de monitorización, eventos y metadatos y los elabora como paneles. La herramienta soporta como fuentes de datos la Google Cloud Platform, los Amazon Web Services y aplicaciones como Cassandra, Nginx, Apache HTTP Server y Elasticsearch.
  • Stackdriver Logging: la herramienta Logging de Google permite almacenar, monitorizar y analizar datos log y eventos y es compatible con los servicios en la nube de Google (Google Cloud Platform) y Amazon (Amazon Web Services).
  • Container Builder: con el constructor de contenedores, Google provee un programa para crear imágenes Docker directamente en la nube. Para ello solo se debe cargar el código fuente de la aplicación en el Google Cloud Storage.

La política de precios de Google para su servicio de CaaS es diferente a la de Amazon: mientras que la gestión de contenedores en clústeres de hasta cinco nodos es gratuita y solo se generan costes por el suministro de recursos en la nube como CPU, memoria, etc., cuando se operan contenedores en clústeres de mayor envergadura (6 o más instancias), Google factura una tasa por clúster y por hora.

Características principales de Google Container Engine

Disponibilidad general (GA)

Agosto de 2015

Orquestación

Kubernetes

 

Gestión de la plataforma de contenedores

Gestión de clústeres con Google Cloud

Gestión de contenedores con Kubernetes UI

Formato del contenedor

Docker

Funciones de red

Conexión basada en Kubernetes

Integración con sistemas de almacenaje externo

Kubernetes Persistent Volume

Registry

Docker Registry y Google Container Registry

Integración con otros servicios en la nube del proveedor (selección)

Cloud IAM

Stackdriver Monitoring

Stackdriver Logging

Container Builder

Costes

Uso de contenedores en clústeres estándar con hasta cinco nodos: gratuito

Uso de contenedores en clústeres estándar con seis o más nodos: facturación fija por clúster y hora.

En el siguiente vídeo, el director de productos de Google, Dan Paik, explica el despliegue de contenedores con GKE y Kubernetes:

Ventajas Inconvenientes  
✔ Integración completa con otros productos de Google ✘ En clústeres a partir de 6 nodos Google factura una tasa de uso de la plataforma que se añade a los gastos por las instancias de cálculo  
✔ Despliegue de contenedores en nubes híbridas y multicloud    

Microsoft Azure Container Service (ACS)

ACS es un entorno de alojamiento optimizado para la plataforma Azure de computación en la nube de Microsoft que permite a sus usuarios desarrollar aplicaciones basadas en contenedores e implantarlas en clústeres de ordenadores escalables. El servicio de CaaS de Microsoft se apoya para ello en una versión optimizada para Azure de herramientas de contenedor de código abierto y permite gestionar contenedores Linux en formato Docker. Por el momento, este servicio solo soporta los contenedores de Windows en una versión de vista previa.

El componente central del servicio CaaS de Microsoft es Azure Container Engine, cuyo código fuente está disponible en GitHub con licencia open source. Azure Container Engine funciona como generador de plantillas para el Azure Resource Manager (ARM), las cuales pueden gestionarse vía API con una de estas herramientas de orquestación: Docker Swarm, DC/OS o Kubernetes (desde febrero de 2017).

Las funciones que pueden utilizar los usuarios del ACS a la hora de operar aplicaciones-contenedor en la nube de Microsoft dependen sobre todo del orquestador que se utilice.

En el seno de ACS, el gestor de clústeres DC/OS de Mesosphere se utiliza en combinación con la plataforma de orquestación Marathon y ofrece el siguiente abanico de funciones:

  • Interfaz web de usuario: los clústeres de contenedores se pueden gestionar en la interfaz web de Marathon.
  • Alta disponibilidad: Marathon se ejecuta como clúster activo/pasivo. Por cada nodo activo existe un nodo pasivo redundante que se hace cargo de sus tareas en caso de fallo.
  • Service discovery y balanceo de carga: DC/OS ofrece con Marathon-LB un balanceador de carga basado en HAProxy y con Mesos DNS una herramienta de descubrimiento de servicio basada en DNS.
  • Chequeos de salud: Marathon consulta el estado de las aplicaciones con HTTP o TCP. Las funciones de monitorización están disponibles en una API REST, por líneas de comando o en la interfaz web.
  • Métricas: Marathon entrega métricas detalladas vía API en formato JSON que pueden enviarse a programas de monitorización como Graphite, statsD o Datadog.
  • Servicio de notificación: los usuarios que utilizan DC/OS con Marathon en la nube Azure tienen la opción de reservar un punto de destino HTTP para notificaciones relacionadas con eventos.
  • Grupos de aplicaciones: los contenedores pueden agruparse en los denominados “Pods” y gestionarse como unidades cerradas.
  • Despliegue basado en reglas: diversas regulaciones permiten definir exactamente dónde y cómo se reparten las aplicaciones en el clúster.

En la versión Docker Swarm, ACS se apoya en la pila Docker y utiliza las mismas tecnologías open source que en Dockers Universal Control Plane, un componente fundamental del centro de datos Docker. Implementado en el servicio CaaS de Azure, Docker Swarm ofrece el siguiente espectro de funciones para orquestar y escalar aplicaciones-contenedor:

  • Docker Compose: la solución de Docker para aplicaciones multicontenedor permite conectar varios contenedores entre sí y ejecutarlos con un solo comando. Se pueden definir tantos contenedores como sea necesario, incluyendo todas las dependencias, en un archivo de control basado en YAML.
  • Control por líneas de comando: la interfaz de líneas de comando de Docker, Docker CLI, y el programa para aplicaciones multicontenedor, Docker Compose, permiten gestionar los clústeres de contenedores con líneas de comando.
  • API REST: la API remota de Docker permite acceder a diversos programas externos del ecosistema de Docker.
  • Despliegue basado en reglas: la distribución de los contenedores en el clúster puede administrarse por medio de etiquetas y reglas.
  • Service discovery: Docker Swarm ofrece diversas funciones de descubrimiento de servicios.

Desde febrero de 2017, los usuarios de ACS pueden recurrir a Kubernetes para automatizar la administración, el despliegue y el escalado de aplicaciones-contenedor en clústeres Azure. Kubernetes ofrece también aquí todas las funciones básicas enumeradas en el apartado sobre el servicio de Google.

ACS también está integrado directamente en la nube de Microsoft con otros servicios del proveedor:

  • Azure Portal y Azure CLI 2.0: los usuarios configuran clústeres de contenedores en el portal de Azure, la interfaz central de usuario de la plataforma en la nube, o en la interfaz de líneas de comando Azure CLI 2.0.
  • Azure Container Registry: con el registro de Azure, los usuarios de Microsoft también cuentan con un repositorio privado para la realización de imágenes Docker.
  • Operations Management Suite (OMS): la Microsoft Operations Management Suite (OMS) ofrece funciones de monitorización y análisis de logs para servicios de contenedores.
  • Azure Stack: esta extensión es necesaria para operar contenedores en entornos híbridos.

Microsoft ha ampliado el ACS con funciones CI/CD (integración y despliegue continuos) para aplicaciones multicontenedor desarrolladas con Visual Studio, Visual Studio Team Services o la herramienta open source Visual Studio Code.

La gestión de identidad y acceso (IAM) está regulada por el Active Directory, cuyas funciones fundamentales están disponibles gratuitamente hasta un límite de 500.000 objetos directorio. Como en Amazon ECS, en el servicio de Microsoft el uso de las herramientas también es gratuito y solo se paga por utilizar la infraestructura subyacente.

Características principales del Microsoft Azure Container Service

Disponibilidad general (GA)

Abril de 2016

Orquestación

Herramientas open source:

- Mesosphere DC/OS

- Docker Swarm

- Kubernetes (desde febrero de 2017)

Gestión de la plataforma de contenedores

Gestión de clústeres con Azure Portal o Azure CLI 2.0

Administración de contenedores en la interfaz nativa del orquestador seleccionado:

- Marathon UI

- Docker CLI

- Kubernetes UI

Formato de contenedor

Docker

Hasta ahora solo es compatible con los Windows Container en estado beta (no se recomienda su uso en sistemas productivos)

Funciones de red

Redes superpuestas con  Libnetwork (Docker) y Container Network Model (CNM)

Integración con sistemas de almacenaje externo

Docker Volume Driver vía Azure File Storage

Registry

Docker Registry y Azure Container Registry

Integración con otros servicios en la nube del proveedor (selección)

Azure Portal

Azure Resource Manager (ARM)

Azure Active Directory

Azure Stack

Microsoft Operations Management Suite (OMS)

Costes

ACS puede utilizarse de forma gratuita y solo se paga si se usan recursos de la plataforma Azure.

El siguiente vídeo muestra cómo funcionan los contenedores Docker en la plataforma Azure:

Ventajas Inconvenientes  
✔ACS está completamente integrado en la nube Azure. ✘ No es tan veterano en el mercado como su competencia.  
✔ ACS es compatible con las herramientas de orquestación más habituales como Docker Swarm, Kubernetes y DC/OS (Marathon).    
✔ Azure Stack permite operar contenedores en entornos de nube híbridos.    

Container as a Service: comparativa

A continuación aparece una comparación de los tres servicios de CaaS en relación con los criterios de selección más habituales entre los usuarios:

Criterio de selección

Amazon EC2 Container Service (ECS)

Google Container Engine (GKE)

Microsoft Azure Container Service (ACS)

Disponibilidad general (GA)

Abril de 2015

Agosto de 2015

Abril de 2016

Fundamento técnico (potencia de cálculo)

Instancias EC2

Nodos y clústeres de Google Compute Engine (GCE)

Máquinas virtuales y conjuntos de escalado de máquinas virtuales

Memoria de objetos

Amazon S3 (Simple Storage Service)

Google Cloud Storage

Blob Storage

Herramienta estándar de orquestación

Propietaria

 

Kubernetes

Programas de código abierto:

- Mesosphere DC/OS

- Docker Swarm

- Kubernetes

Administración de la plataforma de contenedores

GUI y CLI

Gestión de clústeres con Google Cloud

Gestión de contenedores en el panel de control de Kubernetes

Gestión de clústeres con Azure

Gestión de contenedores con Docker Tools

Formato de contenedores para sistemas productivos

Docker Container

Docker Container

Docker Container

Funciones de red

No soporta redes superpuestas con libnetwork

Conexión en red basada en Kubernetes

Redes superpuestas con libnetwork y Container Network Model (CNM)

Integración con sistemas de almacenamiento externo

Compatible con Docker Volume (solo con algunos drivers)

Kubernetes Persistent Volume

Docker Volume Driver via Azure File Storage

Registry

Docker Registry

Amazon EC2 Container Registry

Docker Registry

Google Container Registry

Docker Registry

Azure Container Registry

Gestión de identidad y acceso (IAM)

Compatible con la nube híbrida

No

Logging y Monitoring

Escalado automático

Integración con otros servicios en la nube

Elastic Load Balancing

Elastic Block Store

Virtual Private Cloud

AWS IAM

AWS CloudTrail

AWS CloudFormation

Cloud IAM

Stackdriver Monitoring

Stackdriver Logging

Container Builder

Azure-Portal

Azure Resource Manager (ARM)

Azure Active Directory

Azure Stack

Microsoft Operations Management Suite (OMS)

Costes

ECS es un servicio gratuito. Los usuarios solo pagan por los recursos que toman de la nube AWS.

Operar contenedores en clústeres estándar con hasta cinco nodos es gratuito, pero a partir de seis requiere una tasa fija por clúster y hora.

Usar ACS es gratuito. Solo se paga por los recursos de la plataforma Azure que se utilizan.

CaaS o soluciones in situ: ¿qué es lo mejor?

Una alternativa a CaaS puede ser instalar las herramientas que se necesitan en la misma infraestructura de la empresa (on premises). Ambas opciones tienen pros y contras.

Las reservas frente a los servicios de computación en la nube suelen tener origen en las dudas sobre la seguridad y, de hecho, aquellas compañías que gestionan un entorno de contenedores en sus propios centros de datos son las que mejor lo controlan. Esto implica tanto disponer de la máxima flexibilidad a la hora de seleccionar los componentes de hardware y de software (servidor, sistema operativo, entorno de tiempo de ejecución y herramientas de gestión) como tener la certeza de que todos los datos se procesan y almacenan en suelo propio.

Con todo, esta mayor libertad de decisión genera un significativo aumento de costes y trabajo en cuanto al suministro y mantenimiento del entorno de contenedores. Llevar a cabo complejas instalaciones en el propio centro de datos suele ir ligado a un elevado coste de inversión y al principio no siempre es seguro que se vaya a rentabilizar. Por el contrario, un entorno de contenedores en la nube facilita aplicaciones y funciones de software nuevas mucho más rápido y con menos gasto. Cuando se usa CaaS, los usuarios solo pagan por la potencia y los recursos que se utilizan de verdad sin tener que pagar por adelantado. Esta solución resuelve especialmente las necesidades de la pequeña empresa, de startups, emprendedores y autónomos, al poder hacer realidad sus proyectos con un presupuesto más modesto.

Como en cualquier otro servicio en la nube, el punto fuerte de CaaS es la tercerización de la infraestructura de TI a proveedores especializados que garantizan la actualidad y el buen funcionamiento de la tecnología. Esto, unido al modelo de facturación por uso, determina la orientación de CaaS a empresas con un elevado ritmo de desarrollo e implantación de innovaciones. Las empresas que, por el contrario, se decantan por una solución on premises, renuncian voluntariamente a la flexibilidad y la escalabilidad que los proveedores de servicios en la nube garantizan a su clientela.

Asimismo, cabe descartar la falsa creencia de que los datos que permanecen en los propios centros de datos están más seguros que en la nube, puesto que las pequeñas y medianas empresas no pueden mantener generalmente una infraestructura de TI que esté a la altura de los centros de datos de proveedores de servicios en la nube consolidados en materia de disponibilidad, seguridad de datos y cumplimiento normativo.

Ventajas e inconvenientes del modelo CaaS

Ventajas Inconvenientes  
✔ Reducidos esfuerzos de instalación, configuración y funcionamiento ✘ Las tecnologías disponibles difieren en función del proveedor  
✔ El mantenimiento técnico es tarea del proveedor del alojamiento ✘ Guardar los datos del negocio en la nube lleva riesgos asociado  
✔ Facturación por uso    
✔ Potencia escalable    
✔ Absorbe los picos de carga repentinos    

Pros y contras de una plataforma de contenedores alojada in situ

Ventajas Inconvenientes  
✔ Control absoluto sobre el montaje técnico ✘ Elevados costes de inversión  
✔ Los datos no salen de la compañía ✘ Elevado esfuerzo de instalación, configuración y mantenimiento  
  ✘ Requiere un conocimiento profundo de la tecnología de contenedores, de hardware y de administración  

Glosario Nube Sistemas de Almacenamiento