En este podcast, analizamos los desafíos para el almacenamiento inherentes a los requisitos muy fluidos de las aplicaciones en contenedores en un entorno de nube híbrida.
Hablamos del impulso hacia 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 avanzados (instantáneas, replicación, etc.) que requieren las aplicaciones empresariales.
Grant Caley habla sobre la necesidad de almacenamiento nativo de contenedores y almacenamiento de edificios en infraestructura como código.
Anuncio: ¿Cuáles son los desafíos que presenta para el almacenamiento el auge del mundo de los microservicios?
Caley: Es interesante porque los microservicios brindan simplicidad a las aplicaciones en términos de desarrollo, escala según demanda. 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 cuando los mira desde una perspectiva de almacenamiento, la escala es obviamente un desafío, y en el pasado siempre implementamos máquinas virtuales, almacenamiento adjunto, tal vez un compartido. recurso de almacenamiento – muy tradicional.
Con los microservicios, esto debe ser impulsado por el desarrollador, porque es la persona que conecta el almacenamiento y, en consecuencia, [should be] simple de hacer, pero también debe ser escalable para que pueda lanzar nuevos pods, nodos, etc. y tener el almacenamiento disponible a medida que escala o como un recurso compartido para ese microservicio.
Ese es un desafío. Creo que el segundo desafío tiene que ver con la portabilidad del almacenamiento. Los microservicios están diseñados para ser simples y portátiles entre distribuciones. Realmente son infraestructura como código. Implementa la misma aplicación en OpenShift, AKS, GKS, Kubernetes y eso realmente contribuye a la portabilidad de las aplicaciones entre distribuciones.
Y la portabilidad funciona bien cuando su microservicio no tiene estado, pero cuando desea crear aplicaciones de misión crítica, necesita un almacenamiento de datos persistente debajo de eso. Entonces, ¿cómo entrega esto en las instalaciones o como un recurso compartido? Del mismo modo, ¿cómo hace que esos datos sean portátiles para el 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 aprovecha las funciones de almacenamiento avanzadas, como instantáneas, clonación, replicación, etc.? ¿Y cómo integra la protección de datos en lo que puede ser una aplicación compleja basada en decenas o incluso cientos de microservicios?
Coordinando el aprovisionamiento, el respaldo, el DR [disaster recovery] en todas las aplicaciones, en las instalaciones y en la nube, e incluso en todos los tipos de distribución: estos son los desafíos reales que debe enfrentar el almacenamiento para el mundo de los microservicios y cómo creamos aplicaciones.
Anuncio: ¿Qué soluciones existen para entregar almacenamiento para operaciones basadas en microservicios?
Caley: El primer nivel es que las personas tal vez estén familiarizadas con el término CSI o interfaz de almacenamiento de contenedores. Básicamente, lo que hace para un microservicio es llevar el aprovisionamiento de almacenamiento de forma nativa al entorno del contenedor.
Esa interfaz CSI debería ofrecer la capacidad de proporcionar almacenamiento persistente, diferentes clases de almacenamiento, por niveles de rendimiento, niveles de protección de datos, [and] también debería ofrecer protección de datos, copia de seguridad, opciones de replicación, etc. Y la clave es que eso debería permitirle estandarizar su aprovisionamiento de almacenamiento en diferentes distribuciones de Kubernetes. Debería ser fácil de manejar y manejable para los propios desarrolladores.
Entonces, eso es lo primero que creo que el almacenamiento tiene que ofrecer. Tiene que entregar esa interfaz al mundo de los microservicios para estandarizar eso.
La segunda cosa en la que creo que realmente debe pensar es que las ofertas de almacenamiento que están disponibles para los microservicios deben entregarse de manera consistente, independientemente de 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, a través de OpenShift, Kubernetes, por ejemplo, pero igualmente debería tener la capacidad de ofrecer una oferta persistente de almacenamiento estandarizado también en AWS, Azure y Google, así que realmente una oferta de nube híbrida.
Eso es realmente importante porque significa que no tiene que reinventar la rueda, aunque esté creando microservicios en las instalaciones, tal vez 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 esos diferentes entornos.
Realmente, también necesita 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 el aprovisionamiento, su copia de seguridad, su recuperación ante desastres, independientemente de la distribución de Kubernetes que elija incorporar.
Y, lo que es más importante, esas herramientas deben tener en cuenta los recursos.
Entonces, los microservicios tienen que ver con los recursos que se juntan para construir una aplicación. Las herramientas que deben estar disponibles para conectar el almacenamiento a la aplicación deben ser totalmente conscientes de los recursos y, en última instancia, deben permitir la portabilidad de la aplicación entre distribuciones, de modo que tenga la capacidad no solo de adjuntar almacenamiento persistente, sino también de llevar ese almacenamiento y datos donde usted decida. para implementar esa aplicación de microservicios.
El futuro de cómo, y entregarlo hoy es absolutamente clave, ¿cómo pueden los microservicios y Kubernetes abstraer la entrega de aplicaciones en cualquier plataforma y convertirla en una verdadera infraestructura como código?
Tener la capacidad, por ejemplo, de crear una aplicación en AWS y luego arrastrarla a Google, eso es realmente clave y puede hacerlo con microservicios, pero lo que es difícil y lo que debe adjuntarse es la capacidad de retirar también el persistente datos con esa infraestructura como código a medida que los arrastra de una distribución a otra.
Hemos podido abstraer la computación y eso es lo que ya hacen los microservicios y Kubernetes. Puede ejecutar las mismas aplicaciones en cualquier distribución que desee: OpenShift, EKS, GKS, etc., puede ejecutarlas encima de lo que sea que se encuentre debajo, sin sistema operativo, virtualizado o una plataforma como servicio, no lo hace. realmente importa, pero el componente de almacenamiento siempre ha sido la pieza más difícil de hacer.
¿Cómo crea la misma abstracción para el almacenamiento de modo que pueda arrastrarse y usarse de manera efectiva como infraestructura como código en cualquier distribución a la que desee conectarse?
La respuesta a eso es hacer que Kubernetes haga esa virtualización o abstracción del almacenamiento por sí mismo.
Por lo tanto, para poder implementar almacenamiento definido por software de forma nativa dentro de Kubernetes, de modo que si necesita más almacenamiento, Kubernetes escale ese almacenamiento por usted, de modo que Kubernetes se convierta en el motor de aprovisionamiento y escalado automático, pero el almacenamiento en sí mismo está definido por software. como un contenedor y un servicio que se ejecuta dentro de Kubernetes.
Y esa escalabilidad es absolutamente clave, creo, para hacer que los microservicios del futuro sean realmente portátiles en un mundo de nube híbrida, de modo que no sea solo el cómputo lo que es portátil como infraestructura como código, sino también el almacenamiento que se implementa como software. almacenamiento definido dentro de esa pila de Kubernetes, y también gana esa portabilidad.
Entonces, creo que realmente la clave para el futuro es poder hacer eso y poder hacerlo hoy. No queremos esperar al futuro para implementar algunas de estas grandes cosas, pero realmente lo que abrirá es una portabilidad en torno a los microservicios que incluye no solo la computación, sino también el almacenamiento de datos persistente que se envuelve debajo de esa computación. .