El viaje de Navixy hacia Kubernetes: escala global, modularidad y DevOps orientado al desarrollador

El viaje de Navixy hacia Kubernetes: escala global, modularidad y DevOps orientado al desarrollador

Kubernetes ya no es solo una palabra de moda en Silicon Valley: está impulsando sistemas críticos en diversas industrias. De hecho, cerca del 43% de las empresas utilizan Kubernetes para implementaciones IoT (y otro 31% planea adoptarlo). Desde la plataforma de streaming de Bose con 3 millones de dispositivos hasta los proveedores de hogares inteligentes que procesan millones de mensajes con latencia inferior a 200ms, Kubernetes ha demostrado su capacidad para ofrecer escalabilidad y confiabilidad en IoT y telemática.

Durante el último año, Navixy decidió unirse a estas filas. Hemos emprendido una transformación importante: migrar nuestra nube telemática de servidores estáticos a una arquitectura containerizada basada en Kubernetes. Ha sido una evolución lógica para garantizar una escalabilidad y estabilidad ilimitadas mientras crecemos. Hoy queremos compartir qué cambió, por qué lo hicimos y cómo beneficia a nuestros socios, desarrolladores y equipo.

¿Por qué Kubernetes y por qué ahora? En pocas palabras, nos estamos preparando para el futuro. La plataforma de Navixy gestiona rastreo GPS en tiempo real, datos de sensores IoT y aplicaciones de gestión de flotas: cientos de miles de dispositivos transmitiendo datos en paralelo. Necesitamos procesar esos datos al instante, 24/7, en todo el mundo. Kubernetes nos brinda la flexibilidad para satisfacer estas necesidades orquestando nuestros numerosos microservicios bajo demanda. Ahora nuestro sistema puede ajustarse dinámicamente a las cargas cambiantes, ya sea por la incorporación de nuevos dispositivos o por picos periódicos de datos desde el campo. En TI nada permanece estático; este cambio asegura que no alcanzaremos límites de infraestructura mientras nuestra base de clientes crece.

En resumen, esto es lo que Kubernetes aporta a Navixy:

  • Escalamiento eficiente en tiempo real
    Podemos manejar cargas de datos crecientes y miles de conexiones simultáneas de dispositivos sin esfuerzo, ajustando los recursos en tiempo real según la demanda.

  • Mayor confiabilidad
    Las características de auto-reparación y redundancia de Kubernetes reducen drásticamente el tiempo de inactividad. Si un servicio falla, Kubernetes lo reinicia automáticamente o redistribuye la carga, resultando en menos interrupciones y una experiencia más fluida para los usuarios.

  • Entrega más rápida de funcionalidades
    Las implementaciones automatizadas de contenedores agilizan nuestros ciclos de lanzamiento. Podemos desplegar actualizaciones (o revertirlas si es necesario) mucho más rápido que antes, permitiendo que socios y clientes vean mejoras continuas sin interrupciones.

  • Protecciones de escalamiento rentables
    Al escalar automáticamente solo lo necesario y optimizar las cargas de trabajo, evitamos el aprovisionamiento excesivo. Los controles implementados previenen la "expansión innecesaria", manteniendo la infraestructura eficiente y rentable.

¿Qué cambios hemos implementado en nuestra Plataforma?

Han pasado cerca de cinco años desde nuestra última revisión detallada de la infraestructura de Navixy, y han ocurrido muchos cambios. El más significativo, sin duda, ha sido la migración a Kubernetes. Hemos transformado nuestra plataforma, antes monolítica, en microservicios que se ejecutan en contenedores, orquestados por Kubernetes en una nube distribuida. Específicamente, Kubernetes ahora gestiona todo: desde los servicios de ingesta de datos hasta las APIs y los módulos de lógica empresarial – todos los componentes que operan tras bambalinas. Este enfoque nativo en la nube dio resultados inmediatos en rendimiento y resistencia: Kubernetes detecta y se recupera automáticamente de las fallas, por lo que un inconveniente en un componente ya no causa una interrupción del servicio. Los despliegues que antes eran arriesgados y lentos ahora son rutinarios – las actualizaciones son más fluidas y las reversiones son tan simples como reiniciar un contenedor. En resumen, la plataforma de Navixy se ha vuelto más modular, ágil y robusta.

