A jornada do Navixy com Kubernetes: escala global, modularidade e DevOps amigável ao desenvolvedor

A jornada do Navixy com Kubernetes: escala global, modularidade e DevOps amigável ao desenvolvedor

O Kubernetes já não é apenas um termo da moda do Vale do Silício – está impulsionando sistemas críticos em diversos setores. Na verdade, cerca de 43% das empresas usam Kubernetes para implementações IoT (e outros 31% planejam adotá-lo). Da plataforma de streaming da Bose com 3 milhões de dispositivos aos provedores de automação residencial que processam milhões de mensagens com latência inferior a 200ms, o Kubernetes provou que pode oferecer escala e confiabilidade sérias em IoT e telemática.

No último ano, o Navixy decidiu que era hora de se juntar a esse grupo. Realizamos uma grande transformação: migramos nossa nuvem de telemática de servidores estáticos para uma arquitetura containerizada baseada em Kubernetes. Foi uma evolução lógica para garantir escalabilidade e estabilidade ilimitadas conforme crescemos. Hoje, queremos compartilhar o que mudou, por que fizemos isso e como isso beneficia nossos parceiros, desenvolvedores e equipe.

Por que Kubernetes e por que agora? Simplesmente porque estamos nos preparando para o futuro. A plataforma Navixy gerencia rastreamento GPS em tempo real, dados de sensores IoT e aplicativos de gestão de frotas – centenas de milhares de dispositivos transmitindo dados simultaneamente. Precisamos processar esses dados em tempo real, 24/7, em todo o mundo. O Kubernetes nos dá a flexibilidade necessária para atender a essas demandas, orquestrando dezenas de microsserviços sob demanda. Nosso sistema agora pode se ajustar dinamicamente às variações de carga, seja um influxo de novos dispositivos entrando online ou rajadas periódicas de dados do campo. Em TI, nada fica parado; essa mudança garante que não atingiremos limites de infraestrutura conforme nossa base de clientes cresce.

Em resumo, eis o que o Kubernetes traz para o Navixy:

  • Escalabilidade eficiente em tempo real
    Podemos lidar com cargas crescentes de dados e milhares de conexões simultâneas de dispositivos sem esforço, ajustando recursos em tempo real conforme a demanda.

  • Maior confiabilidade
    Os recursos de autorrecuperação e redundância do Kubernetes reduzem drasticamente o tempo de inatividade. Se um serviço falha, o Kubernetes o reinicia automaticamente ou redistribui a carga – resultando em menos interrupções e uma experiência mais fluida para os usuários.

  • Entrega mais rápida de recursos
    Implantações automatizadas de contêineres tornam nossos ciclos de lançamento mais ágeis. Podemos implementar atualizações (ou reverter, se necessário) muito mais rapidamente que antes, assim parceiros e clientes veem melhorias contínuas sem interrupções.

  • Proteções de escalabilidade com boa relação custo-benefício
    Ao escalar automaticamente apenas o necessário e otimizar as cargas de trabalho, evitamos o superprovisionamento. As proteções implementadas previnem a "expansão sem necessidade", mantendo a infraestrutura enxuta e econômica.

O que mudou em nossa Plataforma?

Já se passaram cerca de cinco anos desde nossa última análise detalhada da infraestrutura da Navixy, e muita coisa aconteceu. A maior mudança, sem dúvida, foi a migração para o Kubernetes. Transformamos nossa plataforma, antes monolítica, em microsserviços executados em contêineres, orquestrados pelo Kubernetes em uma nuvem distribuída. Na prática, o Kubernetes gerencia desde serviços de ingestão de dados até APIs e módulos de lógica de negócios – todas as engrenagens sob o capô. Essa abordagem nativa em nuvem trouxe benefícios imediatos em desempenho e resiliência: o Kubernetes detecta e recupera-se automaticamente de falhas, assim um problema em um componente não causa mais uma interrupção geral. Implantações que costumavam ser arriscadas e lentas agora são rotineiras – as atualizações são mais suaves e as reversões são tão simples quanto reiniciar um contêiner. Em resumo, a plataforma Navixy tornou-se mais modular, ágil e robusta.

