Cómo Kilimo construyó una red cloud híbrida sin partir la plataforma

Empezá tu Proyecto

Red híbrida AWS y Azure construida para la plataforma climatech de Kilimo

Caso de Estudio

Cuando los créditos llegan a una segunda nube, tenés una decisión: reconstruir todo, o construir la red que hace que ambas nubes se sientan como en casa. Esto es lo que hicimos.

Muchos founders asumen que multi-cloud significa rediseñar la plataforma. No es así — y no debería serlo. Las arquitecturas híbridas son comunes en empresas maduras; son raras en startups, porque es más fácil enseñarle a una startup en Serie A a optimizar para una sola nube que a gestionar dos. Pero cuando ya optimizaste para una, y el capital nuevo (en créditos) depende de usar otra, la ecuación cambia. Preservás lo que funciona, extendés lo que construiste y seguís adelante. En Renaiss ayudamos a los founders a tomar esa decisión de forma técnicamente sólida — y rentable.

Solución entregada

Por qué construir híbrido en lugar de reconstruir

Muchos founders asumen que multi-cloud significa rediseñar la plataforma. No es así — y no debería serlo. Las arquitecturas híbridas son comunes en empresas maduras; son raras en startups, porque es más fácil enseñarle a una startup en Serie A a optimizar para una sola nube que a gestionar dos. Pero cuando ya optimizaste para una, y el capital nuevo (en créditos) depende de usar otra, la ecuación cambia. Preservás lo que funciona, extendés lo que construiste y seguís adelante. En Renaiss ayudamos a los founders a tomar esa decisión de forma técnicamente sólida — y rentable.

1. Asignación de IP

Resolvé esto antes que cualquier otra cosa; es el error más barato de evitar y el más caro de arreglar después.

  • Sin superposición de espacio de direcciones en ningún lado. Entre ambas nubes, on-prem y — algo crítico — los rangos de pods y servicios de Kubernetes, cada CIDR tiene que ser único a nivel global. La superposición te obliga a usar NAT o renumerar, y ambas opciones son un infierno.
  • Asigná en bloques resumibles. Recortá una supernet grande y repartí rangos agregables por nube (por ejemplo, un /12 para AWS, otro /12 separado para Azure) para que las tablas de rutas y los anuncios BGP se mantengan compactos. Gobernalo con herramientas de IPAM reales, no con una planilla.
  • Prestá atención al apetito de IP de Kubernetes. EKS con la VPC CNI le da a cada pod una IP de VPC ruteable y puede consumir decenas de miles de direcciones; AKS obliga a elegir el CNI desde el principio (Azure CNI pone los pods en la VNet y es ruteable cross-cloud, mientras que overlay/kubenet los esconde y no lo es).
  • Hacé que los CIDRs de los pods sean ruteables y no se superpongan si los pods se comunican entre nubes. La conectividad directa pod a pod solo es posible cuando ambos lados usan rangos de pods ruteables y sin conflictos.

2. Fabric de conectividad y appliances

Dos decisiones en capas: cómo se conectan físicamente las dos nubes, y qué se ubica en el camino para rutear e inspeccionar el tráfico.

  • Cómo se conectan las nubes. Una VPN IPsec sobre internet es barata y rápida de montar, pero tiene techos por túnel y la variabilidad propia de internet público; Direct Connect + ExpressRoute dedicados, unidos en un cloud exchange (Megaport, Equinix), compran latencia y throughput predecibles a mayor costo y plazo.
  • Qué se ubica en el camino. El fabric cloud-native (Transit Gateway + Virtual WAN) escala automáticamente con mínima operación pero es solo L3; los firewalls administrados (AWS Network Firewall, Azure Firewall) suman inspección; las NVA de terceros (Palo Alto, Fortinet) dan inspección L7 consistente y un solo modelo de políticas entre ambas nubes, al costo del licenciamiento y de tener que sostener vos mismo la alta disponibilidad, el escalado y el patching.
  • Ruteá de forma dinámica y simétrica. Usá BGP para el failover en lugar de rutas estáticas, y diseñá caminos simétricos — el ruteo asimétrico a través de un appliance stateful es la causa clásica y silenciosa de una caída híbrida.

