Seguimos con la tercera entrega de la serie dedicada al Cloud Computing podéis encontrar la primera entrega aqui y la segunda aqui. Hoy hablamos de Dockers y Kubernetes y algo mas.

Hemos visto hasta ahora que con la virtualización, se permite que el hardware sea utilizado más eficientemente y ejecute más de un sistema operativo y sea accedido por más de un usuario y que podemos fácilmente gestionar clusters de maquinas virtuales duplicándolas y dándole un recursos IP diferentes para que trabajen, por ejemplo, con HDFS y Hadoop para poder gestionar grandes cantidades de datos.

El clustering ha contribuido en crear otras formulas de virtualización no de maquinas sino de aplicaciones y recursos.

Los servicios en la nube pueden productos de software alojados remotamente en el hardware de los proveedores de la nube.

Estos servicios implican la opción de la computación en nube haciendo uso de la virtualización.

Las opciones de la nube pueden ser privadas, públicas o híbridas. Ya hemos hablado de ello. De todas formas, la Nube utiliza una o más máquinas virtuales para ejecutar el software.

La entrega de los servicios de software se realiza a través de una red pública, privada o privada virtual.

Máquinas Virtuales Docker y Kubernetes

Como se dijo anteriormente, la virtualización y la nube permiten a la empresa administrar mejor el hardware, y administrarlo de manera que es exactamente como administrar el software.

Los administradores de nuevo pueden hacer plantillas de máquinas virtuales, es decir, hacer una copia de ella y a partir de esa plantilla hacer otras copias idénticas.

Se pueden hacer múltiples copias de imágenes virtuales con su propia dirección IP y su propio ID de host.

Por lo tanto, pueden ponerse en pie y funcionar de forma independiente y ser accedidas a través de la red de forma independiente.

Los sistemas operativos independientes necesitan una red, y la Nube provee adaptadores de red virtual para permitir que las imágenes virtuales se comuniquen como cualquier máquina de metal desnuda se comunicaría a través de la red.

Las máquinas virtuales proporcionan una estrategia de prueba más fuerte.

Ya hemos hablado de esto antes, donde podemos hacer copias de un entorno vivo, y las pruebas de aplicación por lo general las pruebas de seguridad de la prueba de aceptación se pueden ejecutar en una copia del entorno vivo lo que hace que los resultados de las pruebas sean mejores y de mayor calidad.

Las máquinas virtuales no son el único escenario de hospedaje. Hay otros escenarios de hospedaje como, Docker y Kubernetes. 

Dockers

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.

Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que “contenedores” independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.

No proporciona una máquina virtual completa, pero Docker sigue utilizando la virtualización. Docker es (PaaS) una plataforma como producto de servicio y proporciona entornos de sistema operativo llamados contenedores. 

Docker Containers
Docker Containers

Los contenedores Docker son 100% independientes entre sí, y están empaquetados. Cada contenedor está empaquetado con su propio software, bits, bibliotecas y otros elementos.

Los Docker Containers no pueden funcionar por sí solos. Todos los contenedores Docker funcionan con un único núcleo del sistema operativo llamado Docker engine. Los contenedores Docker dependen del núcleo del sistema operativo.

Los contenedores Docker son mucho más simples que una máquina virtual completa.

Los Docker containers proveen la totalidad de la predicción de cómo la aplicación será instalada, ejecutada y realizada. Todos estos contenedores se ejecutan en el host Docker que eventualmente es parte del sistema operativo del host.

El sistema operativo del host obviamente se ejecuta en el hardware que sería el host Docker.

Así que estos contenedores aquí son cada uno de estos tiene una aplicación o posiblemente la misma aplicación, pero cuando todos estos se reúnen proporcionan la previsibilidad sobre cómo se ejecutará la aplicación.

Ahora las aplicaciones pueden ser instaladas también en máquinas virtuales. Así que podemos ver aquí App1, App2, App3, todas se ejecutan en sus propias máquinas virtuales, y estas máquinas virtuales pueden derivar ligeramente.

Así que una vez que están funcionando pueden convertirse en ordenadores completamente independientes y a veces puede ser difícil mantenerlos sincronizados. Aquí está el hipervisor que está administrando estas tres máquinas virtuales en el servidor físico.

Esta es una manera de funcionar. Pero hay mucha complejidad aquí, casi se puede decir mucha ineficiencia porque estamos ejecutando una o tres aplicaciones en una infraestructura virtual muy compleja.

Aquí con los contenedores podemos ver que hay un sistema operativo un motor Docker, y podemos ver aquí que estas aplicaciones o la aplicación 1,2,3 están instaladas en estos contenedores.

Todos estos contenedores utilizan el motor Docker y son capaces de proporcionar ese entorno de alojamiento virtual que garantizará que estas aplicaciones se ejecuten de la misma manera cada vez.

Estas imágenes pueden conectarse a Internet también para Devapps y para Database y son registro Docker.

Una vez que se establece el patrón de despliegue Docker puede ser repetido y automatizado.

Así que Docker viene con estrategias de despliegue son patrones [inaudibles] estrategias de despliegue que pueden ser muy fácilmente automatizadas y documentadas

Kubermetes en principio fue Google…

Kubernetes (referido en inglés comúnmente como “K8s”) es un sistema de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation (parte de la Linux Foundation).

Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.

Kubernetes es también una plataforma como servicio (PaaS), contenedor y producto de orquestación. Kubernetes también ofrece una infraestructura como servicio.

Automatiza la implementación, escalado y mantenimiento de las aplicaciones. Como vimos un poco antes, escalar la aplicación Docker, podría implicar bastante trabajo o retrabajo en el entorno, mientras que Kubernetes ofrece esa escalada e infraestructura como un servicio como parte del producto.