Aunque nuestros clientes y socios no ven Kubernetes directamente, perciben la diferencia en el servicio día a día. Estos son los beneficios:

  • Mayor fiabilidad. La plataforma es más estable que nunca. Kubernetes nos ayuda a detectar fallas y recuperarnos automáticamente, lo que resulta en menos interrupciones. Garantizamos con confianza una disponibilidad del 99.99% e incluso hemos logrado una disponibilidad de "cinco nueves" en algunos trimestres, lo que significa prácticamente cero tiempo de inactividad.

  • Innovación más rápida. Con la automatización del despliegue, podemos lanzar actualizaciones con mayor frecuencia. Los clientes e integradores acceden a nuevas funcionalidades y mejoras más rápidamente, sin esperar grandes lanzamientos esporádicos. Nuestro pipeline de CI/CD asegura que las actualizaciones se implementen de manera suave y segura en incrementos graduales.

  • Escalabilidad sin esfuerzo. Conforme nuestros clientes crecen (más dispositivos, más datos, más usuarios), la nube de Navixy escala automáticamente con ellos. Podemos añadir capacidad al instante e incluso extender la plataforma a nuevas regiones rápidamente. No hay penalización en el rendimiento por el crecimiento: ya sea que un cliente tenga 10 dispositivos o 10,000, la experiencia sigue siendo ágil.

Para un SaaS de telemática que atiende a una audiencia global, estas mejoras son revolucionarias. Tanto una aplicación de gestión de flotas en Norteamérica como una red de sensores IoT en Europa disfrutan de un servicio confiable y de baja latencia porque, entre bastidores, nuestra infraestructura puede expandirse, contraerse y autorepararse según sea necesario. Y lo más importante es que todos estos cambios no aumentan la complejidad para nuestros usuarios: todo sucede tras bambalinas, mejorando silenciosamente el servicio.

Reconstruyendo nuestra infraestructura (sin perder el ritmo)

¿Cómo logramos hacer esto realidad? Aquí les compartimos un vistazo entre bastidores de nuestra migración a Kubernetes. Adelanto: requirió mucha planificación, algunas noches sin dormir y un equipo de DevOps que no cree en tomar atajos.

Hace aproximadamente tres años, decidimos que era momento de replantearnos cómo estaba configurada nuestra infraestructura. Todo funcionaba bien, pero teníamos metas más ambiciosas: queríamos ser más flexibles, responder más rápido a los cambios y eliminar cualquier cuello de botella que pudiera limitarnos. Ya teníamos Kubernetes en nuestro roadmap (llevaba tiempo en nuestra lista de pendientes pidiendo atención), y este era el momento perfecto para implementarlo. Después de todo, ¿qué puede ser más gratificante para un equipo de DevOps que migrar a una Infraestructura como Código y modernizar todo el stack? 😁

Paso 1: GitOps y CI/CD – Sentando las bases

Sabíamos que migrar a Kubernetes solo tendría éxito si también renovábamos nuestros procesos. Por eso, primero restructuramos nuestra forma de entregar software. Ahora, toda la configuración de nuestra plataforma – desde el código de los servicios hasta los manifiestos de Kubernetes – reside en un repositorio Git, que funciona como única fuente de verdad. Cuando un desarrollador o ingeniero DevOps envía un cambio, los pipelines de CI/CD automáticamente se activan para construir, probar e implementar los cambios en todos nuestros entornos. En la práctica, cada servicio de Navixy se construye no solo como un binario, sino como una imagen de contenedor. Esto significa que lo que se ejecuta en la máquina del desarrollador es exactamente lo mismo que se ejecuta en producción (adiós a los problemas de "en mi máquina funciona"). Hemos adoptado completamente los modelos de implementación GitOps: usando herramientas como Argo CD, nuestros clústeres se sincronizan continuamente con el estado declarado en Git. En términos simples, cualquier cambio, ya sea de código o configuración, se aplica mediante commits versionados, y Kubernetes se encarga de hacerlo realidad. Esto nos proporciona una enorme transparencia y control. Podemos rastrear qué versión de un servicio se está ejecutando en cada lugar, y si algo sale mal, revertir es tan sencillo como deshacer un commit en Git. Nuestro pipeline se ha convertido verdaderamente en una plataforma interna para desarrolladores de Navixy, automatizando todo, desde las compilaciones hasta las actualizaciones de infraestructura. Es moderno, modular y transparente, permitiendo que nuestro equipo se concentre en las funcionalidades en lugar de lidiar con servidores.

Kubernetes in telematics

Figura: El pipeline CI/CD GitOps de Navixy simplifica la entrega – el código y la configuración en Git activan compilaciones automatizadas (CI), containerización e implementaciones en clústeres de Kubernetes (CD). Las herramientas de monitoreo (Prometheus, Grafana, Graylog) cierran el ciclo de retroalimentación, proporcionando observabilidad sobre la salud de la plataforma para la mejora continua.

