Case study · Stack

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.
Copy this stackifood.com.br Food and grocery delivery · Brazil · founded 2011

Language

Hosting

Database

  • PostgreSQLaws.amazon.com

    Relational database, one per microservice in the finance middleware.

Mobile framework

Data fetching

  • Kafkajob-boards.greenhouse.io

    Event-driven integration between services, also via AWS MSK.

  • Amazon SQSjob-boards.greenhouse.io

    Queues for async communication between services, with SNS topics.

  • Amazon EventBridgeaws.amazon.com

    Event bus of the finance middleware.

    Why: Filtering and routing, built-in high availability and pay-per-use pricing.

  • Databricksdatabricks.com

    Company-wide data platform, with Delta Lake and Databricks SQL.

    Why: To end the analysis bottleneck and test many hypotheses at once without touching production.

Backend framework

AI model

  • Amazon SageMakeraws.amazon.com

    Trains, registers and serves the ML models behind the ML Go! platform.

    Why: To make model training reproducible and production deploys reliable, scalable and traceable.

Analytics

Error monitoring

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.

Sources:job-boards.greenhouse.io job-boards.greenhouse.io

Breaking up the finance monolith with events

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.

Sources:aws.amazon.com

Data for everyone on Databricks

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.

Sources:databricks.com

Hundreds of models on SageMaker

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.

Sources:aws.amazon.com

A gateway for generative AI

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.

Sources:tech.ifood.com.br

Also detected on their website

Found on the homepage with the open Wappalyzer rules (HTML, scripts and headers). It shows what runs in the browser, not the whole backend.

  • Cloudflare
  • HSTS
  • HTTP/3