Es compatible con los contenedores Docker y mucho más complejo que Docker.

Kubernetes se construye sobre capas o bloques, y estos se denominan primitivos.

Los bloques se construyen a medida que la aplicación se amplía. La arquitectura de Kubernetes se basa en una estructura llamada pod, y el pod alberga contenedores similares a Docker.

Los pods forman grupos de Kubernetes. Así que como dijimos que estos clusters podrían ser, bueno en este caso serían pods independientes funcionando realmente como un solo pod. Un pod es independiente y tiene su propia dirección IP.

Un servicio de Kubernetes es un conjunto de pods que trabajan juntos dentro del clúster de Kubernetes.

Así que podemos ver que el servicio de los gobernantes es un conjunto de pods que usan el enfoque de clúster.

Podemos ver aquí que tenemos un pod aquí ejecutando una aplicación o con los contenedores A y B, ejecutando varias aplicaciones con esta dirección de red.

Los pods dos y tres en este caso tienen los mismos contenedores C, D y E, y actúan esencialmente como uno solo aunque tengan una dirección de red separada.

Por lo tanto, en este escenario de alojamiento podemos ver realmente cómo podemos desplegarnos en estos diversos pods, pero también podemos escalar según sea necesario debido a la forma en que los gobernantes tienen esta infraestructura como un tipo de enfoque de servicio.

Edge Computing cuando la latencia lo es todo…

Edge Computing es una variación de la computación en la nube. Edge Computing es donde los servicios de computación, incluyendo el procesamiento y el almacenamiento se acercan físicamente al cliente.

Esto permite una respuesta más rápida de la red. Los orígenes de la Edgo Computing vienen de la entrega de contenido de grandes archivos de datos, incluyendo audio y video.

La entrega de este tipo de datos debe estar cerca de los usuarios ya que está sujeta a un alto grado de latencia.

La computación Edge es muy popular en los juegos y en el Internet de las Cosas ya que la capacidad de respuesta es muy, muy crítica.

Los dispositivos en el Internet de las Cosas son a menudo muy pequeños y no tienen mucho almacenamiento.

Por lo tanto, Edge Computing proporciona ese tipo de respuesta que no se podría obtener con la típica computación en nube.

Serverless

La computación sin servidores es una extensión de la “Función como un servicio”. Con la computación sin servidores el proveedor de la nube administra los recursos de computación de manera que puedan ser entregados de manera dinámica.

El precio se basa sólo en el tiempo de ejecución de la computación utilizada, el tiempo de inactividad no se cobra.

En lugar de una aplicación monolítica se entregan microservicios individuales que entregan una función.

Por lo tanto, el tiempo de inactividad se vuelve menos significativo. Todos los grandes proveedores de nubes ofrecen alguna forma de computación sin servidores.

Recientemente, las ofertas de base de datos y almacenamiento sin servidores también se han hecho disponibles.

Los productos de bases de datos sin servidor se basan generalmente en bases de datos populares como MySQL. La computación sin servidor ofrece ventajas con respecto a los costos y la implementación de software.

La computación sin servidor es sólo de ejecución, los datos no se almacenan generalmente.

También en este caso hay compensaciones, el rendimiento puede ser lento ya que el tiempo de inicio de la computación sin servidor es limitado y los recursos son limitados.

La computación sin servidores suele basarse en normas de proveedores patentadas, por lo que la movilidad puede ser un problema.

La computación sin servidores ofrece una serie de ventajas sobre la infraestructura tradicional basada en la nube o centrada en el servidor.

Para muchos desarrolladores, las arquitecturas sin servidores ofrecen una mayor escalabilidad, más flexibilidad y un tiempo de lanzamiento más rápido, todo ello a un costo reducido.

Con las arquitecturas sin servidores, los desarrolladores no necesitan preocuparse por la compra, el aprovisionamiento y la administración de los servidores de respaldo.

Sin embargo, la computación sin servidores no es una solución mágica para todos los desarrolladores de aplicaciones web.

Serverless computing vs. containers

Tanto la computación sin servidores como los contenedores permiten a los desarrolladores construir aplicaciones con muchos menos gastos generales y más flexibilidad que las aplicaciones alojadas en servidores tradicionales o máquinas virtuales.

El estilo de arquitectura que un desarrollador debe utilizar depende de las necesidades de la aplicación, pero las aplicaciones sin servidor son más escalables y generalmente más rentables.

Aplicaciones distribuidas y descentralizadas 

DLT se basa en una red de ordenadores llamados nodos. Los nodos son capaces de almacenar datos de forma que sean inmutables.

La inmutabilidad proviene del concepto de hashing. Hashing Data lo convierte en una cadena de longitud fija. Una cadena única. Una vez que los datos son hasheados, el hash puede ser almacenado en el nodo.

Si algún dato fuera manipulado o hackeado, esto se reflejaría en el hash, ya que el hash cambiaría, y otros nodos pueden restaurar el nodo que ha sido manipulado.

La nube nos da un entorno ideal para gestionar los nodos DLT y los nodos de Blockchain.

Obviamente, varios nodos pueden ser creados dentro de una nube para manejar esa red operativa. Los nodos pueden ser desplegados según sea necesario.

Muchos proveedores de nubes ya ofrecen servicios de DLT y Blockchain.

Los nodos de DLT también pueden ejecutar aplicaciones llamadas aplicaciones distribuidas o DApps.

Las DApps nunca pueden ser cambiadas. Existen como parte de la red. La nube puede utilizarse para crear todos estos diversos nodos que ejecutarán la aplicación distribuida.

Por hoy es todo… en la próxima entrega vamos a analizar las ofertas de los players mas importantes del mercado del Cloud y hableremos de DataOps

Michele Iurillo. Synergo

 

Autor: Michele Iurillo. Synergo