Para Kilimo nos mantuvimos completamente cloud-native: una VPN IPsec entre AWS Transit Gateway y Azure Virtual WAN, sin appliances de terceros. Sus volúmenes de tráfico y sus necesidades de inspección no justificaban NVAs ni un circuito dedicado, y mantener el interconnect sobre appliances administrados significó no tener que cargar con alta disponibilidad, patching ni licenciamiento — eso queda del lado de los proveedores de nube.

3. DNS híbrido para zonas privadas

Un workload en EKS tiene que resolver un nombre privado de Azure (y viceversa) sin filtrar la consulta al DNS público.

  • Forwarding condicional en ambas direcciones. Usá Route 53 Private Zones con endpoints de Resolver de entrada/salida del lado de AWS, y Azure Private DNS con el DNS Private Resolver del otro lado, cada uno reenviando el subdominio de la nube par hacia el endpoint de entrada correspondiente.
  • Dale a cada nube un subdominio distinto. Namespaces separados mantienen las reglas de forwarding limpias y evitan colisiones.
  • Hacé que los endpoints de resolver tengan alta disponibilidad entre AZs. Un único endpoint de resolver es un punto único de falla para toda la resolución de nombres cross-cloud.
  • No te olvides de la capa del cluster. CoreDNS en cada cluster necesita reglas forward para que los workloads dentro de EKS y AKS realmente lleguen al resolver correcto.

4. PKI privada con una raíz de confianza compartida

En una plataforma de microservicios cross-cloud, muchas veces vas a querer mTLS o TLS interno — lo que significa una jerarquía de confianza coherente, no un montón de certificados autofirmados sueltos.

  • Una raíz, intermedios por nube. Distribuí el mismo bundle de raíz en ambas nubes para que un workload en EKS confíe en un certificado emitido en AKS.
  • Preferí un emisor neutral a la nube. HashiCorp Vault te da un modelo consistente de emisión y rotación, en lugar de tener que combinar ACM PCA con una CA de Azure.
  • Automatizá la distribución y la rotación. Apuntá cert-manager al emisor compartido en cada cluster para que los certificados sean de corta duración y se renueven solos.

Para Kilimo esto no aplicaba — sus requisitos cross-cloud no pedían mTLS servicio a servicio, así que dejamos deliberadamente una PKI privada fuera de alcance en lugar de construir algo que no se iba a usar. Lo incluimos acá porque la mayoría de las plataformas cross-cloud terminan necesitándolo tarde o temprano, y es mucho más barato planificar la jerarquía de confianza temprano que retrofitearla después.

5. Comunicación entre clusters

Esta es la pregunta que amarra todo el diseño: ¿cómo llega realmente un servicio en EKS a un servicio en AKS? Hay tres respuestas amplias, en orden ascendente de capacidad y peso operacional.

  • Pod a pod directo (pods ruteables) — el camino de menor latencia y el más acoplado. Exige CIDRs de pods ruteables y sin superposición en ambos lados, y ata cada cluster al direccionamiento interno del otro, así que un cambio de un lado puede repercutir en todo el interconnect.
  • Load balancers internos — cada cluster expone sus servicios cross-cloud con un LB interno (un NLB interno en AWS, un Standard Load Balancer interno en Azure) accesible por el interconnect privado. El cluster que llama apunta a un endpoint de LB estable en lugar de a pods individuales, así que los dos clusters se mantienen desacoplados de los detalles a nivel pod del otro.
  • Service mesh multi-cluster — Istio, Cilium Cluster Mesh o Linkerd. La opción más completa (mTLS, traffic shifting, ruteo consciente de la localidad) y la más pesada de operar.

