Mostrando entradas con la etiqueta Containers. Mostrar todas las entradas
Mostrando entradas con la etiqueta Containers. Mostrar todas las entradas

domingo, 24 de marzo de 2024

Los Contenedores: Preguntas y Respuestas

 ¿Para qué nacieron las Computadoras? Para resolver problemas. Sí. Ya son legendarias las aventuras de Alan Turing, su equipo de trabajo y todos los esfuerzos por parte del gobierno británico para descifrar o más bien decriptar los mensajes generados con la máquina "Enigma" de los nacionales socialistas alemanes (nazis).

También las computadoras se han aplicado para analizar datos, ordenarlos (por eso en España se les dice "ordenadores") clasificarlos, realizar operaciones matemática e iterando algoritmos (que deriva del nombre del matemático árabe Abu Abdallah Muḥammad Ibn Mūsā Al-Jwarizmī).

Son precisamente esos algoritmos lo que hace que un grupo de personas, los Programadores, puedan "ecribir" Programas de Cómputo y que estos al ejecutarse en el Hardware, realmente le den sentido a las Computadoras.

Durante mucho tiempo, sin importar el lenguaje de cómputo, se seguían los lineamientos y cánones de la Programación en Cascada.

La Programación en Cascada

Más comúnmente conocida como el modelo de desarrollo de software en cascada, es una metodología secuencial que se ha utilizado tradicionalmente en la ingeniería de software. Este modelo se caracteriza por una serie de fases claramente definidas y ordenadas, donde cada fase debe completarse antes de pasar a la siguiente. Aquí te detallo sus características principales y cómo se desarrolla:

Secuencialidad: El proceso sigue una secuencia lineal desde el inicio del proyecto hasta su conclusión, sin retroceder a fases anteriores.

Estructura Fija: Las fases del proyecto son fijas y se completan una tras otra en orden específico: Requisitos, Diseño, Implementación, Verificación, y Mantenimiento.

Documentación Completa: Cada fase produce documentos que sirven como entrada para la siguiente fase. Esto significa que antes de escribir código, se realiza una extensa documentación de los requisitos y el diseño.

Revisiones y Aprobaciones: Al final de cada fase, el trabajo realizado se revisa y debe ser aprobado antes de pasar a la siguiente etapa.

Las Fases del Modelo en Cascada incluyen:

  • Análisis de Requisitos: Se identifican las necesidades del sistema y se documentan de manera detallada. Es la base para el diseño del sistema.
  • Diseño del Sistema y del Software: Basándose en los requisitos, se elabora una arquitectura de cómo el software funcionará internamente y en interacción con otros sistemas o con el usuario.
  • Implementación y Codificación: Los diseñadores comienzan a escribir el código del software según las especificaciones del diseño.
  • Pruebas: El software se prueba para identificar y corregir errores. Se verifica que cumpla con los requisitos especificados.
  • Despliegue: Una vez que el software ha sido probado y se considera listo, se instala o se libera para su uso.
  • Mantenimiento: Después del lanzamiento, el software entra en una fase de mantenimiento para corregir errores no identificados previamente o para realizar actualizaciones.

¿Cuáles son las Ventajas y Desventajas de este modelo de programación?:

Ventajas:
  • Predecible: Las etapas y resultados están claramente definidos, lo que facilita la planificación y el presupuesto.
  • Estructura: La metodología en cascada es fácil de entender y seguir, especialmente para proyectos simples y pequeños.
Desventajas:
  • Rigidez: La dificultad para volver a fases anteriores puede resultar en problemas si los requisitos cambian durante el desarrollo.
  • Retrasos en la Prueba: Las pruebas se realizan al final del ciclo de vida, lo que puede resultar en la detección tardía de errores fundamentales.
  • Dificultad con Requisitos Complejos o Cambiantes: No es ideal para proyectos donde los requisitos no están bien definidos desde el principio o son propensos a cambiar.
Aunque el modelo en cascada ha sido criticado por su rigidez y por no adaptarse bien a los proyectos donde los requisitos son inciertos o cambiantes, sigue siendo una metodología valiosa para ciertos tipos de proyectos con requisitos bien definidos y donde los cambios son mínimos o nulos.

Precisamente por su rigidez y como resultado de un cada vez más cambiante ambiente de operación para cualquier programa de cómputo, así como también la necesidad de incluir más dinámicos, flexibles y versátiles ambientes de ejecución, es por lo que se buscó un enfoque diferente y obviamente un modelo de programación que pudiese cumplir con todos estos nuevos requisitos. Es entonces que nace el Modelo de Programación basado en Microservicios.

La Programación Basado en Microservicios

El modelo de programación basado en microservicios representa un enfoque arquitectónico para el desarrollo de aplicaciones. En lugar de construir una aplicación monolítica grande (o inmensa en ocasiones), el enfoque de microservicios descompone o más bien parte la aplicación en componentes más pequeños y manejables, conocidos como microservicios. Estos microservicios son independientes entre sí, cada uno ejecutando un proceso único y gestionando una parte específica de la funcionalidad de la aplicación.

A continuación enumeramos cuáles son las características principales, cómo funcionan, y las ventajas y desventajas de este modelo basado en microservicios.

Características Principales:

Desacoplamiento: Cada microservicio es independiente y responsable de una función específica dentro de la aplicación. Esto permite que se desarrollen, desplieguen, y escalen de manera independiente.

Especialización: Los microservicios se centran en una sola tarea o proceso, siguiendo el principio de responsabilidad única. Esto facilita la comprensión, el desarrollo y el mantenimiento del código.

Comunicación a través de API: Los microservicios interactúan entre sí mediante interfaces de programación de aplicaciones (APIs), generalmente sobre protocolos HTTP/HTTPS con patrones de comunicación REST o GraphQL.

Tecnología Diversa: Cada microservicio puede ser desarrollado utilizando el lenguaje de programación, base de datos, o tecnología de almacenamiento más adecuado para su función específica.

Funcionamiento:
  • Una aplicación basada en microservicios se compone de varios servicios pequeños que se comunican a través de la red.
  • Cada servicio tiene su propia base de datos y lógica de negocio, lo que permite su desarrollo y escalabilidad de manera independiente.
  • Los servicios se despliegan típicamente en contenedores, lo que facilita su replicación y gestión a través de plataformas de orquestación como Kubernetes.
Ventajas:
  • Flexibilidad Tecnológica: Permite el uso de diferentes tecnologías y lenguajes de programación según las necesidades específicas del servicio.
  • Escalabilidad: Los servicios pueden escalarse independientemente, mejorando el uso de recursos y la capacidad de respuesta ante cargas variables.
  • Resiliencia: El fallo en un microservicio no necesariamente causa un fallo en toda la aplicación, lo que mejora la disponibilidad y confiabilidad del sistema.
  • Facilita la Integración Continua y la Entrega Continua (CI/CD): La independencia de los servicios facilita la actualización, el testing y el despliegue rápido y frecuente de nuevas características.
Desventajas:
  • Complejidad de Gestión: El manejo de múltiples servicios y su intercomunicación puede resultar en una complejidad operativa significativa.
  • Consistencia de Datos: Mantener la consistencia a través de los servicios puede ser desafiante, especialmente en transacciones que abarcan múltiples servicios.
  • Latencia: La comunicación entre servicios a través de la red puede introducir latencia.
  • Sobrecarga de Desarrollo: El diseño e implementación inicial pueden requerir más trabajo comparado con una aplicación monolítica debido a la planificación de la interacción entre servicios.
El enfoque de microservicios es particularmente adecuado para aplicaciones empresariales grandes y complejas, donde la capacidad de escalar y actualizar componentes de manera independiente puede ofrecer ventajas significativas en términos de agilidad y mantenibilidad.

Queremos aquí hacer una pausa, pues como veremos más delante en esta entrada, Microservicios es un Modelo de Programación, pero los Contenedores son una manera de llevar a la práctica este modelo de programación y no por ello presentar las mismas desventajas.

¿Qué son los Contenedores?

Los contenedores son una tecnología de virtualización a nivel de sistema operativo que permite empaquetar y distribuir aplicaciones y sus dependencias de manera ligera y portátil. Cada contenedor encapsula una aplicación, junto con todas sus bibliotecas y archivos necesarios para ejecutarse, en un entorno aislado y autocontenido.

Aquí hay algunas características clave de los contenedores:

Aislamiento: Cada contenedor ejecuta su propia instancia del sistema operativo, lo que proporciona un alto grado de aislamiento y seguridad. Los contenedores comparten los recursos del sistema subyacente, como el kernel del sistema operativo, pero tienen sus propios espacios de nombres para procesos, red, almacenamiento, etc.

Portabilidad: Los contenedores son portátiles y se pueden ejecutar en cualquier entorno que admita el motor de contenedores utilizado. Esto significa que una aplicación empaquetada en un contenedor funcionará de la misma manera, independientemente de si se ejecuta en un entorno de desarrollo, pruebas o producción.

Eficiencia: Los contenedores son ligeros y rápidos de crear y destruir. Comparados con las máquinas virtuales tradicionales, que incluyen un sistema operativo completo, los contenedores comparten el núcleo del sistema operativo subyacente, lo que reduce la sobrecarga y el consumo de recursos.

Escalabilidad: Los contenedores facilitan la implementación de aplicaciones en entornos de infraestructura escalables y distribuidos. Pueden escalarse horizontalmente de manera rápida y eficiente para satisfacer las demandas cambiantes de la carga de trabajo.

Orquestación: Para gestionar y coordinar un gran número de contenedores en entornos de producción, se utilizan herramientas de orquestación de contenedores como Kubernetes, Docker Swarm o Amazon ECS. Estas herramientas permiten automatizar tareas como el despliegue, la escalabilidad, la monitorización y la recuperación ante fallos de los contenedores.

