Como o iFood roda o maior app de delivery da América Latina com Kotlin, eventos e dados
O iFood liga restaurantes, mercados e entregadores a milhões de clientes, com cerca de 100 milhões de pedidos por mês. O backend é feito de microsserviços em Kotlin e Java na AWS e em Kubernetes, conversando por Kafka e eventos, com Databricks e SageMaker por trás dos dados e das centenas de modelos de machine learning.
Instrumentação de métricas e traces, junto com o Prometheus.
Como montaram
Microsserviços em Kotlin na AWS
As vagas do iFood descrevem o núcleo: microsserviços em Kotlin ou Java com Spring Boot ou Ktor, rodando na AWS com Kubernetes no EKS. Os times seguem arquitetura hexagonal e ligam os serviços por eventos via Kafka, AWS MSK ou Kinesis, além de filas SQS e SNS.
A observabilidade é feita com OpenTelemetry e Prometheus, e quem desenvolve cuida do serviço em produção, dos alertas ao post-mortem.
O middleware financeiro do iFood era um monolito com partes muito acopladas, o que aumentava as falhas e o tempo de recuperação. O time quebrou o sistema em três microsserviços e um backend for frontend, com o Amazon EventBridge como barramento de eventos entre eles.
Escolheram o EventBridge pelo filtro e roteamento, pela alta disponibilidade nativa e por pagar só pelo uso, e colocaram filas de mensagens mortas e novas tentativas para nenhum evento se perder. O PostgreSQL continuou como banco, agora um por serviço, e o tempo para lançar uma funcionalidade caiu de um mês para uma semana.
Antes, as áreas de negócio esperavam semanas por um time de dados pequeno, e alguns testes liam direto do servidor de produção. O iFood montou um simulador no Databricks e no Tableau para os times testarem cenários com o histórico de entregas sem mexer na produção.
Hoje mais de 2.000 pessoas tiram os próprios dados, e quem chega aprende a rodar consultas e notebooks no Databricks.
Ciência de dados e engenharia trabalhavam separadas, o que dificultava colocar modelos em tempo real no ar. O iFood criou uma plataforma interna de machine learning, a ML Go!, sobre o Amazon SageMaker, com pipelines de retreino, registro de modelos e endpoints controlados pela CI/CD.
Uma ferramenta chamada BruceML empacota o código de treino e de uso em containers, para os times recalibrarem e publicarem modelos de novo com rapidez e segurança.
A GenPlat, plataforma de IA generativa do iFood, é a porta única de acesso aos modelos de linguagem, sejam proprietários ou open source. Ela tira dados sensíveis antes de o prompt chegar ao provedor, controla o consumo e vigia abusos como prompt injection.
Agentes de código como Copilot, Claude Code e Cursor se conectam à GenPlat e a uma base interna com os padrões técnicos do iFood.