En este podcast, analizamos los desafíos de almacenamiento que surgen con las necesidades en constante evolución de las aplicaciones en contenedores en un entorno de nube híbrida.
Hablamos de la tendencia de los microservicios y la necesidad de agilidad y portabilidad de las aplicaciones y el almacenamiento que requieren. Eso significa almacenamiento nativo de contenedor persistente y los tipos de servicios de almacenamiento avanzado (instantáneas, replicación, etc.) que requieren las aplicaciones empresariales.
Grant Caley analiza la necesidad de almacenamiento nativo de contenedores y almacenamiento de edificios en Infraestructura como código.
cabeza de publicidad: ¿Qué desafíos enfrenta el almacenamiento con el auge del mundo de los microservicios?
Kaley: Es interesante porque los microservicios simplifican la aplicación en términos de desarrollo y escala cuando es necesario. También abren potencialmente la portabilidad de las aplicaciones a través de una nube híbrida.
Realmente es una forma diferente de desarrollar y creo que si lo mira desde una perspectiva de almacenamiento, obviamente escalar es un desafío e históricamente siempre hemos tenido cosas como una máquina virtual, almacenamiento adjunto o tal vez almacenamiento compartido provisto de recursos de almacenamiento, muy tradicional. .
Con los microservicios, esto debe ser impulsado por el desarrollador, ya que es la persona que adjunta el almacenamiento y, en consecuencia, [should be] fácil de hacer, pero también debe ser escalable para que pueda lanzar nuevos pods, nodos, etc. y tener la memoria disponible a medida que escala o como un recurso compartido para ese microservicio.
Eso es un desafío. Creo que el segundo desafío es la portabilidad del almacenamiento. Los microservicios están diseñados para ser livianos y portátiles en todas las distribuciones. Realmente son infraestructura como código. Implementan la misma aplicación en OpenShift, AKS, GKS, Kubernetes y eso realmente agrega portabilidad de aplicaciones entre distribuciones.
Y la portabilidad funciona bien cuando su microservicio no tiene estado, pero si desea crear aplicaciones de misión crítica, necesita un almacenamiento de datos persistente debajo. Entonces, ¿cómo implementa esto en las instalaciones o como un recurso compartido? ¿Cómo hace que estos datos sean igualmente transferibles al microservicio, de un módulo a otro, de un clúster a otro, pero también a través de distribuciones de nube híbrida?
Y luego creo que lo último que mencioné fue la simplicidad. ¿Cómo estandariza las operaciones de almacenamiento en los microservicios? ¿Cómo utiliza funciones de almacenamiento avanzadas como instantáneas, clonación, replicación, etc.? ¿Y cómo integra la protección de datos en una aplicación potencialmente compleja basada en docenas o incluso cientos de microservicios?
Coordinación de implementación, respaldo, DR [disaster recovery] Aplicaciones cruzadas, locales y en la nube, e incluso tipos de distribución cruzada: estos son los desafíos reales que el almacenamiento debe abordar para el mundo de los microservicios y la forma en que creamos aplicaciones.
cabeza de publicidad: ¿Cuáles son las soluciones para aprovisionar almacenamiento para operaciones basadas en microservicios?
Kaley: El primer nivel es que las personas pueden estar familiarizadas con el término CSI o interfaz de almacenamiento de contenedores. Básicamente, para un microservicio, trae el aprovisionamiento de almacenamiento de forma nativa al entorno del contenedor.
Esta interfaz CSI debe ofrecer la posibilidad de almacenamiento persistente, diferentes clases de almacenamiento, según niveles de rendimiento, niveles de protección de datos, [and] También debe ofrecer protección de datos, copia de seguridad, opciones de replicación, etc. Lo que es más importante, puede estandarizar su implementación de almacenamiento en diferentes distribuciones de Kubernetes. Debería ser fácil de manejar y manejable para los propios desarrolladores.
Así que eso es lo primero que la memoria necesita entregar. Tiene que entregar esta interfaz al mundo de los microservicios para estandarizarla.
La segunda cosa en la que creo que realmente debe pensar es que las ofertas de almacenamiento disponibles para los microservicios deben estar disponibles de manera constante, sin importar dónde cree ese microservicio.
Por lo tanto, debería poder ofrecer una gestión de datos estandarizada en las instalaciones de su centro de datos, por ejemplo, a través de OpenShift y Kubernetes, pero también debería poder ofrecer una oferta de almacenamiento persistente estandarizado a través de AWS, Azure y Google, por lo que realmente es un híbrido: Oferta en la nube.
Esto es realmente importante porque significa que no tiene que reinventar la rueda, ya sea que esté creando microservicios locales para producción o en la nube para desarrollo, o viceversa.
Esa debería ser una oferta estándar de que el almacenamiento debería estar disponible de manera constante en estos diferentes entornos.
Realmente, también debe poder tener las herramientas para orquestar el almacenamiento en la nube híbrida, en las instalaciones y en la nube pública. Debería poder orquestar la implementación, la copia de seguridad y la recuperación ante desastres independientemente de la distribución de Kubernetes que elija integrar.
Lo que es más importante, estas herramientas deben tener en cuenta los recursos.
Entonces, los microservicios tienen que ver con los recursos que se reúnen para crear una aplicación. Las herramientas que deben estar disponibles para conectar la memoria a la aplicación deben ser totalmente conscientes de los recursos y, en última instancia, permitir la portabilidad de las aplicaciones entre distribuciones, brindándole la capacidad no solo de agregar memoria persistente, sino también de agregar esa memoria y llevar los datos a cualquier lugar para implementar esto. aplicación de microservicios.
¿Cómo pueden Microservicios y Kubernetes abstraer la entrega de aplicaciones a cualquier plataforma y convertirla realmente en infraestructura como código?
Tener la capacidad de, por ejemplo, crear una aplicación en AWS y luego incorporarla a Google, eso es realmente importante, y puede hacerlo con microservicios, pero lo que es difícil y lo que debe adjuntarse es la capacidad de hacer eso también Retirar persistente datos con esta infraestructura como código cuando los mueve de una distribución a otra.
Pudimos abstraer el cálculo, y los microservicios y Kubernetes ya lo hacen. Puede ejecutar las mismas aplicaciones en cualquier distribución: OpenShift, EKS, GKS, etc., puede ejecutarlas en lo que hay debajo, bare metal, virtualizado o una plataforma como servicio, realmente no importa, pero el componente de almacenamiento siempre ha sido la parte más difícil.
¿Cómo se crea la misma abstracción para el almacenamiento de modo que se pueda arrastrar y soltar de manera efectiva como infraestructura como código en cualquier distribución que desee conectar?
La respuesta es que Kubernetes realiza esta virtualización o abstracción del almacenamiento por sí mismo.
Para poder aprovisionar almacenamiento definido por software de forma nativa en Kubernetes, de modo que cuando necesite más almacenamiento, Kubernetes escale ese almacenamiento por usted, de modo que Kubernetes se convierta en el motor de aprovisionamiento de escalado automático, pero el almacenamiento en sí está definido por software como un contenedor y como un servicio que se ejecuta en Kubernetes.
Y esa escalabilidad, creo, es absolutamente fundamental para hacer que los microservicios del futuro sean realmente portátiles en un mundo de nube híbrida, de modo que no solo la potencia informática sea portátil como infraestructura como código, sino que el almacenamiento también se proporcione como software. almacenamiento definido dentro de esta pila de Kubernetes y también conserva esta portabilidad.
Así que creo que la verdadera clave para el futuro es poder hacer esto y poder hacerlo hoy. No queremos esperar a que el futuro brinde algunas de estas excelentes cosas, pero lo que realmente se está abriendo es una portabilidad en torno a los microservicios que abarca no solo el cómputo, sino también el almacenamiento de datos persistentes bloqueado debajo de ese cómputo.