Embora nossos clientes e parceiros não vejam o Kubernetes diretamente, eles sentem a diferença no serviço do dia a dia. Veja como:

  • Maior confiabilidade. A plataforma está mais estável do que nunca. O Kubernetes nos ajuda a detectar falhas e recuperar automaticamente, resultando em menos interrupções. Garantimos com tranquilidade uma disponibilidade de 99,99% e até alcançamos "cinco noves" em alguns trimestres – o que significa praticamente nenhum tempo de inatividade.

  • Inovação mais rápida. Com a automação de implantação, podemos entregar atualizações com mais frequência. Clientes e integradores têm acesso a novos recursos e melhorias mais rapidamente, sem esperar por grandes lançamentos ocasionais. Nossa pipeline de CI/CD garante que as atualizações sejam implementadas de forma suave e segura em incrementos graduais.

  • Escalabilidade sem esforço. Conforme nossos clientes crescem (mais dispositivos, mais dados, mais usuários), a nuvem Navixy escala automaticamente com eles. Podemos adicionar capacidade em tempo real e até expandir a plataforma para novas regiões rapidamente. Não há perda de desempenho com o crescimento – seja um cliente com 10 dispositivos ou 10.000, a experiência permanece ágil.

Para um SaaS de telemática que atende um público global, essas melhorias são revolucionárias. Um aplicativo de gerenciamento de frota na América do Norte e uma rede de sensores IoT na Europa desfrutam de serviço confiável e baixa latência porque, nos bastidores, nossa infraestrutura pode expandir, contrair e se recuperar conforme necessário. E, importante, todas essas mudanças ocorrem sem aumentar a complexidade para nossos usuários – está tudo sob o capô, silenciosamente tornando tudo melhor.

Reconstruindo nossa infraestrutura (sem perder o ritmo)

E como conseguimos realizar tudo isso? Aqui está um olhar nos bastidores da nossa jornada de migração para o Kubernetes. Spoiler: envolveu muito planejamento, algumas noites em claro e uma equipe de DevOps que não acredita em atalhos.

Há cerca de três anos, decidimos que era hora de repensar a configuração da nossa infraestrutura. Tudo estava funcionando bem, mas tínhamos objetivos maiores – queríamos mais flexibilidade, responder mais rapidamente às mudanças e eliminar quaisquer gargalos de escalabilidade que pudessem nos limitar. O Kubernetes já estava em nosso roadmap (aguardando ansiosamente por atenção em nosso backlog), e esse era o momento perfeito para colocá-lo em ação. Afinal, o que poderia ser mais gratificante para uma equipe de DevOps do que implementar uma Infraestrutura como Código completa e modernizar toda a stack? 😁

Etapa 1: GitOps e CI/CD – Estabelecendo as bases

Sabíamos que a migração para o Kubernetes só seria bem-sucedida se nossos processos também fossem modernizados. Então, primeiro, reformulamos nossa forma de entregar software. Agora, toda a configuração de nossa plataforma – do código dos serviços aos manifestos do Kubernetes – está em um repositório Git, servindo como fonte única da verdade. Sempre que um desenvolvedor ou engenheiro DevOps envia uma alteração, os pipelines de CI/CD automatizados entram em ação para construir, testar e implantar em todos os nossos ambientes. Na prática, cada serviço Navixy é construído não apenas como um binário, mas como uma imagem de contêiner. Isso significa que o que roda na máquina do desenvolvedor é exatamente o que roda em produção (acabaram-se os problemas do tipo "funciona na minha máquina"). Adotamos completamente os modelos de implantação GitOps: usando ferramentas como Argo CD, nossos clusters se reconciliam continuamente com o estado declarado no Git. Simplificando: qualquer mudança, seja de código ou configuração, é aplicada através de commits versionados, e o Kubernetes simplesmente faz acontecer. Isso nos dá uma transparência e controle imensos. Podemos rastrear qual versão de um serviço está rodando em cada ambiente e, se algo der errado, reverter é tão simples quanto desfazer um commit no Git. Nossa pipeline se tornou verdadeiramente uma plataforma interna para desenvolvedores da Navixy, automatizando tudo, desde builds até atualizações de infraestrutura. É moderna, modular e transparente – permitindo que nossa equipe foque em funcionalidades em vez de se preocupar com servidores.

Kubernetes in telematics

Figura: O pipeline GitOps CI/CD da Navixy simplifica a entrega – código e configuração no Git disparam builds automatizados (CI), containerização e implantações nos clusters Kubernetes (CD). Ferramentas de monitoramento (Prometheus, Grafana, Graylog) fecham o ciclo de feedback, fornecendo observabilidade sobre a saúde da plataforma para melhoria contínua.

