Busque en Google “nativo de la nube” y obtendrá más de 800 millones de visitas. Claramente, nativo de la nube es un término importante. y la gente no entiende lo que realmente significa. Hace un tiempo, en una conversación con alguien más "en el negocio", dije: "¡Pero no es nativo de la nube!". Ella asintió sabiamente con la cabeza. Claramente, significa algo, ya que podríamos estar de acuerdo en algunas construcciones complejas usando esa abreviatura, "nativo de la nube". Profundicemos más.
Para definir qué es el cloud nativo tenemos que empezar con una pregunta más sencilla:
¿Qué es la nube?
Se trata de desagregación
Hace casi 50 años (antes de que se formara Microsoft), los estudiantes de Harvard Bill Gates y Paul Allen escribieron un intérprete BASIC para una de las primeras microcomputadoras del mundo, la MITS Altair 8080. Pusieron todo el programa en cinta de papel (una de las primeras formas de almacenamiento) y Voló a Nuevo México para mostrarle al MITS lo que habían escrito.
Durante el descenso a Albuquerque, Allen se dio cuenta de que no tenía forma de leer la cinta de papel (necesaria para que el intérprete de BASIC pudiera cargarla en el Altair 8080). Allen rápidamente escribió un programa para leer la cinta de papel. Funcionó y el resto es historia..
Si desea saber qué significa "agregado", ese es un gran ejemplo. Todo lo necesario para ejecutar el intérprete BASIC de Gates y Allen tuvo que ser escrito por Gates y Allen, ¡incluida la rutina para leer el código de una cinta de papel en la memoria del sistema!
Avancemos rápidamente a la computación en la nube, donde el objetivo es desagregarse por completo. ¿Desagregar qué? Bien - todo. La computación está desagregada de todo lo demás, por lo que puede comprar la cantidad de computación que necesita independientemente de todo lo demás. Lo mismo ocurre con el almacenamiento y la red.
Pero eso es sólo infraestructura. La nube también desagrega el software. Mientras que Gates y Allen tuvieron que escribir cada línea de código para su aplicación, las aplicaciones en la nube hoy aprovechan los “servicios” para manejar tareas específicas. En lugar de años de codificar aplicaciones monolíticas masivas, las aplicaciones en la nube de hoy se crean con cientos de líneas de código que vinculan docenas (o cientos) de servicios en la nube.
La nube es la extensión lógica de la filosofía de componibilidad de Unix mejor articulada por David McElroy, el inventor de la tubería Unix, “Escriba programas que hagan una cosa y la hagan bien. Escribir programas para trabajar juntos”.
Esa es la esencia de la nube. Pero ¿por qué desagregar? En el nivel más simple, la desagregación aporta elasticidad y agilidad.
Elasticidad
Los recursos que requiere cualquier carga de trabajo varían con el tiempo. Por ejemplo, James Cameron Avatar superó los límites de los efectos especiales. Renderizar un solo cuadro requirió el equivalente a 3,000 vCPU en la nube durante una hora. Dado que Avatar se rodó a 48 fotogramas por segundo y duró 192 minutos, hubo más de medio millón de fotogramas para renderizar. Esto equivale a más de 1.6 millones de horas de ciclos de CPU virtuales.
La película estuvo en producción durante 12 años en total, pero como ocurre con todas las películas, gran parte de la interpretación final se produjo cerca del estreno de la película. La nube proporcionó la elasticidad Los efectos especiales de Avatar proveedor necesario para realizar el trabajo. El productor ejecutivo de efectos visuales, David Conley, señaló que no podrían haber hecho esto sin AWS.
La elasticidad se aplica a la computación, el almacenamiento, las redes y casi cualquier recurso necesario. La nube hace que sea fácil y rápido aumentar y reducir el uso según sea necesario.
Agilidad
El otro beneficio de la nube es la agilidad en todos los sentidos de la palabra. La nube permite:
- Agilidad de desarrollo debido a la arquitectura de servicios antes mencionada. Los desarrolladores incorporan una amplia gama de servicios y reducen la codificación de años y millones de líneas de código a semanas y miles de líneas.
Una nota al margen es que esta nueva “arquitectura de servicios” se beneficia del efecto de red. Cuantas más cargas de trabajo utilicen los servicios, más se motivarán los terceros a desarrollar nuevos servicios. Y cuantos más servicios haya, más se motivará a los desarrolladores a utilizar servicios de terceros. Este círculo virtuoso ha acelerado el paso de prácticas de codificación monolíticas a arquitecturas de servicios.
- Agilidad de la infraestructura, porque en lugar de comprar, instalar y administrar infraestructura, los usuarios simplemente solicitan lo que necesitan, cuando lo necesitan, a través de solicitudes simples. El término "infraestructura como código" se refiere al uso de un "código" simple para aprovisionar toda la infraestructura que necesita en minutos en lugar de semanas o meses.
- Agilidad económica, porque sólo juegas para lo que necesitas, cuando lo necesitas. Avatar no necesitó construir un enorme centro de datos SFX y administrarlo durante 12 años. En cambio, simplemente crearon lo que necesitaban cuando lo necesitaban.
Entonces, ahora que entendemos qué es la nube, podemos analizar qué se necesita para ser verdaderamente nativo de la nube.
¿Qué es Cloud Native?
La respuesta fácil es que una aplicación nativa de la nube interactúa con la nube usando nativo de la nube primitivos. Por ejemplo, una aplicación nativa de la nube llamaría directamente a los servicios de almacenamiento nativos de Amazon AWS (S3, EBS, EFS, etc.). Este principio se aplica a todos los servicios en la nube: computadora, tienda, red, etc.
Para las aplicaciones “nacidas en la nube” (es decir, diseñadas desde el primer día para ejecutarse en la nube y sólo en ella), esto es bastante fácil. Pero para las aplicaciones nacidas en un mundo local, es necesario realizar un doloroso ejercicio de refactorización. Tenga en cuenta que esto requiere que la aplicación esté completamente desagregada de toda la infraestructura: computación, almacenamiento y redes.
El segundo requisito importante para ser verdaderamente nativo de la nube es ser administrado "como código". Esto significa poder poner en marcha la aplicación con unas pocas líneas de código, a diferencia del proceso tradicional local de instalar y configurar todo manualmente durante un período de semanas.
Al igual que estar embarazada, no existe un sistema "parcialmente nativo de la nube". Una aplicación es o no nativa de la nube. Si una aplicación no se desagrega completamente y adopta la metodología "como código", pierde los beneficios de elasticidad y agilidad prometidos por la nube.
¿Existen soluciones de almacenamiento nativas en la nube?
Antes de hablar sobre las soluciones de almacenamiento nativo en la nube, repasemos las “primitivas” de la nube en lo que respecta al “almacenamiento”.
Es almacenamiento de objetos (Azure blob/AWS S3). Se trata de una capa de persistencia de datos increíblemente asequible, escalable, disponible y duradera con un rendimiento excelente, medido por el rendimiento. Su desventaja es que es una nueva interfaz que es RESTful y sólo eventualmente es consistente.
Luego tienes lo que yo llamaría el aspirante a SAN de una persona pobre, es decir, EBS en AWS y Managed Disk en Azure. Se presentan como un “disco local”, son resistentes y en su mayoría se comportan como un disco normal en un servidor de almacenamiento antiguo. Estas primitivas actúan como el equivalente de un "disco local protegido" (excepto que no están conectados a la instancia informática local). Estas primitivas tienen características de rendimiento moderadas y pueden admitir “lecturas/escrituras aleatorias”, pero son costosas.
Y, por último, tiene unidades SSD NVMe conectadas a la instancia, que se parecen más a una extensión de la DRAM en el sentido de que los datos de estas "unidades" no persisten tras los reinicios de la instancia y, sin embargo, son mucho menos costosos que la DRAM o el "disco local protegido", aunque tienen características de rendimiento entre estos dos.
Hasta la fecha, la industria del almacenamiento se ha resistido tenazmente a la nube. Los proveedores heredados (Dell, NetApp) tienen demasiado código específico de hardware (profunda dependencia de NVRAM, estrecho acoplamiento de resiliencia de datos y capas de servicios de datos) para refactorizar sus ofertas y aprovechar las primitivas nativas de la nube.
Y luego vinieron VAST y Pure, quienes también eligieron una pila de almacenamiento optimizada para hardware.
Puro almacenamiento de bloques en la nube La oferta es relevante porque utiliza primitivas nativas de la nube para brindar esos servicios de datos en bloque tan deseados por los clientes de Pure ¡Y más que triste! ¿Quién diablos ejecuta SAN en la nube? Simplemente aturde la mente. Y ya que estamos en este tema, me resulta difícil entender quién usa VMWare en la nube. ¡Esto también aturde la mente!
Entre los proveedores de almacenamiento de próxima generación, en realidad es Weka.io el que impresiona. Tienen una arquitectura "nativa de la nube" y aprovechan el almacenamiento de objetos en la nube como capa de resiliencia. Ahora bien, si tan solo no tuvieran la reputación de ser un jugador de nicho de HPC y ser un “Ferrari de cristal”…
Entonces, como CTO de Qumulo, ¿qué tengo que decir sobre la oferta de nube de Qumulo?
Manténgase en sintonía.
Marquen la fecha en sus calendarios; Jueves 9 de noviembre de 2023 y prepárate para dejarte boquiabierto 🙂