Por Julio César Castrejón, Country Manager para México de Pure Storage
Los contenedores y Kubernetes son la fuerza impulsora detrás de cómo la industria está reinventando la forma en que creamos y ejecutamos aplicaciones, impulsando la eficiencia de TI empresarial. Los contenedores son una unidad estándar de software que empaqueta el código y todas sus dependencias para que una aplicación se ejecute de forma rápida y confiable de un entorno informático a otro.
Los contenedores facilitan la implementación de aplicaciones basadas en la nube porque contienen toda la información necesaria para ejecutarlas en paquetes manejables. En septiembre de 2020, anunciamos en Pure Storage la adquisición de Portworx®, la plataforma de servicios de datos de Kubernetes líder en la industria por aproximadamente $370 millones de dólares, por lo que podemos decir con seguridad que reconocemos la importancia de la tecnología. Echemos un vistazo a cómo llegamos aquí.
Importancia de la centralidad de datos
Los datos están en el corazón de las empresas del mañana. Las organizaciones digitales líderes están utilizando una nueva pila de tecnología “nativa de la nube” para procesar estos datos en valor y conocimiento. Las aplicaciones nativas de la nube están diseñadas específicamente para operar de manera similar a la nube, ya sea en la nube pública o local, desde el primer día. Se pueden implementar y reparar más rápido, y se pueden mover fácilmente a diferentes entornos. Las aplicaciones nativas de la nube generalmente se componen de microservicios (más sobre esto más adelante) y se empaquetan en contenedores.
Esta nueva pila nativa de la nube incluye un nuevo conjunto de aplicaciones: aplicaciones que analizan la transmisión de datos en tiempo real, aplicaciones que indexan cantidades masivas de datos para la búsqueda y aplicaciones que entrenan algoritmos de aprendizaje automático en conjuntos de datos cada vez más grandes, sin duda este nativo de la nube. La revolución está impulsada por una combinación de contenedores y Kubernetes.
Los contenedores hacen que sea eficiente ejecutar aplicaciones desagregadas a altos grados de escala y fluidez con una sobrecarga mínima, y Kubernetes crea la orquestación impulsada por la máquina que puede hacer malabarismos con todos estos fragmentos de aplicación y ensamblarlos en una aplicación compuesta según sea necesario.
La adopción de contenedores habla por sí sola
Las tasas de adopción de esta nueva pila nativa de la nube han sido asombrosas. De acuerdo con una investigación de 451 Group, el 95% de las nuevas aplicaciones se desarrollan en contenedores. Las empresas están evolucionando sus estrategias de nube para ser multinube, y los contenedores también son clave para esto.
Gartner por su parte informa que el 81% de las empresas ya son multinube y trabajan con más de dos proveedores de la nube. Gartner también predice que el 85% de todas las empresas globales utilizarán contenedores en la producción para 2025, un gran aumento desde solo el 35% en 2019.
Todavía es un mercado temprano con un enorme potencial de crecimiento, por lo que es intrínsecamente difícil de pronosticar, pero IDC predice que el mercado comercial de software de infraestructura de contenedores por sí solo superará los 1.500 millones de dólares para 2022, y las empresas están prestando atención.
Microservicios y contenedores: una combinación perfecta
En pocas palabras, los microservicios son las funciones individuales dentro de una aplicación y forman la base de un nuevo enfoque arquitectónico para crear aplicaciones. Los microservicios permiten a los equipos de TI crear y ejecutar más fácilmente las aplicaciones que sus usuarios desean y necesitan para adelantarse a la competencia.
Muchas de las aplicaciones empresariales y de consumo más grandes de la actualidad se ejecutan en microservicios, lo que demuestra que no es solo una tendencia para las organizaciones pequeñas, sino también para las más grandes y complejas. De hecho, cuanto más grande es la organización, más beneficios se obtienen al adoptar microservicios porque los equipos a menudo se encuentran dispersos con una comunicación directa limitada.
¿Cuándo fue la última vez que recibió una notificación de mantenimiento de su servicio de transmisión favorito para informarle que no podrá acceder a los servicios? No sucede. Nunca es un buen momento para actualizar estos servicios porque siempre hay alguien mirando un programa nuevo en exceso.
El principio de los microservicios establece que debe dividir una aplicación en partes más pequeñas que se comunican a través de API, donde cada parte se puede actualizar independientemente de otras partes. Como resultado, si un servicio de transmisión necesita actualizar su funcionalidad de restablecimiento de contraseña, no es necesario que millones de usuarios estén desconectados. Esta función es un microservicio diferente que se puede actualizar de forma independiente. Esto da como resultado desarrolladores felices y usuarios felices.
Los microservicios llegaron para quedarse y respaldarán las aplicaciones del mañana. ¿En qué tipo de entorno debería ejecutarlos? Los contenedores son el bloque de construcción perfecto para los microservicios. Presentan un entorno ligero y coherente para microservicios, que puede seguir la aplicación desde el escritorio de los desarrolladores hasta las pruebas y la implementación final. Además, los contenedores pueden ejecutarse en máquinas físicas o virtuales y se inician en segundos o incluso milisegundos, lo que es más rápido que las VM.
Empaquetar aplicaciones con sus dependencias
Tradicionalmente, los paquetes de software han incluido todo el código necesario para ejecutar la aplicación en un sistema operativo en particular, como Windows o Linux. Sin embargo, necesita más que solo código de aplicación para ejecutar una aplicación, también necesita otras aplicaciones. Por ejemplo, una aplicación para buscar precios de acciones podría usar una biblioteca para convertir nombres de empresas en símbolos de cotización y viceversa.
Esta funcionalidad es genérica y no tiene valor agregado, pero sigue siendo importante permitir que un usuario escriba “Apple” y obtenga las acciones “AAPL”. La biblioteca es un ejemplo de dependencia. Sin que TI lo sepa, cualquier aplicación puede tener cientos de estos tipos de dependencias.
Una de las principales razones por las que los contenedores se volvieron tan populares es que proporcionaron un mecanismo y formato para empaquetar el código de la aplicación, con sus dependencias, de una manera que facilitó la ejecución de una aplicación en diferentes entornos.
Esto resolvió un gran problema para los desarrolladores que estaban constantemente luchando contra los problemas de compatibilidad del entorno entre sus portátiles de desarrollo, entornos de prueba y producción. Al utilizar contenedores para empaquetar sus aplicaciones, podían “codificar una vez y ejecutarse en cualquier lugar”, acelerando drásticamente la entrega de aplicaciones.
No todos los servicios de contenedores son iguales
En cuanto a los desafíos, la primera generación de aplicaciones nativas de la nube se diseñó para no tener estado, utilizando contenedores que funcionaban con las aplicaciones pero que no necesitaban almacenar ningún dato persistente en volúmenes asociados. A medida que evoluciona el uso de contenedores, los desarrolladores crean cada vez más aplicaciones con estado dentro de contenedores: aplicaciones que necesitan almacenar datos en un volumen que debe conservarse y conservarse.
Aquí es donde el mundo del almacenamiento se vuelve un desafío. La flexibilidad y la apertura de los contenedores se convierten en obstáculos y cuellos de botella en la capa de almacenamiento, y las capacidades de almacenamiento simples que hemos estado dando por sentadas durante años en la pila de aplicaciones tradicionales (alta disponibilidad, recuperación de desastres, respaldo, cifrado) se convierten en desafíos en el mundo contenedor. Lo que es peor, lo que sucede a menudo es que cada aplicación diseña su propia estrategia de almacenamiento, lo que hace imposible impulsar el cumplimiento de estándares y datos en toda la organización.
Es por eso por lo que, como práctica recomendada, recomendamos elegir una solución que brinde los servicios de datos nativos de Kubernetes que requieren las aplicaciones nativas y tradicionales de la nube (ya que esas aplicaciones tradicionales no desaparecerán pronto). Esto significa entregar servicios de almacenamiento de bloques, archivos y objetos, en múltiples clases de rendimiento, aprovisionados a pedido según lo requiera Kubernetes.
Significa proporcionar acceso instantáneo a los datos, protección frente a todo tipo de fallas, la capacidad de movilizar datos entre nubes e incluso hacia / desde el borde, y seguridad sólida sin importar a dónde viaje una aplicación. Si las organizaciones hacen esto, verán por sí mismas por qué Kubernetes se ha convertido en la salsa especial no tan secreta para las organizaciones modernas.