Una gran victoria de este nuevo enfoque fue la capacidad de lanzar una edición On-Premise containerizada de Navixy junto a nuestro SaaS en la nube. De hecho, ese fue uno de los primeros grandes resultados del "Paso 1". Al containerizar toda nuestra infraestructura, simplificamos el empaquetado de Navixy para clientes que desean ejecutarlo en su propio entorno. Ahora existe un script de Instalación Fácil (literalmente llamado Easy installation) que implementa Navixy en los servidores del cliente mediante Docker/Kubernetes, sin necesidad de conocimientos profundos de Linux. Esto es sumamente importante para los socios de canal que atienden a clientes gubernamentales o empresariales con estrictos requisitos de residencia de datos. Pocos proveedores de telemática SaaS ofrecen esta flexibilidad, pero la inversión de Navixy en DevOps hizo posible mantener una única base de código que puede ejecutarse tanto en nuestra nube multi-tenant como en la nube privada de un cliente. En resumen, nuestras mejoras internas se tradujeron también en un mejor producto para ciertos clientes, ofreciéndoles una opción de Navixy portable y autogestionada sin complicaciones adicionales.

Paso 2: Optimizando el flujo de datos con Kafka

El siguiente elemento de nuestra transformación fue la adopción de Apache Kafka como núcleo de nuestro pipeline de datos. Si bien no es estrictamente necesario para Kubernetes, Kafka se convirtió en una parte fundamental de nuestra nueva arquitectura para manejar el crecimiento en los flujos de datos. Actualmente, todos nuestros flujos de datos intensivos pasan por un cluster Kafka de alto rendimiento en cada región. ¿Por qué? Imagina cientos de miles de GPS reconectándose después de una falla de red: esto genera una avalancha masiva de datos que impacta repentinamente al sistema. Anteriormente, manejábamos estos picos con cachés provisionales o escalamiento manual. Ahora, Kafka funciona como un búfer gigante que suaviza los picos de tráfico mediante la gestión de colas de datos de dispositivos, alimentando nuestros microservicios a un ritmo constante. La plataforma se mantiene estable y receptiva incluso durante "tormentas" de mensajes entrantes. Nos gusta llamar a Kafka nuestro "controlador de tráfico aéreo": asegura que ningún dato se pierda y que ningún servicio se sobrecargue. Esta incorporación mejoró la resiliencia y desacopló efectivamente nuestros servicios (los productores y consumidores de datos ahora están separados por Kafka). Como beneficio adicional, está preparando el terreno para nuevas funciones analíticas en las que estamos trabajando, ya que tener un flujo central de eventos abre muchas posibilidades. Una vez más, es un ejemplo de cómo la adopción de tecnología probada en la industria fortalece a Navixy.

Paso 3: Migración a Kubernetes (¡el evento principal!)

Con los cimientos establecidos, abordamos la migración central: trasladar todos nuestros servicios a Kubernetes sin tiempo de inactividad. Nuestro equipo de DevOps/SRE se rige por un lema: "no rompas lo que funciona." Esto significó que abordamos esta migración de manera muy cuidadosa y metódica. No fue simplemente activar un interruptor un día. En su lugar, trasladamos los componentes a Kubernetes de manera incremental, realizando pruebas durante el proceso, a lo largo de aproximadamente 1.5 años. Durante un tiempo operamos en modo híbrido, con algunas partes en máquinas virtuales clásicas y otras en K8s, cambiando gradualmente el balance. Constantemente nos preguntábamos "¿cómo podemos hacer esto sin que ningún cliente lo note?" e implementamos numerosas medidas de seguridad y monitoreo (¡pronto hablaremos más sobre la observabilidad!) para asegurarnos de no introducir regresiones. La transición final a Kubernetes se completó a principios de 2025, y me complace informar que completamos toda la transición sin ninguna interrupción del servicio. Para una plataforma 24/7 que ingesta datos cada segundo, esto no es poca cosa, y no podría estar más orgulloso de nuestro equipo por lograrlo. 💪 Básicamente reconstruimos el avión de Navixy mientras volaba, y ningún pasajero sintió turbulencia. (Si parece que estamos emocionados por esto, ¡es porque lo estamos!)

Durante este proceso, también actualizamos nuestras herramientas de observabilidad para mantener un control minucioso de todo. Instrumentamos la nueva plataforma con Prometheus para métricas, Graylog/ELK para logs y dashboards de Grafana para visualizarlo todo. Esto no fue solo para el monitoreo posterior: integramos la observabilidad en nuestro proceso de desarrollo y despliegue. Siguiendo la filosofía "shift-left", nuestros ingenieros utilizan estas herramientas en entornos de staging y pruebas para detectar problemas tempranamente, no solo en producción. El impacto de cada cambio en el código se puede observar a través de métricas y logs casi inmediatamente, cerrando el ciclo de retroalimentación para la mejora continua. Si algo no está bien, lo sabremos antes de que afecte a algún cliente. En la práctica, esto significa menos sorpresas a las 3 de la mañana y más confianza en cada versión. (Nuestro equipo de guardia definitivamente lo agradece.)

