¿Qué es Cloud Native?
Definir qué es cloud native, cloud nativo en español, no es tarea fácil ya que en la actualidad el término se está usando en contextos muy diversos. Pero, a grandes rasgos, el cloud native es un nuevo método de desarrollo de software que, junto con un conjunto de tecnologías, herramientas y procesos, transforman la forma en la que se pueden construir, implementar y gestionar las aplicaciones.
Características del Cloud Native
Entre las características básicas de las aplicaciones cloud native se incluyen las siguientes:
El código se empaqueta como contenedor
Diseñado como colecciones de microservicios
Los desarrolladores y las operaciones de TI trabajan juntos en un entorno ágil y estrechamente integrado
Implementado y gestionado en una infraestructura elástica de cloud
Asignación de recursos de infraestructura automatizada y basada en políticas
Ventajas del sistema Cloud Native para empresas
Si es una de esas empresas que se están preguntando qué es cloud native y cómo empezar el viaje hacia este tipo de arquitectura, lea atentamente los siguientes puntos.
Las empresas que se embarcan en un viaje hacia lo "nativo cloud" están adoptando contenedores y Kubernetes, junto con diferentes tecnologías comerciales y de código abierto de un amplio ecosistema cloud nativo.
Desarrollo de aplicaciones más rápido y mayor agilidad empresarial
Las organizaciones que se decantan por la arquitectura cloud native están adoptando contenedores y Kubernetes, junto con diferentes tecnologías comerciales y de código abierto de un amplio ecosistema cloud native en expansión.
Los contenedores y las tecnologías nativas cloud permiten a las empresas acelerar el desarrollo de aplicaciones, actualizar las aplicaciones sin interrupciones, escalarlas de manera eficiente y transferirlas fácilmente a diferentes entornos. Además, estas funcionalidades se traducen en una mayor agilidad de negocio y un aumento de las ventajas competitivas.
Resolución de problemas empresariales críticos con Cloud Native Containers
Los contenedores resuelven algunos problemas críticos para las empresas: libertad para la ejecución en cualquier lugar, un paquete de software sólido para desarrolladores, actualizaciones de servicios, escalabilidad, disponibilidad y eficiencia de recursos en un paquete independiente de proveedor.
Gestión eficiente de infraestructuras con Kubernetes
Kubernetes proporciona una capa de infraestructura para que el equipo de TI pueda operar a escala de forma programática y repetible. Dado que Kubernetes admite implantaciones en nubes públicas y locales, proporciona un modelo operativo común en todos los entornos. Esto convierte a Kubernetes en una plataforma ideal para empresas que operan tanto en entornos cloud native como en entornos empresariales tradicionales.
Nutanix y Red Hat respaldan la ejecución de las aplicaciones de datos más importantes
Arquitectura Cloud Native
La arquitectura cloud native utiliza contenedores y Kubernetes para construir aplicaciones como conjuntos de piezas más pequeñas y combinables, que se escalan de manera eficiente, se actualizan de manera ininterrumpida y migran sin problemas a otros entornos. Es una tecnología rentable, con una mayor seguridad y una automatización más flexible.
El stack de Kubernetes on-premise
Vamos a explorar las diferentes capas del stack de Kubernetes on-premise, desde la infraestructura sobre la que se ejecuta Kubernetes hasta los servicios que se ejecutan sobre Kubernetes y que los desarrolladores pueden aprovechar para acelerar la entrega de aplicaciones. Tenga en cuenta que algunos componentes se pueden incluir en varias partes del stack. Por ejemplo, una distribución de Kubernetes puede incluir un registro de contenedores como Harbor o Quay. Como alternativa, se puede ofrecer un registro de contenedores como servicio alojado o administrado para su uso con cualquier distribución.
Plataforma de procesamiento
Kubernetes es muy flexible en cuanto a dónde se puede implementar, gracias a que la innovación está ampliando las opciones de cómo y dónde se puede operar. Por lo general, Kubernetes requiere un mínimo de 3 nodos con conectividad de red completa entre ellos y almacenamiento conectado. Hoy en día, Kubernetes se ejecuta más comúnmente sobre una infraestructura virtual como VMware. Los equipos físicos y la HCI son otras dos opciones comunes.
Las capacidades adicionales pueden facilitar el aprovisionamiento y el funcionamiento de un clúster Kubernetes. Las infraestructuras controladas mediante API (por ejemplo, Cluster API, Terraform, etc.) facilitan el aprovisionamiento y la conexión de nuevos nodos. Los hipervisores personalizados pueden ofrecer aislamiento de la carga de trabajo para conectar los agujeros de seguridad en los contenedores. Un equilibrador de carga fuera del clúster de Kubernetes es útil para hacer que las cargas de trabajo estén disponibles y reubicarlas y escalarlas dinámicamente. Algunas cargas de trabajo pueden beneficiarse de hardware personalizado, como GPUs o TPUs.
Distribuciones de Kubernetes
Desde el crecimiento explosivo de Kubernetes tras su lanzamiento en 2015, existen más de 100 distribuciones de Kubernetes y plataformas alojadas de gigantes tecnológicos y startups por igual. Estas empresas toman el código central de Kubernetes y lo combinan con otros proyectos como un stack de redes, herramientas de gestión de clústeres, registro, supervisión, etc., para generar una distribución.
Servicios de contenedores
Un entorno útil de Kubernetes requiere servicios de infraestructura adicionales más allá de Kubernetes. A veces se incluyen en las distribuciones o se añaden como servicios independientes, e incluyen algunos elementos básicos como un registro de contenedores, Ingress, equilibrador de carga, almacenes secretos o gestor de certificados, por nombrar algunos.
Según las muchas empresas que construyen e implementan aplicaciones en Kubernetes, hay muchos servicios centrales de los que dependen que también se ejecutan normalmente en Kubernetes. Algunos ejemplos son las bases de datos (por ejemplo, Redis, Postgres), Pub Sub (Kafka), indexación (ElasticSearch), servicios de CI/CD (Gitlab, Jenkins) y almacenamiento (Portworx, MayaData, Minio, Red Hat).
Muchas empresas han desarrollado productos que gestionarán o darán soporte a estas aplicaciones cloud native que se ejecutan en la distribución de Kubernetes elegida por el cliente. Lo más notable es probablemente Azure Arc Data Services de Microsoft, que proporciona Postgres y MS SQL como servicios gestionados en entornos de clientes, pero hay muchos otros, como Confluent for Kafka, Crunchy Data for Postgres, Redis Enterprise for Redis, Percona, Elasticsearch, Minio, Mayadata, etc.
Contenedores
Los contenedores son la unidad atómica del software nativo cloud. Un contenedor comprende un fragmento de código empaquetado con todas sus dependencias (binarios, bibliotecas, etc.) y se ejecuta como proceso aislado. Esto se traduce en un nuevo nivel de abstracción. Al igual que una máquina virtual (VM) abstrae los recursos de procesamiento del hardware subyacente, un contenedor abstrae una aplicación del sistema operativo subyacente.
Los contenedores se diferencian de las máquinas virtuales en varios aspectos importantes. Son significativamente más pequeños en cuanto a recursos, más rápidos de poner en marcha y mucho más fáciles de transportar entre entornos cloud. A diferencia de las máquinas virtuales, son de naturaleza efímera.
Los contenedores allanan el camino para la arquitectura de software de microservicios. Aunque las aplicaciones tradicionales son de naturaleza monolítica, las aplicaciones basadas en microservicios se construyen como conjuntos de piezas (servicios) más pequeñas combinables que pueden escalarse independientemente y permitir actualizaciones sin interrupciones. Un servicio comprende uno o más contenedores que realizan una función común.
Las aplicaciones basadas en contenedores/microservicios permiten prácticas de desarrollo de software optimizadas y aceleradas que requieren una integración y coordinación más estrictas entre los desarrolladores y las operaciones de TI, conocidas como DevOps.
Kubernetes
Debido a que las aplicaciones contenerizadas se prestan a entornos distribuidos y utilizan recursos de procesamiento, de almacenamiento y de red de manera diferente a las aplicaciones tradicionales, requieren una capa de infraestructura dedicada a orquestar cargas de trabajo contenerizadas.
Kubernetes se ha erigido como el organizador de contenedores dominante, y a menudo se lo considera el sistema operativo de la cloud. Es una plataforma portátil, extensible y de código abierto para la gestión de cargas de trabajo y servicios en contenedores, que facilita tanto la configuración declarativa como la automatización.
Específicamente, Kubernetes:
asigna contenedores a equipos (programación)
arranca los contenedores especificados a través del tiempo de ejecución del contenedor
se ocupa de las actualizaciones, las reversiones y la naturaleza constantemente cambiante del sistema
responde a fallos (caídas del contenedor, etc.)
crea recursos de clúster como descubrimiento de servicios, redes inter-VM, entrada/salida de clústeres, etc.
Kubernetes está diseñado para ofrecer escalabilidad, disponibilidad, seguridad y portabilidad. Optimiza el coste de la infraestructura, distribuyendo las cargas de trabajo entre los recursos disponibles. Todos los componentes de un clúster Kubernetes también pueden configurarse para una alta disponibilidad.
La funcionalidad de Kubernetes evoluciona rápidamente como resultado de contribuciones continuas de su activa comunidad global, permitiendo ahora la existencia de una amplia variedad de distribuciones de Kubernetes disponibles para los usuarios. Al tiempo que los usuarios están mejor servidos por las distribuciones certificadas por CNCF (la conformidad permite la interoperabilidad), la automatización inteligente en torno a las características de gestión del ciclo de vida de Kubernetes, junto con la fácil integración de las capacidades de almacenamiento, redes, seguridad y supervisión, son fundamentales para los entornos nativos cloud de nivel de producción.
Desafíos de las tecnologías y aplicaciones Cloud Native
Las tecnologías nativas cloud son la nueva moneda de cambio para la agilidad y la innovación empresarial, pero su configuración, despliegue y gestión suponen un desafío en cualquier tipo de empresa. En primer lugar, Kubernetes y su ecosistema de tecnologías nativas cloud se encuentran en la base y evolucionan rápidamente. Además, la infraestructura tradicional no está diseñada para la forma en que Kubernetes y los contenedores utilizan los recursos de TI. Este supone un impedimento importante para los desarrolladores de software, que a menudo requieren recursos bajo demanda, además de servicios fáciles de usar para sus aplicaciones nativas cloud. Por último, todas las empresas terminan empleando una mezcla de entornos Kubernetes locales y públicos basados en la cloud, pero beneficiarse de la flexibilidad de la multicloud depende de poder gestionar y supervisar eficazmente todas las implementaciones.
Buenas prácticas de un sistema Cloud Native
Ahora que conoce qué es Cloud Native, es importante tener en cuenta que construir un stack de Kubernetes empresarial en el centro de datos es una tarea importante para los equipos de operaciones de TI. Es esencial ejecutar Kubernetes y las aplicaciones contenerizadas en una infraestructura resiliente y capaz de escalar con capacidad de respuesta para permitir un sistema dinámico y distribuido.
La infraestructura hiperconvergente (HCI) de Nutanix es la base de infraestructura ideal para las cargas de trabajo nativas cloud que se ejecutan en Kubernetes a escala. Nutanix ofrece una mejor resiliencia tanto para los componentes de la plataforma Kubernetes como para los datos de las aplicaciones, así como una escalabilidad superior a la infraestructura física. Nutanix también es capaz de simplificar la gestión del ciclo de vida de la infraestructura y de optimizar el almacenamiento persistente para los contenedores con estado, eliminando algunos de los mayores desafíos a los que se enfrentan las empresas a la hora de desplegar y gestionar la infraestructura cloud native.