Uma grande conquista dessa nova abordagem foi a capacidade de lançar uma edição On-Premise containerizada da Navixy junto com nosso SaaS na nuvem. Na verdade, esse foi um dos primeiros grandes resultados da "Etapa 1". Ao containerizar toda nossa stack, simplificamos o processo de empacotar a Navixy para clientes que desejam executá-la em seu próprio ambiente. Agora existe um script de Instalação Fácil (literalmente chamado de Easy installation) que implanta a Navixy nos servidores do cliente via Docker/Kubernetes – sem necessidade de profundo conhecimento em Linux. Isso é um diferencial importante para parceiros que atendem governos ou empresas com requisitos rigorosos de residência de dados. Poucos provedores de telemática SaaS oferecem essa flexibilidade, mas o investimento da Navixy em DevOps tornou possível manter uma única base de código que pode rodar tanto em nossa nuvem multi-tenant quanto na nuvem privada do cliente. Em resumo, nossas melhorias internas se traduziram em um produto melhor para determinados clientes, oferecendo uma opção Navixy portátil e auto-hospedada sem complicações adicionais.

Etapa 2: Otimizando o fluxo de dados com Kafka

O próximo passo da nossa transformação foi adotar o Apache Kafka como elemento central do nosso pipeline de dados. Embora não seja estritamente necessário para o Kubernetes, o Kafka tornou-se uma peça fundamental da nossa nova arquitetura para lidar com o crescimento dos fluxos de dados. Agora, todos os nossos fluxos intensos de dados passam por um cluster Kafka de alta capacidade em cada região. Por quê? Imagine centenas de milhares de rastreadores GPS reconectando-se simultaneamente após uma queda de rede – isso gera uma enorme rajada de dados atingindo o sistema. No passado, gerenciávamos esses picos com cache improvisado ou escalonamento manual. Agora, o Kafka atua como um grande buffer que suaviza os picos de tráfego, enfileirando os dados dos dispositivos e alimentando nossos microsserviços em um ritmo constante. A plataforma permanece estável e responsiva mesmo durante "tempestades" de mensagens recebidas. Gostamos de chamar o Kafka de nosso "controlador de tráfego aéreo" – ele garante que nenhum dado seja perdido e nenhum serviço fique sobrecarregado. Essa adição melhorou a resiliência e desacoplou nossos serviços de forma eficiente (produtores e consumidores de dados agora são intermediados pelo Kafka). Como bônus, está preparando o terreno para novos recursos analíticos em desenvolvimento, já que ter um fluxo central de eventos abre muitas possibilidades. Mais uma vez, é um exemplo de como adotar tecnologias comprovadas do mercado para fortalecer a Navixy.

Etapa 3: Migração para Kubernetes (o evento principal!)

Com as bases estabelecidas, enfrentamos a migração principal – transferindo todos os nossos serviços para o Kubernetes sem tempo de inatividade. Nossa equipe de DevOps/SRE segue um lema: "não quebre o que funciona." Por isso, abordamos essa migração de forma muito cuidadosa e metódica. Não foi simplesmente apertar um botão. Em vez disso, movemos os componentes para o Kubernetes gradualmente, testando durante o processo, ao longo de aproximadamente 1,5 ano. Por um tempo, operamos em modo híbrido, com algumas partes em VMs clássicas e outras no K8s, mudando o equilíbrio progressivamente. Constantemente nos perguntávamos "como fazer isso sem que nenhum cliente perceba?" e implementamos várias medidas de segurança e monitoramento (falaremos sobre observabilidade em breve!) para garantir que não estávamos introduzindo regressões. A mudança final para o Kubernetes completo aconteceu no início de 2025, e tenho orgulho em informar que completamos toda a transição sem nenhuma interrupção no serviço. Para uma plataforma 24/7 que recebe dados a cada segundo, isso não é pouca coisa – e não poderia estar mais orgulhoso da nossa equipe por ter conseguido. 💪 Basicamente reconstruímos o avião da Navixy em pleno voo, e nenhum passageiro sentiu turbulência. (Se parece que estamos empolgados com isso, é porque realmente estamos!)

Durante essa jornada, também aprimoramos nossas ferramentas de observabilidade para monitorar tudo de perto. Instrumentamos a nova plataforma com Prometheus para métricas, Graylog/ELK para logs e painéis Grafana para visualizar tudo. Isso não foi apenas para monitoramento posterior – incorporamos a observabilidade em nosso processo de desenvolvimento e implantação. Seguindo a verdadeira abordagem "shift-left", nossos engenheiros utilizam essas ferramentas em ambientes de teste e homologação para identificar problemas precocemente, não apenas em produção. O impacto de cada alteração no código pode ser observado através de métricas e logs quase instantaneamente, fechando o ciclo de feedback para melhoria contínua. Se algo estiver errado, saberemos antes que afete qualquer cliente. Na prática, isso significa menos surpresas às 3h da manhã e mais confiança em cada release. (Nossa equipe de plantão certamente aprecia isso.)