Cierto es que a la fecha en la que esta entrada fue creada, los contenedores ya no son unos completos desconocidos y el crecimiento de adopción de éstos ha sido descomunal, pero sí vale la pena (sobre todo para quienes son novatos en este tema) revisar

¿Qué SÍ son y qué NO son los Contenedores?

Qué SÍ son los contenedores:
  • Sí son entornos aislados: Los contenedores encapsulan una aplicación y todas sus dependencias en un entorno aislado del resto del sistema, lo que garantiza que funcionen de manera consistente y sin conflictos con otras aplicaciones.
  • Sí ofrecen portabilidad: Los contenedores son portátiles y pueden ejecutarse en cualquier entorno que admita el motor de contenedores utilizado, lo que facilita el desarrollo, la prueba y la implementación de aplicaciones en diferentes entornos de forma consistente.
  • Sí son eficientes: Los contenedores son ligeros y rápidos de crear y destruir, lo que los hace ideales para implementaciones rápidas y escalables de aplicaciones.
  • Sí son escalables: Los contenedores pueden escalarse horizontalmente fácilmente para satisfacer las demandas cambiantes de la carga de trabajo, lo que los hace ideales para aplicaciones en la nube y en entornos distribuidos.
Qué NO son los contenedores:
  • No son máquinas virtuales: A diferencia de las máquinas virtuales, los contenedores no incluyen un sistema operativo completo. En su lugar, comparten el kernel del sistema operativo subyacente y solo encapsulan las bibliotecas y dependencias necesarias para ejecutar la aplicación.
  • No son un reemplazo de la virtualización tradicional: Aunque los contenedores ofrecen muchas ventajas en términos de eficiencia y portabilidad, no reemplazan por completo la virtualización tradicional. Ambas tecnologías pueden coexistir y ofrecer beneficios complementarios en entornos de desarrollo y producción.
  • No son una solución de seguridad completa: Aunque los contenedores ofrecen un cierto grado de aislamiento y seguridad, no son una solución de seguridad completa por sí solos. Se deben implementar medidas adicionales, como políticas de acceso y control de seguridad, para proteger los contenedores y las aplicaciones que contienen.
MUY IMPORTANTE
Los contenedores son una herramienta poderosa para empaquetar y distribuir aplicaciones de manera eficiente y portátil, pero es importante comprender sus características y limitaciones para aprovechar al máximo su potencial.

¿Qué empresas son actualmente los más importantes e influyentes exponentes de los Contenedores?

Hay varias empresas que han sido influyentes en el desarrollo y la adopción de contenedores. Algunas de las más destacadas incluyen:

Docker, Inc.: Docker es la empresa que popularizó la tecnología de contenedores al crear la plataforma Docker. Su enfoque en la facilidad de uso y la portabilidad ayudó a impulsar la adopción masiva de contenedores en la industria de la tecnología.

Google: Google ha desempeñado un papel fundamental en el desarrollo de la tecnología de contenedores. Contribuyeron al desarrollo de Kubernetes, un sistema de orquestación de contenedores de código abierto, que se ha convertido en el estándar de facto para administrar contenedores a escala.

Red Hat: Red Hat ha sido un líder en la adopción de contenedores en el mundo empresarial. Contribuyeron al desarrollo de herramientas como Kubernetes y OpenShift, una plataforma de contenedores empresariales basada en Kubernetes.

Amazon Web Services (AWS): AWS ofrece una amplia gama de servicios de contenedores, incluyendo Amazon ECS (Elastic Container Service) y Amazon EKS (Elastic Kubernetes Service). Su infraestructura de nube escalable ha facilitado la adopción de contenedores en empresas de todos los tamaños.

Microsoft: Microsoft ha integrado el soporte para contenedores en su plataforma en la nube Azure, así como en su sistema operativo Windows Server. Han contribuido al desarrollo de herramientas como Docker Desktop for Windows y Azure Kubernetes Service (AKS).

VMware: VMware ha expandido su oferta para incluir soluciones de contenedores a través de productos como VMware Tanzu y vSphere Integrated Containers. Su experiencia en virtualización ha ayudado a las empresas a integrar contenedores en sus infraestructuras existentes.

CoreOS (ahora parte de Red Hat): CoreOS fue una empresa pionera en el desarrollo de sistemas operativos optimizados para contenedores. Su sistema operativo CoreOS Container Linux y su plataforma de orquestación de contenedores Tectonic contribuyeron al avance de la tecnología de contenedores en la industria.

Estas son solo algunas de las empresas que han desempeñado un papel importante en el desarrollo y la adopción de contenedores. Hay muchas otras organizaciones y líderes en la comunidad de código abierto que también han contribuido al éxito de esta tecnología.

¿Qué liboros y/o guías básicas hay ya disponibles para el entendimiento y aprendizaje de los Contenedores?

Aquí compartimos una lista de libros y guías básicas que pueden ser útiles para entender y aprender sobre contenedores:

"Docker Deep Dive" por Nigel Poulton: Este libro proporciona una introducción completa a Docker, desde los conceptos básicos hasta las características avanzadas. Es ideal tanto para principiantes como para usuarios experimentados.

"Kubernetes Up & Running" por Kelsey Hightower, Brendan Burns y Joe Beda: Este libro es una guía completa para comenzar con Kubernetes, la plataforma de orquestación de contenedores más popular. Cubre todo, desde los fundamentos hasta la implementación y la administración en producción.

"Docker in Action" por Jeff Nickoloff: Este libro cubre los conceptos básicos de Docker y cómo se puede utilizar para empaquetar, distribuir y ejecutar aplicaciones de manera eficiente. Proporciona ejemplos prácticos y consejos para trabajar con Docker en entornos reales.

"Containerization with Docker" por Russ McKendrick: Este libro es una guía práctica para comenzar con Docker, cubriendo temas como la instalación, la creación de imágenes de contenedores y la administración de contenedores en producción.

"The Kubernetes Book" por Nigel Poulton: Este libro es una guía detallada para comprender y trabajar con Kubernetes. Cubre desde los conceptos básicos hasta las prácticas recomendadas para implementar y administrar aplicaciones en Kubernetes.

"Learn Docker - Fundamentals of Docker 19.x" por Gabriel N. Schenker: Este libro es una introducción práctica a Docker, diseñada para aquellos que están comenzando con la tecnología de contenedores. Cubre los fundamentos y proporciona ejemplos paso a paso para comenzar a trabajar con Docker.

Documentación oficial de Docker y Kubernetes: Ambas comunidades ofrecen una amplia documentación en línea que cubre todos los aspectos de sus respectivas tecnologías. Estas guías son una excelente fuente de información para aprender sobre contenedores.

¿Qué debe de incluír un programa de estudios para una capacitación y formación completa en los Contenedores?

¿Desea ir más allá de lo que ofrecen los libros y la documentación? Entonces al parecer es necesario tomar un curso. ¿Qué debe de incluír un programa de estudios para una capacitación y formación completa en los Contenedores?

Un programa de estudios completo para la capacitación y formación en contenedores debe incluir una variedad de temas que cubran desde los fundamentos básicos hasta los aspectos más avanzados de la tecnología. Aquí hay una propuesta de los temas que podrían incluirse en dicho programa:

Introducción a los contenedores:
  • Definición de contenedores y su importancia en el desarrollo de software moderno.
  • Diferencias entre contenedores y máquinas virtuales.
  • Historia y evolución de la tecnología de contenedores.
Conceptos básicos de Docker:
  • Instalación y configuración de Docker en diferentes sistemas operativos.
  • Creación y gestión de contenedores Docker.
  • Uso de imágenes de Docker y registro de Docker Hub.
  • Redes y almacenamiento en Docker.
Orquestación de contenedores con Kubernetes:
  • Introducción a Kubernetes y su arquitectura.
  • Instalación y configuración de un clúster de Kubernetes.
  • Despliegue y escalado de aplicaciones en Kubernetes.
  • Gestión de recursos y monitoreo en Kubernetes.
Desarrollo de aplicaciones basadas en contenedores:
  • Desarrollo de aplicaciones utilizando Docker y Docker Compose.
  • Uso de Docker en entornos de desarrollo local y en la nube.
  • Integración de contenedores en pipelines de integración continua/despliegue continuo (CI/CD).
Seguridad y buenas prácticas en contenedores:
  • Principios de seguridad en contenedores.
  • Mejores prácticas para la creación de imágenes seguras.
  • Configuración de políticas de acceso y control de seguridad en Kubernetes.
Optimización y rendimiento de contenedores:
  • Estrategias para optimizar el tamaño y el rendimiento de las imágenes de Docker.
  • Configuración de recursos y límites en contenedores.
  • Estrategias de almacenamiento y gestión de datos en contenedores.
Casos de uso y estudios de casos:
  • Aplicaciones de contenedores en diferentes industrias y sectores.
  • Estudios de casos de empresas que han adoptado contenedores con éxito.
  • Prácticas recomendadas y lecciones aprendidas de implementaciones reales.
Este es solo un ejemplo de los temas que podrían incluirse en un programa de estudios completo sobre contenedores. Es importante adaptar el contenido según las necesidades y el nivel de conocimiento de los estudiantes, así como incorporar ejercicios prácticos y proyectos para reforzar los conceptos aprendidos.

¿Qué alternativas existen en línea, para el aprendizaje, formación y capacitación en Contenedores?

