Conclusiones clave
- Los ecosistemas de código abierto son componibles y eso aumenta el valor del ecosistema.
- Las interfaces componibles ayudan a los proyectos a enviar características y funcionalidades más rápido para crear mejores productos más alineados con las necesidades del usuario final.
- Los ecosistemas componibles generan nuevas oportunidades comerciales a partir de brechas que se pueden conectar y aumentan la base de usuarios, la cobertura de casos de uso y el tamaño potencial del mercado.
- La compatibilidad no se trata solo del software, sino que también incluye las ideas, las interfaces, las personas y las herramientas.
- CNI, CSI y eBPF son ejemplos de software componible.
Mirando el panorama nativo de la nube, está claro que hay mucho valor comercial tanto en la nube nativa como en el código abierto. En la actualidad, abarca empresas con una capitalización de mercado combinada de 14,3 billones de dólares y una financiación de 29,500 millones de dólares. Sin embargo, mirando desde afuera, puede ser difícil entender cómo algo que es “gratis” puede generar tanto valor. Ser «gratuito» y de código abierto no obstaculiza el valor de estos proyectos para las empresas y los usuarios finales, sino que lo desbloquea. La componibilidad de los ecosistemas de código abierto permite que la innovación y el valor de todo el ecosistema se compongan sobre sí mismos.
Componibilidad como interés compuesto
En el departamento de finanzas dicen que el interés compuesto es la octava maravilla del mundo porque tu dinero hace dinero. En software, TI y código abierto, la componibilidad es la primera maravilla del mundo porque permite que la innovación se base en la innovación. Esto es lo que queremos decir cuando decimos que estamos parados sobre los hombros de gigantes.
Los proyectos y productos componibles se pueden apilar, recombinar, reutilizar y construir para satisfacer las necesidades únicas de cada cliente. En la nube nativa, esta componibilidad permite a los desarrolladores iterar y enviar la funcionalidad rápidamente, creando así un valor compuesto para las empresas, desde los servicios financieros hasta la atención médica, las telecomunicaciones y el transporte. La compra de ecosistemas abiertos y componibles, como los nativos de la nube, puede conducir a mejores productos, mercados más grandes y mejores resultados comerciales tanto para los proveedores como para los usuarios finales porque son componibles.
Compensabilidad desglosada
Antes de sumergirnos en cómo la composición nos ayuda a lograr estos resultados comerciales, demos un paso atrás y veamos qué es realmente la composición. La componibilidad es “un principio de diseño de sistemas que se ocupa de las interrelaciones de los componentes. Un sistema altamente componible proporciona componentes que se pueden seleccionar y ensamblar en varias combinaciones para satisfacer los requisitos específicos del usuario”.
Cualquiera que haya trabajado antes con empresas de usuarios finales (empresas que usan, pero no venden software), saben que, si bien muchos de los desafíos generales pueden ser los mismos (necesito ejecutar contenedores), cada uno trae sus propios peculiaridades (pero necesitamos puertas de enlace de salida estáticas para nuestro firewall). Un sistema componible ayuda a abordar estos desafíos comunes al mismo tiempo que permite elegir componentes que cumplan con los requisitos específicos. El panorama nativo de la nube es tan grande exactamente por esta razón, los usuarios finales necesitan opciones para satisfacer sus necesidades comerciales precisas. Ahora que entendemos un poco más sobre qué es la composición, veamos cómo se aplica al mundo real.
Interfaces componibles
Almacenamiento
Al principio, muchas partes de Kubernetes, como el almacenamiento, estaban «en el árbol» como parte del código central de Kubernetes. Si bien enviarlo todo como uno solo facilitó la instalación, las empresas que querían agregar soporte para su sistema de almacenamiento (o incluso corregir un error en un complemento de volumen existente) tenían que alinearse con el proceso de lanzamiento de Kubernetes. Además, el código de almacenamiento de terceros causaba problemas de confiabilidad y seguridad, y el código a menudo era difícil (y en algunos casos imposible) de probar y mantener para los mantenedores de Kubernetes.
La interfaz de almacenamiento de contenedores (CSI) se desarrolló para estandarizar la forma en que los sistemas de almacenamiento se exponen a las cargas de trabajo en contenedores y hacer que el almacenamiento sea componible. Ahora hay más de 110 controladores CSI para una gran variedad de proveedores y sistemas de almacenamiento. La creación de una interfaz componible aumentó la cantidad de opciones para los usuarios finales y la cantidad de usuarios finales que podrían usar Kubernetes, lo que resultó en un mercado potencial más grande para los proveedores de almacenamiento. No solo eso, sino que también redujo la carga de los mantenedores de Kubernetes y aumentó la seguridad del núcleo de Kubernetes. No está mal para una interfaz.
Redes
De manera similar, en redes, existe la Interfaz de red de contenedores (CNI) que «consiste en una especificación y bibliotecas para escribir complementos para configurar interfaces de red en contenedores de Linux». A menudo, en la comunidad de Cilium, veo usuarios que comenzaron con CNI simples como Weave o Flannel que luego necesitan cambiar a un CNI avanzado, como Cilium, para satisfacer sus necesidades de escalabilidad, observabilidad o seguridad. Si tuvieran que volver a cablear todo el clúster, incluidas todas las interfaces, sería casi imposible cambiarlo. Dado que CNI ha estandarizado las redes de contenedores, el intercambio entre CNI es una tarea mucho más simple. Incluso es posible hacer una migración en vivo. Con el CNI, los usuarios finales pueden elegir el CNI que se adapte a sus necesidades y cambiar si cambian.
eBPF
eBPF es una tecnología que permite a los usuarios ampliar de forma segura la funcionalidad del kernel de Linux sin esperar años para el proceso de desarrollo del kernel. Al permitir que los usuarios seleccionen y agreguen funciones adicionales en tiempo de ejecución, abre muchas posibilidades nuevas. Cloudflare lo usa para la mitigación de DDoS, Meta lo usa para el equilibrio de carga de alto rendimiento y Cilium lo usa para redes nativas en la nube, observabilidad y seguridad. Al mover la funcionalidad fuera del desarrollo del núcleo principal, se acelera drásticamente cuando los usuarios pueden aprovechar las nuevas características. También desbloquea nuevos casos de uso, como la observabilidad de seguridad con Tetragon. eBPF ha hecho que el kernel de Linux sea componible y ha traído muchas características nuevas y valiosas, funcionalidad y casos de uso al ecosistema nativo de la nube.
El valor de las interfaces componibles
Hacer que el almacenamiento y las redes de Kubernetes fueran componibles tuvo muchos beneficios en todo el ecosistema para los usuarios finales, proveedores y mantenedores. Primero, los usuarios finales tienen más opciones. Esto amplió tanto la cantidad de empresas que podrían usar Kubernetes como los casos de uso que podría satisfacer. También pueden cambiar si sus necesidades o caso de uso cambian sin tener que empezar desde cero. En segundo lugar, más usuarios finales significan más dinero para los proveedores. Al ampliar la base de usuarios, es posible que más usuarios deseen un contrato de soporte, funciones empresariales o un servicio administrado. Finalmente, al hacerlo más modular, los proyectos son más fáciles de probar y mantener, lo que reduce la carga de los mantenedores. Las interfaces componibles tienen beneficios para las personas en todo un ecosistema.
Ecosistemas Componibles
Hasta ahora, hemos hablado sobre el valor de poder intercambiar componentes individuales y el valor que proporciona a las empresas. Sin embargo, esa es solo una parte de la ecuación. La compatibilidad no se trata solo de los proyectos y productos de los que está hecha su pila, sino que también incluye la compatibilidad del ecosistema en su conjunto. El valor de un ecosistema no es solo la suma de sus partes, sino las interrelaciones entre las partes y cómo se pueden ensamblar para satisfacer las necesidades del ecosistema y los usuarios finales.
Las ideas, las personas y las herramientas que componen un ecosistema también pueden ser componibles. Cuando eso sucede, el valor de un ecosistema realmente se desbloquea. Veamos algunos ejemplos del mundo real de cómo la componibilidad de cada uno de estos ha aumentado el valor del ecosistema nativo de la nube en su conjunto.
Ideas
Observabilidad, “ser capaz de entender completamente nuestra [distributed] system”, es un espacio caliente porque nos ayuda a encontrar y resolver el error de producción que nos llamó a las 3 am. Hace algunos años, hubo muchas ideas diferentes sobre cómo implementar mejor la observabilidad, incluidos OpenCensus y OpenTracing. Estos dos proyectos combinaron sus ideas y esfuerzos en OpenTelemetry, que ahora es uno de los proyectos de más rápido desarrollo en la nube nativa. En lugar de tener dos esfuerzos competitivos en la estandarización, los dos proyectos compusieron sus ideas en un solo proyecto con un fuerte respaldo para hacer avanzar el estado del arte. Reunir los proyectos permitió a la nueva comunidad de OpenTelemetry seleccionar buenas ideas tanto de OpenCensus como de OpenTracing y combinar los colaboradores para hacer avanzar el proyecto más rápido, lo que resultó en un mejor proyecto para el ecosistema.
Gente
En los ecosistemas componibles, las personas pueden entrar y salir de los proyectos para satisfacer sus intereses, las brechas del mercado y las demandas de los clientes. Por ejemplo, carnicero mate creó Helm como administrador de paquetes para Kubernetes, Brigade como una plataforma de secuencias de comandos impulsada por eventos en Kubernetes, Krustlet, que es un kubelet para ejecutar cargas de trabajo WASM, e incluso ayudó a escribir la Guía ilustrada para niños de Kubernetes. Debido a que el ecosistema nativo de la nube es componible, pudo construir cada uno de estos proyectos sobre su trabajo existente cuando vio la necesidad de ellos. La compatibilidad permite a las personas aprovechar su conocimiento y los obstáculos del usuario final en lugar de tener que empezar desde cero. Esto puede crear proyectos valiosos que resuelven las necesidades de los usuarios finales y genera nuevas oportunidades comerciales para las personas en el ecosistema.
Instrumentos
Prow es un sistema CI/CD basado en Kubernetes que ejecuta la infraestructura de prueba para Kubernetes. El uso de los proyectos ahora se ha expandido a través del ecosistema nativo de la nube a más de 24 proyectos y productos diferentes. Reutilizar las mismas herramientas en un ecosistema facilita que los desarrolladores contribuyan a los proyectos (porque ya están familiarizados con las herramientas) y permite que múltiples proyectos aprovechen las mejoras y la automatización en Prow. También ayuda a que los nuevos proyectos despeguen más rápido porque no necesitan reinventar su CI/CD. Mejores herramientas ayudan a los proyectos a entregar características más rápido, crear mejores productos y mejorar la experiencia del usuario final.
El valor comercial compuesto de la componibilidad
Los ecosistemas están hechos de muchas partes diferentes, incluidas ideas, interfaces, personas y herramientas. La red de interacciones entre todos ellos genera el mayor valor cuando son componibles entre sí. Esta capacidad de combinar y recombinar para satisfacer las necesidades únicas de los usuarios finales genera valor comercial al:
- Ayudar a los proyectos a enviar características y funcionalidades más rápido
- Crear mejores productos más alineados con las necesidades del usuario final
- Generar nuevas oportunidades de negocio a partir de brechas que se puedan tapar
- Aumentar la base de usuarios, la cobertura de casos de uso y el tamaño potencial del mercado
- Producir mejores resultados comerciales tanto para los proveedores como para las empresas usuarias finales
La compatibilidad impulsa el mundo nativo de la nube y es lo que lo ha hecho tan valioso también para las empresas.