O resultado: Uma plataforma mais robusta para Usuários, Parceiros e Desenvolvedores

Agora que a poeira baixou, qual é o resultado final? Em uma palavra, "perfeição". Um dos nossos engenheiros descreveu brincando a nova plataforma baseada em Kubernetes como "pura perfeição... a elegância e o controle que sempre buscamos". Coisas que costumavam ser difíceis agora são muito mais simples. Deixe-me destacar alguns resultados e por que eles são importantes:

  • Escalabilidade e eficiência sob demanda. Nossa capacidade agora expande ou contrai automaticamente com base na carga em tempo real. Se um grande número de dispositivos começar a enviar dados repentinamente, o Kubernetes criará mais pods para lidar com isso. Quando a carga diminui, ele reduz os recursos. Isso mantém nossa utilização de recursos alta (frequentemente acima de 80%) sem superprovisionar. Estamos essencialmente obtendo mais dos mesmos recursos. E aqueles picos de tráfego loucos que às vezes aconteciam? O Kafka nos protege, armazenando os picos em buffer para que a experiência do usuário permaneça estável. Resultado final: desempenho consistente sem necessidade de intervenção manual durante os picos de uso. Nossas operações são mais econômicas e escaláveis ao mesmo tempo – uma ótima combinação.

  • Implantações mais rápidas e alcance global. Distribuir atualizações ou lançar um novo cluster de servidores é drasticamente mais rápido agora. Qualquer alteração na plataforma, em qualquer lugar do mundo, está a apenas um commit do Git e uma execução de pipeline CI da produção. No passado, implantar um novo nó regional (por exemplo, configurar nossa plataforma em um novo data center para um cliente) levava meses de planejamento e configuração manual. Agora é questão de dias ou até horas – principalmente automação fazendo o trabalho. Já implantamos novos clusters Kubernetes em regiões adicionais com mínimo esforço. Isso significa que a Navixy pode se expandir para novas regiões ou nuvens privadas de clientes muito rapidamente, uma grande vantagem competitiva à medida que nosso negócio global cresce. Em resumo, podemos escalar horizontalmente sem as dores de cabeça habituais. Nossa arquitetura multi-regional (com clusters na Europa, América do Norte e mais) é mais fácil de expandir e gerenciar do que nunca.

  • Alta disponibilidade por design. O Kubernetes, combinado com nossa configuração multi-datacenter e multi-região, elevou nossa alta disponibilidade a outro nível. Cada um de nossos clusters regionais abrange 2-3 data centers com distribuição automática de carga. Se um data center inteiro cair (batendo na madeira), o Kubernetes transfere as cargas de trabalho para os outros – os usuários nem perceberão. Essencialmente, incorporamos a redundância em nuvem em nosso DNA. Nossa página de status pública (status.navixy.com) reflete essa resiliência; problemas podem ocorrer em uma zona, mas o sistema como um todo permanece operacional. Essa arquitetura nos permitiu atingir consistentemente a meta de 99,99% de uptime. Não é apenas teoria – vimos o Kubernetes rapidamente realocar cargas de trabalho durante incidentes reais, evitando tempo de inatividade. Para os clientes, significa que a Navixy está disponível quando você precisa, ponto final.

  • Modularidade e manutenibilidade. Dividir a plataforma em microsserviços tornou muito mais fácil desenvolver e manter. Cada serviço (processamento de dados GPS, geocodificação, relatórios etc.) pode ser trabalhado independentemente e implantado em seu próprio cronograma. Se quisermos atualizar o módulo de relatórios, podemos implantar apenas esse container sem tocar nos outros. Se algo se comportar mal, o Kubernetes pode isolar e reverter apenas essa parte, sem impacto no resto do sistema. Esse tipo de isolamento é uma grande melhoria em relação aos velhos tempos, quando um bug podia derrubar um aplicativo monolítico. Para nossos parceiros desenvolvedores que constroem sobre as APIs da Navixy, essa modularidade significa que os serviços que eles dependem são mais confiáveis e podem evoluir mais rapidamente. Internamente, também nos alinha com as melhores práticas nativas da nuvem usadas por líderes de tecnologia – similar a como Netflix ou Uber gerenciam seus sistemas. Essencialmente, preparamos o design da plataforma Navixy para o futuro.