Los beneficios: Una plataforma más robusta para Usuarios, Partners y Desarrolladores

Ahora que el polvo se ha asentado, ¿cuál es el resultado final? En una palabra, "perfección". Uno de nuestros ingenieros describió en broma la nueva plataforma basada en Kubernetes como "pura perfección... la elegancia y el control que habíamos estado buscando". Las tareas que solían ser difíciles ahora son mucho más sencillas. Permítanme destacar algunos resultados y su importancia:

  • Escalabilidad y eficiencia bajo demanda. Nuestra capacidad ahora se expande o contrae automáticamente según la carga en tiempo real. Si una gran cantidad de dispositivos comienza a enviar datos repentinamente, Kubernetes iniciará más pods para manejarlo. Cuando la carga disminuye, reduce recursos. Esto mantiene nuestra utilización de recursos alta (frecuentemente superior al 80%) sin sobreaprovisionamiento. Estamos obteniendo más rendimiento del mismo hardware. ¿Y esos picos de tráfico locos que solían ocurrir? Kafka nos respalda, amortiguando las ráfagas para que la experiencia del usuario se mantenga estable. El resultado: rendimiento consistente sin necesidad de intervención manual durante los picos de uso. Nuestras operaciones son más rentables y escalables al mismo tiempo – una excelente combinación.

  • Implementaciones más rápidas y alcance global. Publicar actualizaciones o lanzar un nuevo clúster de servidores es dramáticamente más rápido ahora. Cualquier cambio en la plataforma, en cualquier parte del mundo, está a solo un commit de Git y una ejecución de pipeline CI de llegar a producción. Anteriormente, implementar un nuevo nodo regional (por ejemplo, configurar nuestra plataforma en un nuevo centro de datos para un cliente) tomaba meses de planificación y configuración manual. Ahora es cuestión de días o incluso horas – principalmente automatización haciendo el trabajo. Ya hemos puesto en marcha nuevos clústeres de Kubernetes en regiones adicionales con mínimas complicaciones. Esto significa que Navixy puede expandirse a nuevas regiones o nubes privadas de clientes muy rápidamente, una gran ventaja competitiva mientras nuestro negocio global crece. En resumen, podemos escalar horizontalmente sin los dolores de cabeza habituales. Nuestra arquitectura multirregional (con clústeres en Europa, Norteamérica y más) es más fácil de expandir y gestionar que nunca.

  • Alta disponibilidad por diseño. Kubernetes, combinado con nuestra configuración multi-datacenter y multi-región, ha llevado nuestra alta disponibilidad al siguiente nivel. Cada uno de nuestros clústeres regionales abarca 2-3 centros de datos con distribución automática de carga. Si un centro de datos completo falla (toquemos madera), Kubernetes traslada las cargas de trabajo a los otros – los usuarios ni siquiera lo notarán. Esencialmente hemos incorporado la recuperación en la nube en nuestro ADN. Nuestra página de estado público (status.navixy.com) refleja esta resiliencia; pueden ocurrir problemas en una zona, pero el sistema en su conjunto permanece activo. Esta arquitectura nos ha permitido alcanzar consistentemente ese objetivo de 99.99% de tiempo de actividad. No es solo teoría – hemos visto a Kubernetes reprogramar rápidamente cargas de trabajo durante incidentes reales, previniendo tiempo de inactividad. Para los clientes, significa que Navixy está ahí cuando lo necesitan, punto.

  • Modularidad y mantenibilidad. Dividir la plataforma en microservicios la ha hecho mucho más fácil de desarrollar y mantener. Cada servicio (procesamiento de datos GPS, geocodificación, informes, etc.) puede trabajarse de forma independiente y desplegarse según su propio calendario. Si queremos actualizar el módulo de informes, podemos desplegar ese contenedor por sí solo sin tocar los otros. Si algo no funciona bien, Kubernetes puede aislar y revertir solo esa pieza, sin impacto en el resto del sistema. Este tipo de aislamiento es una mejora enorme comparada con los viejos tiempos cuando un error podía derribar una aplicación monolítica. Para nuestros desarrolladores partners que construyen sobre las APIs de Navixy, esta modularidad significa que los servicios que utilizan son más confiables y pueden evolucionar más rápido. Internamente, también nos alinea con las mejores prácticas nativas de la nube utilizadas por líderes tecnológicos – similar a cómo Netflix o Uber gestionan sus sistemas. Esencialmente hemos preparado el diseño de la plataforma Navixy para el futuro.

