How iFood runs Latin America's biggest delivery app on Kotlin, events and data
iFood connects restaurants, markets and couriers to millions of customers, at about 100 million orders a month. Its backend is made of Kotlin and Java microservices on AWS and Kubernetes, talking through Kafka and events, with Databricks and SageMaker behind the data and the hundreds of ML models.
Instrumentation for metrics and traces, with Prometheus.
How they built it
Kotlin microservices on AWS
iFood's job posts describe the core: microservices in Kotlin or Java with Spring Boot or Ktor, running on AWS with Kubernetes on EKS. Teams follow hexagonal architecture and wire services together with events over Kafka, AWS MSK or Kinesis, plus SQS and SNS queues.
Observability is built with OpenTelemetry and Prometheus, and engineers own their services in production, from alerts to post-mortems.
iFood's finance middleware used to be a monolith whose tightly coupled parts drove up failures and recovery time. The team split it into three microservices plus a backend for frontend, with Amazon EventBridge as the event bus between them.
They picked EventBridge for its filtering and routing, its built-in high availability and pay-per-use pricing, and added dead letter queues and retries so no event gets lost. PostgreSQL stayed as the database, now one per service, and time to ship a feature dropped from a month to a week.
Business teams used to wait weeks for a small data team, and some experiments read straight from the production server. iFood built a simulator on Databricks and Tableau so teams test scenarios on historical delivery data without touching production.
More than 2,000 employees now pull their own data, and new hires learn to run queries and notebooks in Databricks.
Data science and engineering used to work apart, which made real-time models hard to ship. iFood built an internal ML platform, ML Go!, on Amazon SageMaker, with pipelines for retraining, a model registry and endpoints managed through CI/CD.
A tool called BruceML packages training and serving code as containers, so teams can recalibrate and redeploy models quickly and safely.
GenPlat, iFood's generative AI platform, is the single gateway to language models, both proprietary and open source. It redacts sensitive data before a prompt reaches the provider, controls usage and watches for abuse like prompt injection.
Coding agents such as Copilot, Claude Code and Cursor connect to GenPlat and to an internal knowledge base of iFood's technical standards.