Importante ressaltar que esses ganhos não foram obtidos jogando uma quantidade massiva de mão de obra no problema. A Navixy ainda é uma equipe relativamente pequena e inteligente (cerca de 100 profissionais) que desempenham múltiplas funções. Não temos o luxo de centenas de engenheiros, mas com a automação e cultura DevOps adequadas, não precisamos de tantos. Todo este projeto Kubernetes tem sido um trabalho de amor para nossa equipe de DevOps e engenharia, e mostra o que uma equipe ágil pode realizar. (Gosto de pensar que jogamos acima do nosso peso! 🥊) Na verdade, nossa experiência reflete tendências mais amplas do setor: um estudo de caso conhecido observou que a plataforma IoT da Bose lidava com 30.000 implantações por ano em dezenas de microsserviços com cerca de 100 engenheiros, graças ao Kubernetes e automação. Vemos o mesmo princípio em ação aqui – com GitOps, CI/CD e Kubernetes, uma equipe enxuta pode gerenciar uma infraestrutura distribuída globalmente em larga escala sem suar. Trata-se de trabalhar de forma mais inteligente, aproveitando software e ferramentas em nuvem para amplificar o que nosso pessoal pode fazer. O entusiasmo e a precisão que nossa equipe trouxe para este projeto fizeram toda a diferença.

Finalmente, o que tudo isso significa para você – nossos parceiros, desenvolvedores e clientes? Na prática, a Navixy é agora uma plataforma mais amigável para desenvolvedores do que nunca. Se você está construindo soluções de telemática em nossas APIs ou integrando dispositivos, pode confiar que o backend é moderno e escalável. Podemos entregar novos recursos e melhorias mais rapidamente, com menos risco. E se você tiver necessidades únicas de implantação (digamos, uma instalação on-premise para um projeto sensível), nossa abordagem containerizada tem você coberto. A plataforma Navixy pode rodar em nossa nuvem ou na sua com igual facilidade, o que abre possibilidades para colaboração e soluções personalizadas. Já tivemos parceiros de canal aproveitando nossa edição Dockerizada on-prem para atender clientes que exigem residência estrita de dados – algo que simplesmente não era viável antes. Em resumo, a plataforma está mais flexível para todos os envolvidos.

Ao concluir esta jornada, fica claro que adotar o Kubernetes foi mais do que apenas uma atualização técnica – foi um movimento estratégico em direção a uma Navixy mais modular, escalável e ágil. Modernizamos nossa arquitetura e processos em conjunto, desde pipelines de integração contínua até observabilidade e tudo entre eles. O resultado é uma plataforma que está pronta para o futuro da telemática, apoiada por uma equipe animada para continuar inovando.

Para nossa incrível equipe de DevOps e engenharia: bravo! Este foi um projeto complexo que vocês conduziram com entusiasmo e habilidade, e saímos mais fortes do outro lado. 🎉 E para nossos clientes e parceiros: obrigado por confiar em nós durante esta evolução. A melhor parte é que a maioria dessas mudanças aconteceu nos bastidores e você esperamos que tenha experimentado apenas uma Navixy mais rápida e ainda mais confiável. É exatamente assim que deve ser.

Esperamos que este olhar nos bastidores tenha dado insights sobre como a pequena equipe da Navixy está aproveitando grande tecnologia para entregar uma plataforma de classe mundial. A conversa sobre infraestrutura em nuvem está sempre evoluindo – buzzwords como plataformas internas de desenvolvimento, GitOps e observabilidade shift-left não são apenas modismos para nós; são princípios que colocamos em prática para construir um serviço melhor. O Kubernetes é agora uma parte central da nossa história, e estamos empolgados com a base que ele fornece para os próximos anos. Há muito mais a fazer (em tecnologia sempre há!), mas com esta arquitetura implementada, estamos confiantes e prontos para o que vier pela frente.

Obrigado pela leitura! Aqui está um brinde a um futuro tão dinâmico e confiável quanto a infraestrutura que construímos. Se você tem perguntas ou ideias, ou se este tipo de trabalho te empolga, sinta-se à vontade para entrar em contato – adoramos conversar sobre essas coisas. Afinal, não estamos apenas construindo uma plataforma; estamos construindo-a junto com uma comunidade de inovadores. Bom rastreamento! 🚀