Cuando se busca combinar la agilidad del modelo serverless con la portabilidad y consistencia de los contenedores, existe una opción que equilibra ambos espectros de cómputo. Knative nació como un proyecto impulsado por Google junto con empresas como IBM, Red Hat, Pivotal, VMware y Cisco, y se ha convertido en una plataforma clave para desplegar cargas de trabajo modernas sin quedar atado a un solo proveedor.
¿Qué es Knative y por qué resuelve el problema del vendor locking?
Knative es una plataforma para desplegar y manejar cargas de trabajo en un modelo serverless basado en Kubernetes [0:16]. En términos prácticos, permite construir bloques simplificados que mantienen la rapidez de las funciones, pero al estar basados en contenedores y desplegados sobre Kubernetes, eliminan el riesgo de vendor locking [0:55].
Las funciones serverless tradicionales son rápidas de poner en marcha y fáciles de manejar, pero vinculan al desarrollador con la plataforma: no importa si es Google, Microsoft, AWS o IBM. Con Knative, las cargas de trabajo pueden funcionar en cualquier proveedor de nube, porque la base es Kubernetes y contenedores [1:17].
¿Cómo maneja Knative los servicios y las versiones?
Knative se compone de dos elementos principales. El primero es el módulo de servicios (serving), que se encarga de atender las peticiones y distribuirlas entre las distintas versiones o revisiones de un mismo servicio [1:33].
- Permite manejar múltiples versiones de un servicio funcionando simultáneamente.
- Decide a qué revisión enviar cada solicitud según la configuración definida.
- Utiliza Istio, un service mesh, para construir una malla entre los servicios [2:12].
Istio se encarga de enrutar las solicitudes: una puede ir a la revisión uno, otra a la revisión tres. Además, permite configurar qué servicios quedan expuestos y cuáles requieren autenticación, todo ya integrado y listo para usarse [2:30].
El esquema funciona así: un servicio tiene una configuración que va desplegando distintas revisiones, y un componente de rutas distribuye el tráfico entre ellas [2:47].
¿Qué papel juegan los eventos en Knative?
El segundo gran componente es el módulo de eventos (eventing) [3:23]. Así como las funciones serverless responden ante eventos de distintas plataformas, Knative ofrece esta misma capacidad.
- Los eventos se definen con la especificación Cloud Events, un proyecto open source [3:45].
- Plataformas como Google Cloud Pub/Sub o Kafka pueden generar mensajes compatibles con esta especificación.
- Todos los suscriptores a un evento reciben la notificación con los datos correspondientes [4:07].
¿Cuándo conviene la transmisión simple y cuándo la compleja?
Existen dos escenarios de transmisión. En la transmisión simple, el mensaje va directamente desde la fuente al servicio [4:20]. Es lo más rápido, pero no siempre la arquitectura más eficiente.
En la transmisión compleja, los mensajes se distribuyen a través de un canal con múltiples suscripciones [4:40]. ¿La ventaja? Si el servicio sufre una interrupción, los mensajes no se pierden. Cuando el servicio se recupera, puede consultar la suscripción: "¿tienes mensajes pendientes? ¿Alguno sin confirmación de procesamiento?" [5:10]. Esta solución resulta especialmente útil para arquitecturas grandes donde la resiliencia es crítica.
¿Cómo se integra Knative en la arquitectura general?
Knative se monta sobre Kubernetes con una capa de Istio encima [5:53]. Esta combinación permite que usuarios —sean personas o sistemas— realicen solicitudes a los distintos servicios a través de la malla que Istio administra.
Siguiendo los principios de Kubernetes, Knative también expone una API para que los equipos de desarrollo puedan construir, desplegar y supervisar aplicaciones de manera programática [6:10].
Los beneficios se resumen en una fórmula poderosa:
- Portabilidad y consistencia propias de los contenedores y Kubernetes.
- Escalabilidad y modularidad del modelo serverless.
- Respuesta a eventos conectables a buses de datos.
- Bloques de código fácilmente integrables entre sí [6:30].
Knative demuestra que no todo tiene que resolverse con funciones. Si necesitas consistencia, portabilidad y la capacidad de escalar respondiendo a eventos de forma modular, esta plataforma merece un lugar central en tu evaluación de opciones de cómputo. ¿Ya has probado Knative en algún proyecto? Comparte tu experiencia.