Plataformas de cursos en línea:
  • Udemy: Ofrece una amplia variedad de cursos sobre Docker, Kubernetes y contenedores en general, impartidos por instructores expertos.
  • Coursera: Tiene cursos y especializaciones en contenedores ofrecidos por universidades y empresas líderes en tecnología.
  • LinkedIn Learning: Ofrece una amplia gama de cursos y tutoriales sobre Docker, Kubernetes y desarrollo de contenedores.
  • Pluralsight: Tiene cursos especializados en contenedores y orquestación de contenedores, diseñados para profesionales de la tecnología.
  • edX: Ofrece cursos en línea gratuitos y de pago sobre contenedores, impartidos por universidades y organizaciones académicas.
Recursos gratuitos y de código abierto:
  • Documentación oficial de Docker y Kubernetes: Ambas comunidades ofrecen una amplia documentación en línea que cubre todos los aspectos de sus respectivas tecnologías.
  • Tutoriales y guías en blogs y sitios web: Hay muchos blogs y sitios web que ofrecen tutoriales y guías gratuitas sobre Docker, Kubernetes y contenedores en general.
  • GitHub: Hay numerosos repositorios en GitHub con ejemplos de código, proyectos y recursos de aprendizaje relacionados con contenedores.
Cursos especializados y certificaciones:
  • Certificaciones oficiales de Docker y Kubernetes: Tanto Docker como Kubernetes ofrecen programas de certificación oficial que pueden ayudar a validar tus habilidades en contenedores.
  • Cursos especializados en plataformas de capacitación en línea: Algunas plataformas ofrecen cursos específicos para la preparación de certificaciones en Docker y Kubernetes.
Comunidades y grupos de usuarios:
  • Participar en comunidades en línea, como foros, grupos de usuarios y canales de Slack relacionados con Docker y Kubernetes, puede ser una forma útil de aprender y compartir conocimientos con otros profesionales de contenedores.
¿Qué ambientes de ejecución (en máquinas físicas o virtuales) existen y cuáles son las mas recomendables para comenzar a aprender a programar y ejecutar contenedores?

Para comenzar a aprender a programar y ejecutar contenedores, es útil familiarizarse con los ambientes de ejecución que permiten manejar estas tecnologías eficientemente. La buena noticia es que podemos iniciar con herramientas relativamente sencillas que no requieren de infraestructuras complejas ni de grandes recursos de hardware. Aquí algunos de los entornos más populares y accesibles:

1. Docker
Docker es la plataforma de contenedores más popular y un excelente punto de partida para aprender sobre contenedores. Permite crear, desplegar y manejar contenedores de manera sencilla y eficiente. Docker puede ejecutarse tanto en máquinas físicas como virtuales y es compatible con múltiples sistemas operativos, incluyendo Linux, macOS y Windows. Para quienes inician, Docker ofrece una curva de aprendizaje amigable y una gran cantidad de documentación y recursos de aprendizaje.

2. Kubernetes
Aunque Kubernetes es más un sistema de orquestación de contenedores que un ambiente de ejecución per se, aprender a usarlo después de Docker es un paso natural. Kubernetes te permite manejar aplicaciones contenerizadas a gran escala. Es más complejo que Docker en términos de curva de aprendizaje, pero también es muy poderoso y ampliamente utilizado en la industria. Minikube es una herramienta que te permite ejecutar Kubernetes localmente en tu máquina (física o virtual), simplificando el proceso de aprendizaje y experimentación con Kubernetes.

3. Play with Docker (PWD)
Play with Docker es una herramienta en línea que proporciona un entorno Docker gratuito, accesible directamente desde tu navegador. Es una opción excelente para experimentar con Docker sin necesidad de instalar nada en tu máquina. Aunque no sustituye la experiencia de trabajar con Docker localmente, es una forma rápida de empezar a aprender y experimentar con contenedores.

4. Katacoda
Katacoda es una plataforma de aprendizaje interactivo que ofrece escenarios gratuitos y tutoriales en vivo para tecnologías como Docker y Kubernetes. Katacoda ejecuta contenedores y ambientes de orquestación directamente en tu navegador, lo que permite aprender y experimentar sin configuraciones complejas.

Recomendaciones para Principiantes
Para los principiantes, empezar con Docker en una máquina local es altamente recomendable. Esto se debe a que Docker simplifica muchos de los conceptos fundamentales de los contenedores y tiene una comunidad de soporte extensa. Una vez que te sientas cómodo con Docker, avanzar hacia Kubernetes utilizando Minikube o incluso Katacoda para experimentar sin necesidad de un entorno de hardware dedicado puede ser el siguiente paso lógico.

¿Qué Sistemas Operativos son más recomendables para ejecutar Contenedores?

Los contenedores son una tecnología que se ejecuta en sistemas operativos basados en Linux, por lo que cualquier distribución Linux es adecuada para ejecutar contenedores. Sin embargo, algunos sistemas operativos han sido diseñados específicamente con contenedores en mente y ofrecen características adicionales para administrar y desplegar contenedores de manera más eficiente. Aquí hay algunas opciones recomendadas:

Ubuntu: Es una de las distribuciones Linux más populares y ampliamente utilizadas para ejecutar contenedores. Es fácil de instalar, tiene una amplia base de usuarios y cuenta con una gran cantidad de documentación y soporte disponible.

Fedora CoreOS: Es una distribución de Linux optimizada para ejecutar contenedores en entornos de producción. Está diseñada para ser segura, estable y fácil de administrar, con actualizaciones automáticas y soporte nativo para Kubernetes.

Red Hat Enterprise Linux (RHEL): Es una distribución de Linux empresarial con soporte comercial proporcionado por Red Hat. Ofrece características avanzadas de seguridad y administración, así como soporte a largo plazo para entornos críticos.

CentOS: Es una distribución de Linux de código abierto basada en el código fuente de RHEL. Es una opción popular para entornos de servidor debido a su estabilidad y compatibilidad con aplicaciones empresariales.

Debian: Es una distribución de Linux conocida por su estabilidad y seguridad. Es una opción sólida para ejecutar contenedores, especialmente si prefieres un enfoque más conservador y de código abierto.

Arch Linux: Es una distribución de Linux para usuarios avanzados que prefieren construir su sistema desde cero. Si estás dispuesto a configurar tu sistema manualmente, Arch Linux puede ser una opción interesante para ejecutar contenedores.

¿Qué Lenguaje de Programación puedo utilizar para programar contenedores?

La belleza de los contenedores es que permiten empaquetar y ejecutar aplicaciones de manera consistente a través de diferentes entornos, independientemente del lenguaje de programación en que estas estén escritas. Esto significa que podemos utilizar prácticamente cualquier lenguaje de programación para desarrollar tu aplicación antes de contenerizarla. La elección del lenguaje dependerá de preferencias personales, requisitos del proyecto y el ecosistema del lenguaje. Algunos de los lenguajes de programación más comunes utilizados para desarrollar aplicaciones en contenedores incluyen:

Python: Gracias a su simplicidad y legibilidad, junto con una vasta biblioteca de módulos de terceros, Python es un favorito para el desarrollo de aplicaciones web, automatización, análisis de datos, aprendizaje automático, y más.

JavaScript (Node.js): Permite ejecutar JavaScript en el lado del servidor, lo que lo hace ideal para construir aplicaciones web escalables y en tiempo real. La popularidad de JavaScript y el ecosistema NPM ofrecen una gran flexibilidad para el desarrollo de aplicaciones modernas.

Go (Golang): Conocido por su simplicidad, eficiencia y soporte nativo para la concurrencia. Es ampliamente utilizado en el ecosistema de contenedores y microservicios, especialmente porque herramientas como Docker y Kubernetes están escritas en Go.

Java: Sigue siendo popular en entornos empresariales debido a su robustez, escalabilidad y vasto ecosistema. Las aplicaciones Java pueden ser fácilmente contenerizadas y desplegadas en cualquier entorno.

Ruby: En particular el framework Ruby on Rails, es una excelente opción para el desarrollo rápido de aplicaciones web. Aunque ha disminuido en popularidad frente a otros lenguajes más nuevos, sigue siendo una opción sólida para muchos proyectos.