Para Kilimo elegimos load balancers internos. Solo un puñado de servicios necesitaba hablar entre nubes, y el modelo de LB interno nos dio el mejor balance entre simplicidad y control: los clusters se mantienen desacoplados, no necesitamos hacer que los CIDRs de pods sean mutuamente ruteables, y los endpoints de LB combinan naturalmente con el forwarding condicional de DNS del punto 3 — un servicio simplemente resuelve el nombre privado del par y obtiene una dirección estable en la otra nube. Las contrapartidas son un salto de red extra y tener que sostener nosotros mismos la salud y la configuración de endpoints del LB, ambas fáciles de asumir frente a levantar y operar un mesh cross-cloud para un puñado de flujos.

Qué construimos para Kilimo

La topología: un hub administrado en cada nube, un interconnect IPsec entre Transit Gateway y Virtual WAN que lleva BGP, forwarding condicional de DNS entre los dos resolvers, y load balancers internos como puntos de entrada de los servicios cross-cloud. Sin appliances de terceros, sin PKI privada.

Una llamada cross-cloud sigue las líneas punteadas y sólidas juntas: un pod en EKS resuelve el nombre del servicio de Azure (el forwarding condicional le entrega la dirección del LB interno), el tráfico cruza el link IPsec vía Transit Gateway y Virtual WAN, y llega al load balancer interno de Azure que expone AKS — y de forma simétrica en reversa.

Qué aprendió Kilimo

Kilimo hoy orquesta su inteligencia de gestión hídrica entre AWS y Azure sin fragmentar la plataforma. La latencia es predecible, los modos de falla están entendidos, y el costo por byte de datos que cruza el interconnect es conocido y aceptable. Los créditos de Azure, que llegaron como una obligación, se convirtieron en un activo estratégico.

La lección es más amplia: híbrido no significa compromiso. Significa decisiones deliberadas, tomadas temprano. Significa conocer tu espacio de IP antes de necesitarlo, rutear el tráfico de forma simétrica antes de tener una caída, y pensar en mTLS antes de estar en medio de una auditoría de cumplimiento.

Si estás construyendo climate tech, fintech o cualquier startup con infraestructura pesada y estás frente a la misma decisión — créditos en una nube, arquitectura en otra, una misión que no puede esperar — hablemos de cómo escalar sin partir la plataforma.

ASIGNACIÓN DE IP

ASIGNACIÓN DE IP

Planificá tu espacio de direcciones antes de conectar: sin superposiciones, CIDRs agregables, y conocé el apetito de IP de Kubernetes. El error más barato de evitar, el más caro de arreglar después. Kilimo lo aprendió de la forma difícil.

FABRIC DE CONECTIVIDAD Y APPLIANCES

FABRIC DE CONECTIVIDAD Y APPLIANCES

IPsec, circuitos dedicados o fabric cloud completamente administrado. Decidí qué va en el camino antes de que llegue el tráfico. Para Kilimo: cloud-native. Transit Gateway y Virtual WAN, sin appliances de terceros, sin carga de licenciamiento.

DNS HÍBRIDO PARA ZONAS PRIVADAS

DNS HÍBRIDO PARA ZONAS PRIVADAS

Un workload en EKS resuelve nombres de servicios de Azure sin filtrar consultas al DNS público. Forwarding condicional en ambas direcciones, resolver endpoints en alta disponibilidad entre AZs, reglas de CoreDNS en cada cluster.

PKI PRIVADA CON UNA RAÍZ DE CONFIANZA COMPARTIDA

PKI PRIVADA CON UNA RAÍZ DE CONFIANZA COMPARTIDA

Una jerarquía de certificados que cruza nubes: una raíz compartida, intermedios por nube. Kilimo no necesitaba mTLS, así que lo dejamos afuera. Pero es más barato planificarlo temprano que retrofitearlo después.

COMUNICACIÓN ENTRE CLUSTERS

COMUNICACIÓN ENTRE CLUSTERS