Es importante destacar que estos logros no se obtuvieron lanzando una cantidad masiva de personal al problema. Navixy sigue siendo un equipo relativamente pequeño e inteligente (~100 profesionales) que desempeña múltiples funciones. No tenemos el lujo de cientos de ingenieros, pero con la automatización correcta y la cultura DevOps, no los necesitamos. Todo este proyecto de Kubernetes ha sido un trabajo apasionado para nuestro equipo de DevOps e ingeniería, y demuestra lo que un equipo ágil puede lograr. (¡Me gusta pensar que rendimos por encima de nuestro peso! 🥊) De hecho, nuestra experiencia refleja tendencias más amplias de la industria: un caso de estudio conocido señaló que la plataforma IoT de Bose manejaba 30,000 despliegues por año a través de docenas de microservicios con aproximadamente 100 ingenieros, gracias a Kubernetes y la automatización. Vemos el mismo principio funcionando aquí – con GitOps, CI/CD y Kubernetes, un equipo reducido puede gestionar una infraestructura distribuida globalmente a gran escala sin sudar. Se trata de trabajar de manera más inteligente, aprovechando el software y las herramientas en la nube para amplificar lo que nuestra gente puede hacer. El entusiasmo y la precisión que nuestro equipo aportó a este proyecto marcaron la diferencia.

Finalmente, ¿qué significa todo esto para ustedes – nuestros partners, desarrolladores y clientes? En términos prácticos, Navixy es ahora una plataforma más amigable para desarrolladores que nunca. Si están construyendo soluciones de telemática sobre nuestras APIs o integrando dispositivos, pueden estar seguros de que el backend es moderno y escalable. Podemos entregarles nuevas características y mejoras más rápido, con menos riesgo. Y si alguna vez tienen necesidades únicas de implementación (digamos, una instalación on-premise para un proyecto sensible), nuestro enfoque containerizado los tiene cubiertos. La plataforma Navixy puede ejecutarse en nuestra nube o la suya con la misma facilidad, lo que abre posibilidades para colaboración y soluciones personalizadas. Ya hemos tenido partners de canal aprovechando nuestra edición on-prem Dockerizada para servir a clientes que requieren estricta residencia de datos – algo que simplemente no era factible antes. En resumen, la plataforma es más flexible para todos los involucrados.

Al concluir este viaje, está claro que adoptar Kubernetes fue más que solo una actualización técnica – fue un movimiento estratégico hacia una Navixy más modular, escalable y ágil. Modernizamos nuestra arquitectura y procesos de la mano, desde pipelines de integración continua hasta observabilidad y todo lo demás. El resultado es una plataforma lista para el futuro de la telemática, respaldada por un equipo entusiasmado por seguir superando límites.

A nuestro increíble equipo de DevOps e ingeniería: ¡bravo! Este fue un proyecto complejo que manejaron con entusiasmo y habilidad, y hemos salido más fuertes del otro lado. 🎉 Y a nuestros clientes y partners: gracias por confiar en nosotros durante esta evolución. La mejor parte es que la mayoría de estos cambios fueron tras bambalinas y ustedes esperamos que solo experimentaran un Navixy más rápido y aún más confiable. Así es exactamente como debe ser.

Esperamos que esta mirada tras bastidores les haya dado una idea de cómo el pequeño equipo de Navixy está aprovechando la gran tecnología para ofrecer una plataforma de clase mundial. La conversación alrededor de la infraestructura en la nube está siempre evolucionando – términos de moda como plataformas internas para desarrolladores, GitOps y observabilidad shift-left no son solo tendencias para nosotros; son principios que hemos puesto en práctica para construir un mejor servicio. Kubernetes es ahora una parte fundamental de nuestra historia, y estamos emocionados por los cimientos que proporciona para los años venideros. Hay mucho más por hacer (¡en tecnología siempre lo hay!), pero con esta arquitectura implementada, estamos confiados y listos para lo que venga.

¡Gracias por leer! Brindemos por un futuro tan dinámico y confiable como la infraestructura que hemos construido. Si tienen preguntas o ideas, o si este tipo de trabajo les emociona, no duden en contactarnos – nos encanta compartir sobre estos temas. Después de todo, no solo estamos construyendo una plataforma; la estamos construyendo juntos con una comunidad de innovadores. ¡Feliz rastreo! 🚀