.NET (C#): Con la evolución de .NET Core, las aplicaciones .NET pueden ejecutarse en Linux y contenerizarse fácilmente. Esto hace que C# sea una opción atractiva para el desarrollo de aplicaciones web, servicios, y aplicaciones de escritorio.

Rust: Está ganando popularidad debido a su enfoque en la seguridad y el rendimiento. Es una buena opción para sistemas y aplicaciones donde la eficiencia y la seguridad son críticas.

¿Cuáles son los pasos a seguir para armar un laboratorio casero para aprender a programar y probar contenedores?

1. Definamos Objetivos
Antes de comenzar, es importante saber qué se quiere lograr. Esto puede incluir aprender un lenguaje de programación específico, entender cómo funcionan los contenedores o desarrollar una aplicación concreta.

2. Eligir y Preparar el Hardware
Casi cualquier computadora moderna puede ser adecuada para trabajar con contenedores. Sin embargo, asegurémonos de tener suficiente memoria RAM (8 GB es un buen punto de partida, aunque 16 GB es ideal) y espacio en disco para las imágenes de los contenedores y los contenedores mismos.

3. Instalar un Sistema Operativo Compatible
Los sistemas operativos basados en Linux son ampliamente considerados como los más adecuados para el trabajo con contenedores, aunque Windows y macOS también soportan herramientas de contenedorización como Docker. Si está instalado Linux como Sistema Operativo por defecto, podemos instalarlo en una máquina virtual o usar una dual boot setup.

4. Instalar Docker o una Plataforma de Contenedores Similar
Docker es la plataforma de contenedorización más popular. Su instalación es sencilla y está bien documentada en su sitio web oficial. Otras opciones incluyen Podman, que es un daemon-less y se presenta como una alternativa a Docker.
  • Para Linux: Encontraremos instrucciones específicas para la distribución en la documentación oficial de Docker.
  • Para Windows y macOS: Docker Desktop es la opción recomendada. Hay que asegurarse de cumplir con los requisitos del sistema.
5. Aprender los Fundamentos de Docker y la Contenedorización
Antes de empezar a programar, es crucial entender los conceptos básicos de Docker y cómo funcionan los contenedores. Esto incluye imágenes de contenedores, contenedores, Dockerfiles, volúmenes, redes y el registro de Docker. Hay muchos cursos y tutoriales gratuitos disponibles en línea.

6. Eligir un Editor de Código o IDE
Es mejor utilizar un editor de código o un entorno de desarrollo integrado (IDE) que sea cómodo. Visual Studio Code, por ejemplo, es una opción popular y gratuita que soporta una amplia gama de lenguajes de programación y tiene extensiones para trabajar con Docker.

7. Comenzar con Proyectos Simples
Practicar creando imágenes de contenedores para aplicaciones sencillas en el lenguaje de programación de nuestra elección. Un proyecto típico de iniciación puede ser contenerizar una aplicación web básica o una API.

8. Experimentar con Orquestación de Contenedores
Una vez que estemos cómodo trabajando con contenedores individuales, consideremos aprender sobre orquestación de contenedores usando herramientas como Docker Compose en un inicio, seguido de Kubernetes para escenarios más complejos.

9. Participa en la Comunidad
Unirse a comunidades en línea, como foros de Docker, GitHub, o Stack Overflow, puede proporcionar soporte, nuevos conocimientos y oportunidades para resolver problemas reales de otros usuarios.

10. Mantén la Curiosidad y Continúa Aprendiendo
El campo de la contenedorización y la infraestructura como código está en constante evolución. Hay que mantenerse actualizado con las últimas tendencias, herramientas y mejores prácticas.

Si buscamos soluciones más enfocadas en ambientes de producción o en simulación de ambientes de producción, herramientas como Minikube (para Kubernetes) o Rancher Desktop pueden ser alternativas interesantes. Estas herramientas permiten gestionar clústeres de Kubernetes en una máquina local y están más orientadas hacia pruebas de orquestación y manejo a escala de contenedores.

Hablando concretamente de Minikube, es una herramienta que facilita la ejecución de Kubernetes localmente en la computadora de escritorio o la laptop. Está diseñada para desarrolladores o entusiastas de Kubernetes que desean experimentar o desarrollar con Kubernetes sin necesidad de desplegar un clúster de Kubernetes completo en la nube o en un entorno de servidor dedicado.

Características Principales de Minikube:
  • Sencillez: Minikube inicia un clúster de Kubernetes de un solo nodo dentro de una máquina virtual (VM) en la máquina de escritorio o la laptop, lo que hace que sea fácil de instalar y ejecutar.
  • Compatibilidad: Funciona en sistemas operativos Linux, Windows y macOS.
  • Flexibilidad: Soporta diversas herramientas de virtualización, incluyendo VirtualBox, KVM, HyperKit, y más. También puede ejecutarse directamente en contenedores Docker si preferimos evitar usar una VM.
  • Desarrollo Local: Proporciona un entorno ideal para aprender Kubernetes y experimentar con contenedores sin incurrir en costos de infraestructura de nube.
  • Herramientas de Desarrollo: Minikube incluye características útiles para el desarrollo, como un Dashboard de Kubernetes, soporte para carga de configuración y volúmenes persistentes, y la capacidad de emular redes y condiciones de entorno específicas.
Cómo Funciona Minikube:
Al ejecutar Minikube, este crea y configura una máquina virtual que corre una distribución ligera de Linux. Dentro de esta VM, se inicia un clúster de Kubernetes de un solo nodo, permitiéndote desplegar y gestionar contenedores usando Kubernetes en tu máquina local.

Usos de Minikube:
  • Aprendizaje de Kubernetes: Por ser un clúster de Kubernetes real, aunque sea de un solo nodo, Minikube es una excelente herramienta para aprender cómo funciona Kubernetes y cómo se despliegan y gestionan las aplicaciones en él.
  • Desarrollo de Aplicaciones: Los desarrolladores pueden usar Minikube para desarrollar y probar aplicaciones en un entorno de Kubernetes local antes de desplegarlas en un entorno de producción o en la nube.
  • Pruebas de Integración y Funcionalidad: Permite a los equipos de desarrollo probar nuevas características, configuraciones, y más, en un entorno controlado y fácilmente reproducible.
Inicio con Minikube:
Para empezar con Minikube, necesitamos instalarlo en nuestra máquina. La documentación oficial de Minikube proporciona instrucciones detalladas de instalación y uso para diferentes sistemas operativos. Una vez instalado, podemos iniciar tu clúster de Kubernetes con el comando minikube start y comenzar a experimentar con Kubernetes de manera local.

Conclusión

Aún queda mucho material que podríamos compartir en esta entrada, pero recomendamos más bien comenzar con todo lo que hemos incluido aquí y que sea su experiencia en particular la que dicte cuáles serían los siguientes pasos.

¿Está Usted listo para comenzar con los contenedores?

viernes, 23 de octubre de 2020

Qué es el Edge Computing, cuáles son sus ventajas y cuáles sus desafíos.

Edge Computing (cómputo en frontera) es un paradigma de computación distribuida que acerca la computación y el almacenamiento de datos, a la ubicación en donde se necesita para mejorar los tiempos de respuesta y ahorrar ancho de banda.

Los orígenes del Edge Computing se encuentran en las redes de entrega de contenido que se crearon a fines de la década de 1990 para servir contenido web y de video, desde servidores que se implementaron cerca de los usuarios. 

A principios de la primera década del Siglo XXI, estas redes evolucionaron para albergar aplicaciones y componentes en los servidores "Edge", dando como resultado los primeros servicios Edge Computing comercial que hospedaban aplicaciones como: localizadores de distribuidores, carritos de compras, agregadores de datos en tiempo real, motores de inserción de anuncios, etc.

La desde ese momento conocida como Informática Perimetral moderna, permitió ampliar significativamente este enfoque a través de la tecnología de virtualización, que facilitaron (y aún lo hacen) la implementación y ejecución de una gama más amplia de aplicaciones.

Aterrizando el tema y abordándolo con mayor detalle, podemos afirmar entonces que el Edge Computing es un tipo de informática que ocurre en la ubicación física del usuario, de la fuente de datos, o cerca de ellas. Al establecer servicios de computación cerca de esas ubicaciones, los usuarios obtienen servicios más rápidos y confiables, y las empresas aprovechan la flexibilidad del cloud computing híbrido. Con el edge computing, una empresa puede usar y distribuir un conjunto común de recursos en una gran cantidad de ubicaciones.

¿Por qué es importante el edge computing?

Se puede observar un ejemplo real de Edge Computing en el uso de la realidad virtual y aumentada. Por lo general, la realidad virtual y aumentada se ve afectada por un ancho de banda insuficiente y una latencia alta. Quienes utilizan esas tecnologías tienen problemas frecuentes con las velocidades bajas o la potencia informática, lo cual interrumpe la capacidad de lograr una experiencia envolvente. 

Para evitar estos problemas, el Edge Computing permite que se descarguen a la nube las partes del proceso que consumen muchos recursos informáticos. Otro ejemplo es la implementación de esos mismos procesos en el Internet de las cosas (IoT), como los automóviles inteligentes. Sólo imaginemos que hubiese latencia mientras su vehículo procesa la información sobre las direcciones. Al igual que el resto de los dispositivos del Internet de las cosas (IoT), su automóvil debe procesar los datos y tomar decisiones en tiempo real o lo más rápido posible.

Los beneficios del edge computing incluyen la capacidad para agregar y analizar datos masivos in situ, lo cual permite tomar decisiones casi en tiempo real. El edge computing reduce aún más el riesgo de exponer los datos confidenciales, ya que mantiene toda esa potencia informática en un lugar cercano. Esto permite que las empresas controlen mejor la proliferación de la información, como los secretos comerciales del sector, o que cumplan con las políticas normativas, como el Reglamento General de Protección de Datos (General Data Protection Regulation - GDPR).

Por último, los clientes empresariales disfrutan de la flexibilidad y los costos relacionados con el Edge Computing. Al mantener la potencia informática más cerca de su fuente, los sitios regionales pueden seguir funcionando independientemente del sitio central, incluso si este último deja de funcionar. Además, esto permite reducir considerablemente el costo que debe pagar por el ancho de banda para trasladar los datos entre los sitios regionales y centrales.

¿Cuáles son las ventajas del edge computing?

El Cómputo en La Nube se ha enfocado en centralizar los servicios en un grupo de centros de datos grandes. Este proceso permitió que se pudieran ampliar y compartir los recursos con mayor eficiencia, sin perder el control ni la seguridad empresarial.

El Edge Computing se encarga de aquellos casos prácticos que el enfoque de centralización del Cómputo en La Nube no puede abordar de forma adecuada, generalmente debido a los requisitos de red u otras restricciones. Se centra en varios sitios informáticos pequeños que disminuyen el costo de red, evitan las restricciones de ancho de banda, reducen las demoras en la transmisión, limitan las fallas del servicio y controlan mejor el movimiento de los datos confidenciales. Los tiempos de carga se reducen en cientos de milisegundos, y los servicios en línea implementados más cerca de los usuarios habilitan las capacidades de almacenamiento en caché dinámico y estático.

Para los usuarios finales, esto significa una experiencia de uso más rápida y uniforme. Para las empresas y los proveedores de servicios, se traduce en aplicaciones de baja latencia y alta disponibilidad con supervisión en tiempo real.

¿Cuáles son los desafíos del edge computing?

El problema principal del edge computing no solo es la escalabilidad, sino también la distribución:

  • El escalamiento horizontal hacia varios sitios pequeños puede resultar más complicado que agregar la capacidad equivalente a un centro de datos principal. Las empresas más pequeñas pueden tener dificultades a la hora de gestionar el aumento de los costos generales de las ubicaciones físicas.

  • Por lo general, los sitios de Edge Computing se encuentran en lugares remotos y no cuentan con la experiencia técnica suficiente. Si se produce alguna falla in situ, debemos tener una infraestructura disponible para que personal sin experiencia técnica o que un pequeño grupo de especialistas ubicados en otro lugar, puedan reparar y/o gestionar de manera centralizada.

  • Es necesario que las operaciones de gestión del sitio se puedan reproducir en todos los sitios de Edge Computing para simplificar la gestión, facilitar la resolución de problemas y evitar que la configuración de software presente pequeñas diferencias entre los sitios, lo que se conoce comúnmente como "desajuste en la configuración".

  • Si bien el Edge Computing ofrece un mayor control sobre los flujos de información al restringir los datos geográficamente, la seguridad física del sitio suele ser mucho menor. Esto puede dar como resultado un mayor riesgo de situaciones maliciosas o accidentales, por ejemplo la desconexión de un cable por error.

Con todo esto planteado, es entonces que ahora se vuelve cada vez más necesario el contar con una Solución para Edge Computing que sea confiable, segura, escalable y que de inicio se ajuste a las necesidades del negocio.

¿Ya está Usted decidido de implementar Edge Computing? Lo primero entonces es asumir el compromiso de promover estrategias de nube híbrida abierta. ¿Qué significa exactamente? Esta estrategia incorpora la interoperabilidad, la portabilidad de las cargas de trabajo y la flexibilidad del software open source a los entornos empresariales. 

Se hace imperativo que todos los entornos y las aplicaciones que rodean al sistema operativo se abstraen para brindar una interacción constante con cualquier aplicación en prácticamente todos los entornos, sin tener que renovarla, volver a capacitar al personal, dividir la gestión ni sacrificar la seguridad. Además, vale la pena tener en cuenta el asegurarse que todo funcione con la tecnología Open Source, para asegurar que podrá llevar sus datos con usted, sin importar dónde se encuentre mañana.

Edge Computing es una parte importante de la visión de la nube híbrida, que permite lograr una experiencia uniforme con las operaciones y las aplicaciones. Queda pues entendido que ya se tienen varias cargas de trabajo diferentes, con distintas clases de entornos (virtualizados, sin sistema operativo, de nube pública o privada). El objetivo con el Edge Computing debe ser principalmente ayudar a llevar ese trabajo a distintas ubicaciones físicas (ya sea su centro de datos principal, docenas de sitios pequeños de edge computing, borde de dispositivo o todos los anteriores), para que pueda aprovechar al máximo la potencia informática.

El objetivo La Solución de Edge Computing debe ser primordialmente simplificar las operaciones con la implementación, la gestión y la coordinación automatizadas. Establecer una infraestructura común que abarque todas sus necesidades informáticas, de almacenamiento y de red. Con frecuencia los sitios de Edge Computing no tienen personal de TI, o lo tienen muy limitado. Por eso es un "deber ser" que una buena solución será aquella que se gestione de manera centralizada para reducir la complejidad operativa.

El consejo que le damos para diseñar un entorno nuevo de edge computing es muy sencillo: centralice todo lo que se pueda y distribuya lo que haga falta. Para ello, debe tener en cuenta su infraestructura actual para asignar los recursos informáticos disponibles al problema que desea resolver.

¿Qué se necesita para el edge computing?

En términos generales, con las soluciones integrales de edge computing se deben poder realizar las siguientes tareas:

  • Automatizar y gestionar la infraestructura desde su centro de datos principal hasta sus sitios remotos

  • Implementar, actualizar y mantener el firmware y el software en toda la infraestructura

  • Admitir cargas de trabajo híbridas, que incluyan las máquinas virtuales, los contenedores, las aplicaciones y los microservicios, entre otros

  • Permanecer en funcionamiento, aunque con capacidades reducidas, incluso cuando la conexión a Internet no sea confiable

  • Incluir una plataforma de software sólida que se pueda expandir de manera horizontal y vertical

  • Ejecutar un modelo de implementación uniforme tanto en las instalaciones pequeñas como en las grandes

¿Cuál es una posible Arquitectura recomendada para Edge Computing?

Sin entrar en marcas y nombres de procucto, quí compartimos una Arquitectura Ideal (o que al menos la consideramos ideal) que aborda los desafíos del edge computing en conjunto, y que pueden ayudarlo a diseñar una solución integral adecuada para usted.

Una base sólida que realmente funcione

Todo comienza con un seguro, escalable, confiable Sistema Operativo (de preferencia Linux). Dicho Sistema Operativo deberá ofrecer un gran ecosistema de herramientas, aplicaciones, marcos de trabajo y bibliotecas para diseñar y ejecutar aplicaciones y Contenedores. Sí. Contenedores.

Cargas de trabajo informáticas de alto rendimiento y de máquinas virtuales

Una plataforma de cloud computing que virtualice los recursos del hardware estándar, organice esos recursos en las nubes (públicas y privadas) y que los gestione para que los usuarios puedan acceder a lo que necesitan, en el momento en que lo necesitan. Los nodos informáticos distribuidos deberán admitir las cargas de trabajo informáticas de alto rendimiento y las de máquinas virtuales más exigentes, así como la virtualización de las funciones de red. Debe de ser una solución de Infraestructura como servicio confiable y escalable, que incluya las API estándares con una arquitectura multiempresa sólida.

Cargas de trabajo en contenedores

La plataforma descrita en el párrafo anterior, deberá poder sin problemas implementar y gestionar las aplicaciones basadas en contenedores en cualquier sitio compatible con el Sistema Operativo, incluso en los centros de datos públicos y privados o las ubicaciones del Edge Computing. Aquí entra la necesidad de incluir un entorno de "Kubernetes" de nivel empresarial de alto rendimiento.

Reducción del entorno

Para las situaciones en las que se requieren Clústeres independientes, con alta disponibilidad y con un entorno reducido, un Hipervisor confiable, seguro y escalable combina elementos informáticos integrando el cómputo (procesador y memoria), el almacenamiento, etc. en un solo entorno operativo.

Almacenamiento

El almacenamiento cumple una función importante en el edge computing. Almacenamiento Definido por Software (Software Defined Storage - SDS) nos permite obtener los beneficios de una solución de almacenamiento abierto y con gran capacidad de expansión para las cargas de trabajo, como la infraestructura de nube, el análisis de datos, los repositorios multimedia y los sistemas de copia de seguridad y restauración.

Mensajería y comunicación

En entornos altamente distribuidos, la comunicación entre los servicios que se ejecutan en la nube y los sitios del borde requiere mucha atención. Para responder a las demandas empresariales de forma rápida y eficiente, se necesita poder integrar las aplicaciones y los datos que se encuentran distribuidos. Se vuelve entonces indispensable contar con algún mecanismo de Mensajería de Datos que admita todos los patrones de comunicación necesarios para los casos prácticos del Edge Computing y que pueda resolver hasta los desafíos más exigentes.

Conclusión

Edge Computing no es algo nuevo que parece un experimento, o que se trate de esos ilusorios juegos de palabras inventados por algún fabricante o proveedor de productos y/o soluciones informáticas.

Se trata de un paradigma que, si decidimos implementar en nuestra empresa, negocio, organización, etc. debemos de tomarlo en serio y, tomando en cuenta la Arquitectura Sugerida líneas arriba, estar de alguna manera prevenidos para tomar en cuenta cuáles serán los retos inherentes y cómo podremos afrontarlos.

martes, 22 de septiembre de 2020

¿Qué es Kubernetes?

En entradas anteriores, "De los Monolitos a los Microservicios" y "Orquestación de Contenedores" comenzamos a abordar con más detalle este tema tecnológico de actualidad (Microservicios y Contenedores). En esta tercer entrega relativa al misma Tecnología, deseamos continuar en donde nos habíamos quedado.

Según el sitio web oficial de Kubernetes: "Kubernetes es un sistema de código abierto para automatizar la implementación, el escalado y la gestión de aplicaciones en Contenedores".

La palabra Kubernetese proviene del vocablo griego κυβερνήτης, que significa timonel o piloto de barco. Con esta analogía en mente, podemos pensar en Kubernetes como el timonel de los contenedores.

A Kubernetes también se conoce de manera abreviada como k8s, ya que hay 8 caracteres entre la letra "K" y la letra "s" dentro de la cadena de caracteres que conforman el nombre.

Kubernetes está muy inspirado en el sistema Google Borg, un Orquestador de Contenedores para sus operaciones globales durante más de una década. Es un proyecto de código abierto escrito en el lenguaje Go y con licencia de Apache License, Versión 2.0.

Kubernetes fue iniciado por Google y, con su versión v1.0 en julio de 2015, Google lo donó a la Cloud Native Computing Foundation (CNCF). Hablaremos más sobre CNCF más adelante.

Las nuevas versiones de Kubernetes se lanzan en ciclos de 3 meses. La versión estable actual es 1.14 (a mayo de 2019).

Desde Borg hasta Kubernetes

Según el resumen del artículo Borg de Google, publicado en 2015: "El sistema Borg de Google es un administrador de clústeres que ejecuta cientos de miles de trabajos, desde muchos miles de aplicaciones diferentes, en varios clústeres, cada uno con hasta decenas de miles de máquinas".

Durante más de una década, Borg fue el secreto de Google, con el que ejecutó (y aún ejecuta) sus cargas de trabajo dentro Contenedores, en todo el mundo, en ambiente de producción. Los servicios que utilizamos de Google como Gmail, Drive, Maps, Docs, etc., se prestan todos mediante Borg.

Algunos de los autores iniciales de Kubernetes fueron empleados de Google que han utilizado y desarrollado Borg en el pasado, aportando su valioso conocimiento y experiencia al diseñar Kubernetes. Algunas de las características/objetos de Kubernetes que se pueden rastrear hasta Borg y/o las lecciones aprendidas de él, son:

  • Servidores de APIs
  • Pods
  • IPs por Pod
  • Servicios
  • Etiquetas

Exploraremos todos ellos, y más, posteriormente.

Características de Kubernetes

Kubernetes ofrece un conjunto muy rico de funciones para la orquestación de contenedores. Algunas de sus funciones totalmente compatibles son:

Embalaje automático de contenedores programa automáticamente los contenedores en función de las necesidades y limitaciones de los recursos, para maximizar la utilización sin sacrificar la disponibilidad.

Autocuración reemplaza y reasigna automáticamente los contenedores de los nodos fallidos. Mata y reinicia los contenedores que no responden a las verificaciones de estado, según las reglas y/o políticas existentes. También evita que el tráfico se enrute a contenedores que no responden.

Escalamiento horizontal

Con Kubernetes, las aplicaciones se escalan de forma manual o automática según el consumo de CPU o la utilización de métricas personalizadas.


Descubrimiento de servicios y balanceo de carga

Los contenedores reciben sus propias direcciones IP de Kubernetes, mientras que éste asigna un único nombre de Servidor de Nombres de Dominio (DNS) a un conjunto de contenedores, para ayudar a equilibrar la carga de las solicitudes en todos los contenedores del conjunto.

Algunas otras funciones de Kubernetes totalmente compatibles son:

Implementaciones y reversiones automatizadasKubernetes implementa y revierte sin problemas las actualizaciones de la aplicación y los cambios de configuración, monitoreando constantemente el estado de la aplicación para evitar cualquier tiempo de inactividad.

Administración de secretos y configuracionesKubernetes administra los secretos y los detalles de configuración de una aplicación por separado de la imagen del contenedor, para evitar una reconstrucción de la imagen respectiva. Los secretos consisten en información confidencial que se pasa a la aplicación sin revelar el contenido sensible a la configuración de la pila, como en GitHub.

Orquestación de almacenamientoKubernetes monta automáticamente soluciones de almacenamiento definido por software (SDS) en contenedores de almacenamiento local, proveedores de nube externos o sistemas de almacenamiento en red.

Ejecución por lotes

Kubernetes admite la ejecución por lotes, trabajos de larga ejecución y reemplaza los contenedores fallidos.

Hay muchas otras características además de las que acabamos de mencionar, y actualmente se encuentran en fase alfa / beta. Agregarán un gran valor a cualquier implementación de Kubernetes una vez que se conviertan en características estables. Por ejemplo, la compatibilidad con el Control de Acceso Basado en Roles (RBAC) es estable a partir de la versión 1.8 de Kubernetes.

¿Por qué utilizar Kubernetes?

Además de sus funciones totalmente compatibles, Kubernetes también es portátil y extensible. Se puede implementar en muchos entornos, como máquinas virtuales locales o remotas, seridores físicos o en configuraciones públicas/privadas/híbridas/de múltiples nubes. Es soportado y soporta muchas herramientas de código abierto de terceros que mejoran las capacidades de Kubernetes y brindan una experiencia rica en funciones a sus usuarios.

La arquitectura de Kubernetes es modular y "conectable". No solo organiza aplicaciones de tipo microservicios desacoplados modulares, sino que también su arquitectura sigue patrones de microservicios desacoplados. La funcionalidad de Kubernetes se puede ampliar creando, programando, escribiendo recursos personalizados, operadores, API personalizadas, reglas de programación o complementos.

Para todo proyecto de código abierto exitoso, la comunidad es tan importante como tener un buen código. Kubernetes cuenta con el respaldo de una comunidad próspera en todo el mundo. Tiene más de 2.000 contribuyentes que, con el tiempo, han impulsado más de 77.000 "commits". Hay grupos de encuentro en diferentes ciudades y países que se reúnen regularmente para discutir sobre Kubernetes y su ecosistema. Hay Grupos de Interés Especial (SIG), que se enfocan en temas especiales, como escalabilidad, servioder físicos, redes, etc. Hablaremos más sobre ellos en nuestro último capítulo, Comunidades de Kubernetes.

Usuarios de Kubernetes

Con solo unos años desde su debut, muchas empresas de todos tamaños ejecutan sus cargas de trabajo con Kubernetes. Es una solución para la gestión de cargas de trabajo en rubros tan distintos como la banca, educación, finanzas e inversiones, juegos, tecnologías de la información, medios y transmisión, venta minorista en línea (retail/e-commerce), tiempos compartidos (turismo), telecomunicaciones y muchas otras industrias. Existen numerosos estudios de casos de usuarios e historias de éxito en el sitio web de Kubernetes como:

  • BlaBlaCar
  • BlackRock
  • box
  • eBay
  • Haufe Group
  • Huawei
  • IBM
  • ING
  • Nokia
  • Pearson
  • Wikimedia

Y muchos más.

Cloud Native Computing Foundation (CNCF)

Cloud Native Computing Foundation (CNCF) es uno de los proyectos alojados por Linux Foundation. CNCF tiene como objetivo acelerar la adopción de contenedores, microservicios y aplicaciones nativas de la nube.

CNCF alberga una multitud de proyectos y se agregarán más en el futuro. CNCF proporciona recursos a cada uno de los proyectos, pero, al mismo tiempo cada proyecto continúa operando de forma independiente bajo su estructura de gobernancia preexistente y con sus mantenedores existentes. Los proyectos dentro de CNCF se clasifican según el estado alcanzado:

  • Sandbox
  • Incubating
  • Graduate

En el momento en que se creó este ducumento, había seis proyectos con estatus de "Graduate" y muchos más aún en "Incubating" y en el Sandbox.

Proyectos estatus "Graduate":

  • Kubernetes para la orquestación de contenedores
  • Prometheus para monitorización
  • Envoy de malla de servicio
  • CoreDNS para descubrimiento de servicios
  • Containerd para el ambiente de ejecución del Contenedor
  • Fluentd para el "logging" (registro)

Proyectos de incubación:

  • rkt y CRI-O para el tiempo de ejecución del contenedor
  • Linkerd para malla de servicios
  • etcd para almacén de key/value
  • gRPC para llamada a procedimiento remoto (RPC)
  • CNI para API de redes
  • Harbor para registro
  • Helm para la gestión de paquetes
  • Rook y Vitess para almacenamiento nativo en la nube
  • Notary para seguridad
  • TUF para actualizaciones de software
  • NATS para mensajería
  • Jaeger y OpenTracing para rastreo distribuido
  • Open Policy Agent para la políticas.

Hay muchos proyectos en CNCF Sandbox orientados a métricas, monitoreo, identidad, "serverless", "nodeless", "edge", etc.

Como podemos ver, los proyectos de CNCF cubren todo el ciclo de vida de una aplicación nativa de la nube, desde su ejecución usando ambientes de ejecución basados en contenedores, hasta su monitoreo y registro. Esto es muy importante para cumplir con el objetivo de la CNCF.

La CNCF y Kubernetes

Para Kubernetes, Cloud Native Computing Foundation representa-entrega-ofrece:

  • Proporciona un hogar neutral para la marca comercial Kubernetes y hace cumplir el uso adecuado de éste.
  • Proporciona escaneo de licencias de código central y de proveedor.
  • Ofrece orientación legal sobre cuestiones de patentes y derechos de autor.
  • Crea un plan de estudios de aprendizaje, capacitación y certificación de código abierto para administradores y desarrolladores de aplicaciones de Kubernetes.
  • Administra un grupo de trabajo para garantizar la consistencia y conformidad del software.
  • Comercializa activamente Kubernetes.
  • Apoya actividades "ad hoc".
  • Financia conferencias y eventos de reuniones.

Resumen

Haciendo la cuasi obligada analogía naviera, mientras que el Kernel del Sistema Operativo es el océano, Doker es el equivalente al Buque Portacontenedores y Kubernetes es ese Capitán que conduce, administra, organiza y orquesta todas las operaciones del Buque Portacontenedores.

jueves, 30 de julio de 2020

Contenedores e Hiperconvergencia

En las entradas intituladas "Antes de entender Contenedores, entendamos Microservicios", "Guía esencial de contenedores" y "Pronóstico de Crecimiento en Ingresos para Software y Servicios de Gestión de Contenedores" ya abordamos con cierto detalle todo lo que es y las expectativas económicas de este hijo dilecto de la Transformación Digital. Ahora abordamos un tema que, a petición de algunos de nuestros seguidores en redes sociales, así como también lectores de este Blog Tecnológico, nos han solicitado.

También en este Blog Tecnológico hemos hablado acerca de la Virtualización, la Hiperconvergencia, cómo ambas son un cimiento para la implementación de los Centros de Datos Definidos por Software y por ende, la Nube Privada en lo que respecta a Infraestructura como un Servicio. Ahora compartimos cómo Nutanix ha resuelto entrar por la puerta grande en los Microservicios y los Contenedores.

Descripción general de Nutanix Enterprise Cloud

Nutanix ofrece una solución de infraestructura hiperconvergente a escala web especialmente diseñada para entornos de virtualización y nube (privada y pública). Esta solución brinda a las empresas, organizaciones e instituciones la escalabilidad, la capacidad de recuperación y los beneficios económicos de la arquitectura que se requiere hoy, a través de Nutanix Enterprise Cloud Platform, constituida por tres familias de productos: Nutanix Acropolis, Nutanix Prism y Nutanix Calm.



Los atributos de este sistema operativo Enterprise Cloud incluyen:

• Optimización de almacenamiento y recursos informáticos (procesador, memoria y red).
• Aprendizaje automático para planificar y adaptarse automáticamente a las condiciones cambiantes.
• Autorreparación para tolerar y adaptarse a fallas de componentes.
• Automatización basada en APIs y análisis exhaustivos.
• Actualización simplificada "a un clic".
• Servicios de archivos nativos para datos de usuarios y aplicaciones.
• Soluciones nativas de respaldo y recuperación ante desastres.
• Virtualización potente y rica en funciones.
• Redes flexibles definidas por software, para garantizar visualización, automatización y seguridad.
• Automatización en la nube y gestión del ciclo de vida.

Para comenzar es menester mencionar que Nutanix Acropolis proporciona servicios de datos, que utiliza para ello a tres pilares fundamentales que son: Distributed Storage Fabric (DSF), Application Mobility Fabric (AMF) y Acrópolis Hipervisor (AHV).

Prism (la Interfaz Gráfica de Usuario) proporciona todo lo necesario para la tener visibilidad y administración de infraestructura "a un solo clic" para entornos virtuales que se ejecutan en Acropolis. Acropolis es holístico del hipervisor y admite dos hipervisores de terceros como son: VMware ESXi, Microsoft Hyper-V y Xen, además del hipervisor nativo de Nutanix. Acropolis Hipervisor (AHV).

Arquitectura de la Acrópolis de Nutanix

Acropolis no depende del almacenamiento en red como son SAN o NAS, ni de las costosas infraestructura e interconexiones de red de almacenamiento. Combina almacenamiento altamente denso y cómputo del servidor (CPU y RAM) en un solo bloque de construcción de la plataforma. Cada bloque de construcción ofrece una arquitectura unificada, escalable, nada compartido y sin puntos únicos de falla.


La solución de Nutanix no requiere elementos típicos de una SAN como LUNs, arreglos RAID o caros switches para almacenamiento. Toda la gestión de almacenamiento está centrada en las Máquinas Virtuales (VMs) y la E/S está optimizada en el nivel de disco virtual de las VMs. La solución de software se ejecuta en nodos que pueden ser de una variedad de fabricantes, que son que pueden ser totalmente flash (SSD) para un rendimiento óptimo o una combinación híbrida de SSD y HDD que proporciona una combinación de rendimiento y capacidad adicional. El almacenamiento se basa en el Distributed Storage Fabric (DSF) que clasifica automáticamente los datos a través del clúster a diferentes clases de dispositivos de almacenamiento, utilizando algoritmos inteligentes de colocación de datos. Para obtener el mejor rendimiento, los algoritmos aseguran que los datos utilizados con más frecuencia estén disponibles en la memoria o en la memoria flash en el nodo local de la VM.

Tecnología de contenedores Docker

Es muy fácil comenzar en Docker. La instalación de un solo paquete de Linux proporciona tanto el programa cliente Docker como el demonio Docker. La arquitectura de dos niveles, que se muestra en la figura siguiente, utiliza una utilidad de cliente de línea de comandos de Docker que se comunica directamente con un proceso de demonio de Docker que puede ser local o remoto. El demonio Docker a su vez se comunica con el índice Docker ascendente.

Docker proporciona un índice público o repositorio, llamado Docker Hub, que le brinda acceso a imágenes base estándar para una variedad de distribuciones de Sistema Operativo y aplicaciones comunes.

La tecnología Docker se basa en un ciclo de vida de construcción-distribución-ejecución:
  • Imágenes de Docker (componente de compilación)

    Un contenedor Docker consta de cualquier número de capas de aplicación de solo lectura, superpuestas en una capa de imagen del sistema operativo base utilizando un sistema de archivos de unión (union fliesystem). Una vez incluidas, estas capas forman una nueva imagen. La disposición del sistema de archivos de unión permite a Docker compartir archivos binarios y bibliotecas entre múltiples contenedores.

  • Registros de Docker (componente de distribución)

    Los usuarios pueden optar por implementar registros privados o públicos para almacenar imágenes. Estas imágenes pueden ser imágenes preexistentes de Docker Hub o las imágenes internas específicas de compilación del usuario.

    Alternativamente, puede descargar imágenes que otros usuarios han creado. El cliente Docker puede buscar repositorios de imágenes y enviar imágenes a cualquier combinación de repositorios públicos o privados seguros.

  •  Contenedores Docker (componente de ejecución)

    Un contenedor se ejecuta desde su imagen subyacente de solo lectura. Esta imagen reutilizable contiene datos sobre los detalles de configuración, la aplicación que debe iniciar, etc. Cuando Docker agrega la capa del sistema de archivos de unión de lectura-escritura a la imagen que forma el contenedor, la aplicación puede ejecutarse en ese contenedor.
Los contenedores Docker proporcionan virtualización a nivel de sistema operativo utilizando API expuestas por las bibliotecas de contenedores "containerd" y "runC". "Containerd" es en sí mismo un "tiempo de ejecución" de contenedor liviano, utiliza "runC", que es un formato de contenedor compatible con "Open Container Project" que se ha convertido en el estándar de facto de Open Container Initiative (OCI). Estas API proporcionan una interfaz estándar para las características de contención del kernel de Linux, como espacios de nombres y cgroups (grupos de control).

Por ejemplo, puede usar dichas funciones para crear un entorno aislado, y administrar los derechos de CPU y RAM de los contenedores respectivamente. Los contenedores son livianos y pueden compartir recursos como los binarios y bibliotecas del sistema, pero también están protegidos para que no interfieran entre sí.

Beneficios de Docker en Acropolis Hipervisor (AHV)

La pila de contenedores Docker y AHV se complementan entre sí para proporcionar una solución informática flexible y eficiente, para ejecutar arquitecturas de contenedores de microservicios. Esta combinación reduce tiempos de valor, al proporcionar una facilidad de uso sin igual, liberando a los clientes para centrarse en las aplicaciones e impulsando la innovación en sus organizaciones. La implementación de aplicaciones en el cómputo y el almacenamiento convergentes en una solución "llave en mano" de Nutanix, garantiza que su infraestructura se vuelva realmente invisible: no más recursos desperdiciados, planificación y mantenimiento de la infraestructura.


Algunos de los principales beneficios de ejecutar contenedores Docker en AHV incluyen:
  • Flujos de trabajo de aprovisionamiento similares a la nube para soportar la escala elástica. Fundamos la plataforma de computación Nutanix en principios de escala web que proporcionan escalabilidad fácil y rendimiento lineal predecible. La plataforma habilita la escala horizontal, lo que le permite expandir el clúster Nutanix de un nodo a la vez. Los clientes desean escalar y aprovisionar a la misma velocidad a la que implementan contenedores. Con este fin, Nutanix Prism optimiza las operaciones de administración de VM de nivel de consumidor para que sean operaciones de un solo clic.
  • Soporte para ciclos de vida de aplicaciones híbridas.

    La capacidad de ejecutar la imagen final en entornos de nube híbrida es la característica clave del ensamblaje y la implementación de la aplicación que admite tanto el desarrollo continuo como la integración. Nutanix App Mobility Fabric permite a todos los interesados ​​en la cadena de entrega de DevOps ubicar aplicaciones basadas en un requisito de elasticidad o previsibilidad. App Mobility Fabric reduce los costos operativos asociados a medida que las organizaciones avanzan hacia infraestructuras adaptativas mientras utilizan un enfoque de software más ágil para comprimir los tiempos de los ciclos de lanzamiento.

  • Agrupación de almacenamiento en niveles y localidad de datos

    Al mantener los conjuntos de trabajo de VM en los niveles de almacenamiento respaldados por SSD más eficaces, la plataforma Nutanix puede ofrecer E / S de alto rendimiento en todas las cargas de trabajo de aplicaciones basadas en contenedores. Los CVM de Nutanix proporcionan la localidad de datos utilizando ILM. Las lecturas se satisfacen desde la memoria o SSD; las escrituras van a SSD y luego se drenan en discos giratorios. Todas las operaciones se realizan con preferencia por los datos que provienen del almacenamiento local, en el mismo sistema físico donde se encuentra la VM que accede a él.

  • Los servicios de datos proporcionan la funcionalidad de clonación e instantánea.

    Nutanix Acropolis ofrece una variedad de niveles de servicio granular VM con copias de seguridad, recuperación eficiente ante desastres y actualizaciones no disruptivas. Estas características mejoran la disponibilidad de la aplicación al proporcionar copias de seguridad casi instantáneas consistentes en bloqueos utilizando capacidades de instantáneas. Las instantáneas también permiten que la ingeniería y el control de calidad implementen entornos de prueba de alto rendimiento rápidamente con copias clonadas completas de conjuntos de datos de producción.

  • Reducción de la complejidad operativa de la infraestructura.

    Reduzca la sobrecarga administrativa en cientos de horas por año al eliminar prácticamente la necesidad de administración de almacenamiento mediante una administración intuitiva, centralizada, centrada en VM y API REST o kits de herramientas PowerShell.

  • Conocimiento profundo del rendimiento

    Simplifique la resolución de problemas de rendimiento, resolviendo problemas en minutos a horas versus días y semanas con visibilidad detallada de extremo a extremo de las máquinas virtuales y la infraestructura de la aplicación.
Ejecutando Docker en AHV

Mejores prácticas para la instalación de Docker

La lista completa de procedimientos de instalación para Docker Engine y los componentes del ecosistema asociados está disponible en el sitio web de Docker. Recomendamos pues consultar la documentación de Docker para el flujo de trabajo de instalación, basado en yum para CentOS (distribución de Linux basada en Red Hat Enterprise Linux) que utilizamos para instalar Docker Enterprise Edition (Docker EE).

Aprovisionamiento de máquinas virtuales "dockerizadas"

Nutanix Enterprise Cloud es una plataforma de "back-end" totalmente certificado y compatible, que puede alojar máquinas virtuales que ejecutan "Docker Engine". Al usar "Docker CLI"en un cliente remoto, puede aprovisionar máquinas virtuales de una manera similar a la nube. Estas máquinas virtuales se ajustan al formato Acropolis Hipervisor (AHV), teniendo instalado, habilitado y listo para el arranque el motor Docker necesario. Luego podemos implementar contenedores en la "Máquina Virtual Dockerizeada".

Para obtener más detalles sobre cómo descargar, configurar e instalar el software requerido, consulte la información de Docker en "Nutanix Docker Volume Plugin (DVP)".

Consideraciones de almacenamiento de Docker

El rendimiento de disco de volúmenes lógicos de instantáneas en modalidad "copia en escritura" Docker, recae en los servicios del "sistema de archivos de unión" para combinar varias capas de imágenes de solo lectura, en una sola imagen. Docker luego agrega una capa de lectura y escritura después de haber creado el contenedor a partir de la imagen base. Esta estratificación hace que los contenedores sean muy livianos para correr y rápidos para crear. AUFS, btrfs, zfs, vfs, overlay2 y devicemapper son los controladores de almacenamiento backend actualmente compatibles, que proporcionan servicios de sistema de archivos de unión.

Para esta entrada en el Blog, hemos consideramos el backend de "devicemapper", ya que utiliza el módulo de aprovisionamiento delgado de devicemapper (dm-thinp) para implementar las capas. Su caso de uso determina qué controlador de almacenamiento debe elegir. Nutanix recomienda el modo "directo-lvm" de devicemapper para la mayoría de las implementaciones de producción. Este modo utiliza dispositivos de almacenamiento basados en bloque, para crear el grupo de aprovisionamiento delgado requerido. Sin embargo, dependiendo de las relaciones de lectura y escritura, los tamaños de transferencia de datos, etc., su carga de trabajo de E/S puede beneficiarse al usar uno de los controladores de almacenamiento alternativo mencionados anteriormente.


Asignar bajo demanda

A medida que se escriben nuevos datos en un contenedor respaldado por los volúmenes de aprovisionamiento delgado del backend del "devicemapper", esos datos deben tener un nuevo bloque asignado y asignado al contenedor. En la configuración "directa-lvm", el tamaño de bloque predeterminado es de 64 KB, por lo que una escritura más pequeña que eso todavía asigna un bloque de 64 KB. Podría ver un impacto en el rendimiento si sus contenedores realizan muchas escrituras pequeñas.

Procedimiento de copia en escritura

Al sobrescribir datos en un contenedor, el procedimiento de copia en escritura de mapeador de dispositivos copia los datos de la imagen (o la instantánea de la imagen) al contenedor (o la instantánea del contenedor). Este proceso tiene la misma granularidad de 64 KB que el esquema de asignación de bloques descrito anteriormente. Por ejemplo, las actualizaciones de 32 KB a un archivo de 1 GB dan como resultado la copia de un bloque de 64 KB hasta la capa del contenedor o la instantánea de esa capa. Por el contrario, con los controladores de "almacenamiento basados en el sistema de archivos" (AUFS, btrfs, ZFS), el mismo procedimiento de copia en escritura copiaría todo el archivo de 1 GB hasta la capa del contenedor.

Almacenamiento persistente para contenedores con estado

Para que un contenedor conserve datos, debe configurar un volumen de datos como parte de la especificación de tiempo de ejecución del contenedor. El volumen de datos es un directorio especialmente designado que omite el sistema de archivos de unión en uno o más contenedores.

Los volúmenes se inicializan cuando se crea un contenedor. Si la imagen base del contenedor contiene datos en el punto de montaje especificado, los datos existentes se copian en el nuevo volumen en la inicialización del volumen. Los volúmenes de datos proporcionan varias características útiles para datos persistentes o compartidos:
  • Los volúmenes de datos se pueden compartir y reutilizar entre contenedores.
  • Los cambios en un volumen de datos se realizan directamente.
  • Los cambios en un volumen de datos no se incluyen cuando actualiza una imagen.
  • Los volúmenes de datos persisten incluso si elimina el contenedor en sí.
Los volúmenes de datos están diseñados para conservar datos, independientemente del ciclo de vida del contenedor. Docker, por lo tanto, nunca elimina automáticamente los volúmenes cuando elimina un contenedor, ni recolecta basura los volúmenes a los que un contenedor ya no hace referencia.
Para integrar una implementación de Docker Engine con el "Distributed Storage Fabric (DSF)", Nutanix proporciona un complemento de controlador de volumen. Este complemento se implementa en un contenedor separado en un patrón de "sidekick" o "sidecar".

El complemento del controlador de volumen Nutanix, implementa un servidor HTTP que el "daemon o demonio" de Docker Engine puede descubrir. Este servidor expone un conjunto de "Llamadas de Procedimiento Remoto (RPC)" emitidos como solicitudes "HTTP POST" con cargas "Java Script Open Notation (JSON)". Al registrarse en "Docker Engine", el complemento atiende todas las solicitudes de otros contenedores para la creación, montaje, eliminación, etc. de volúmenes. Para crear un volumen persistente, el controlador llama al DSF y proporciona al contenedor solicitante un punto de montaje, o una ruta de escritura hecha del almacenamiento en bloque iSCSI expuesto con un "Nutanix Volume Group (VG)".

Implementación de Nutanix Volume Driver y Nutanix Docker Volume Plug-In

"Nutanix Volume Driver" recibió el estado de "Docker’s Enterprise Technology Partner (ETP)". Para usar el Nutanix Volume Driver para contenedores Docker, asegúrese de haber creado un contenedor de almacenamiento Nutanix en Prism o usando el "Nutanix Command Line Interface (nCLI)". Nutanix recomienda crear un contenedor separado para Imágenes ISOs e imágenes de Disco y ejecutar máquinas virtuales en otro contenedor.
Nutanix también ofrece un controlador de volumen basado en "Docker Volume API v2". Junto con las instrucciones de instalación y configuración, este controlador está disponible en la "tienda Docker" como "Nutanix Docker Volume Plug-In (DVP)". Puede usar el DVP con o sin el controlador de la máquina acoplable. Recomendamos usar el DVP (que tiene certificación Docker) cuando se ejecutan contenedores que requieren almacenamiento persistente en Nutanix.

Conclusión

Nutanix Enterprise Cloud y Acropolis Hipervisor proporcionan los más poderosos cimientos para las capacidades comprobadas de la pila de tecnología Docker. Nutanix agiliza y mejora tanto la configuración de la infraestructura de almacenamiento, como la implementación general. La solución Docker en Nutanix proporciona una plataforma única y distribuida que permite que las implementaciones se escalen linealmente, de forma modular, con un rendimiento predecible. Nutanix elimina la necesidad de entornos complejos de "Redes de Almacenamiento (SAN)" o "Dispositivos de Almacenamiento Conectados a la Red (NAS)".

La integración de Nutanix Docker para el almacenamiento persistente garantiza la seguridad y el aislamiento al ejecutar sus contenedores en máquinas virtuales, protegiendo su base instalada. Nutanix ahora es un objetivo reconocido para Docker Machine, y cada Máquina Virtual está habilitada con Docker Engine para la implementación inmediata de contenedores. 
Los contenedores con estado que se ejecutan en Máquinas Virtuales conservan la persistencia y movilidad de los datos, ya que el "Distributed Storage Fabric (DSF)" se convierte en la fuente de todos los volúmenes de datos de Docker. El almacenamiento persistente en el DSF permite que los volúmenes de datos existan independientemente de la especificación de tiempo de ejecución del contenedor, por lo que puede usarlos como recursos de primera clase. 

Asegurarse de que siempre acceda a los conjuntos de trabajo de Máquinas Virtuales desde los niveles de almacenamiento de mayor rendimiento, logra la mejor taza de Entradas/Salidas. Un nivel dinámico de toda la plataforma mantiene una baja latencia de Entradas/Salidas y un perfil de respuesta para sus implementaciones de contenedores de microservicios.

La gestión de máquinas virtuales anfitrionas de Docker en Prism, agiliza las instantáneas y los clones para crear entornos de prueba y control de calidad con datos de estilo de producción de forma rápida y sencilla. La Interface Gráfica de Usuario "Nutanix Prism" también proporciona descripciones generales del estado del clúster, análisis de rendimiento de la pila completa, alertas de hardware y software, utilización del almacenamiento y soporte remoto automatizado.

Juntos, Nutanix y Acropolis Hipervisor proporcionan una infraestructura invisible de "toque cero", lo que le permite aprovechar al máximo las aplicaciones comerciales críticas, al implementarlas como microservicios en contenedores a través de Máquinas Virtuales Dockerizadas. De esta manera, los departamentos de Tecnologías de la Información pasan menos tiempo en el centro de datos y más tiempo innovando para ayudar al negocio.

¿Qué sigue?

Posteriormente en otra entrada hablaremos de Nutanix Karbon. Una distribución certificada por Kubernetes de nivel empresarial que simplifica el aprovisionamiento, las operaciones y la gestión del ciclo de vida de Kubernetes, con una experiencia nativa de Kubernetes y que simplifica la implementación de un clúster de Kubernetes de alta disponibilidad, así como la operación de cargas de trabajo a escala web.