Una jerarquía de certificados que cruza nubes: una raíz compartida, intermedios por nube. Kilimo no necesitaba mTLS, así que lo dejamos afuera. Pero es más barato planificarlo temprano que retrofitearlo después.

Las cinco decisiones que hicieron posible la red híbrida de Kilimo

Mapeo de infraestructura

Auditamos la arquitectura AWS existente de Kilimo, mapeamos los workloads que cruzarían entre nubes y calculamos cuánto espacio de IP necesitaba cada una. El objetivo era simple: saber exactamente qué vas a construir antes de construirlo. La mayoría de los equipos se salta este paso. Nosotros no.

Diseño de conectividad

Modelamos tres escenarios: VPN IPsec sobre internet, circuitos dedicados vía Equinix y fabric administrado cloud-native. Para el volumen de tráfico y las necesidades de inspección de Kilimo, IPsec entre Transit Gateway y Virtual WAN fue la respuesta. Sin appliances de terceros, sin sobrecosto de licenciamiento.

DNS y resolución de nombres

Modelamos tres escenarios: VPN IPsec sobre internet, circuitos dedicados vía Equinix y fabric administrado cloud-native. Para el volumen de tráfico y las necesidades de inspección de Kilimo, IPsec entre Transit Gateway y Virtual WAN fue la respuesta. Sin appliances de terceros, sin sobrecosto de licenciamiento.

Orquestación de load balancers

Expusimos los servicios cross-cloud con load balancers internos — un NLB en AWS, un Standard LB en Azure. Los clusters se mantienen desacoplados de los detalles a nivel pod del otro. Un servicio resuelve el nombre privado del par y obtiene un endpoint estable. Simple, predecible, operacionalmente sólido.

Testing y traspaso

Validamos latencia, failover y ruteo simétrico antes de entregarle todo al equipo de operaciones de Kilimo. Documentamos la topología BGP, las reglas de DNS y el costo por byte que cruza el interconnect. La plataforma quedó en producción, el equipo la entendió, y se mantuvo en producción.

¿Con qué tipo de empresas trabaja Renaiss?

Trabajamos sobre todo con bancos y empresas del mercado de capitales en proyectos de modernización tecnológica: infraestructura, sistemas core e incorporación de IA a procesos reales. También tomamos proyectos de otros sectores cuando la exigencia técnica es la misma — varios de los casos de esta sección lo son. En todos los casos, entramos como equipo técnico senior embebido, no como una mesa de soporte tercerizada.

¿Desde dónde opera el equipo de Renaiss?

Tenemos base en Rosario, Argentina, y trabajamos con clientes en toda Latinoamérica. Eso significa conocimiento directo del contexto regulatorio y operativo de la región — por ejemplo la normativa del BCRA para fintechs argentinas — y coordinación en el mismo huso horario, sin la fricción de trabajar con un equipo a 10 horas de diferencia.

¿En qué servicios de cloud se especializa Renaiss?

Nuestro trabajo está en la intersección de infraestructura cloud, arquitectura de aplicaciones e IA: diseño de arquitectura cloud-native, automatización de infraestructura, plataformas, pipelines de datos e integración de GenAI. No hacemos soporte cloud genérico — construimos y operamos sistemas que necesitan escalar.

¿Trabajan con AWS, Azure o GCP?

Nuestra mayor profundidad es en AWS. También trabajamos con Azure y GCP según el stack que ya tenga el cliente — el objetivo siempre es adaptarnos a tu entorno, no imponer un proveedor.

¿Pueden ayudarnos a modernizar una aplicación legacy?

Sí — es uno de los problemas en los que más trabajamos. Modernizar una aplicación suele implicar alguna combinación de: separar un monolito en servicios, migrar a infraestructura cloud-native, reemplazar dependencias obsoletas o mejorar el pipeline de CI/CD para que el equipo entregue más rápido. Siempre arrancamos con un diagnóstico técnico antes de recomendar un camino.