Loading…
Driving Southeast Asia Forward with AWS
GrabArul Kumaravel
Summary
Grab transitioned its transportation platform from a single Ruby on Rails monolith on Amazon EC2 and Amazon RDS MySQL to a microservices architecture hosted on Amazon Web Services. The platform processes multi-petabyte real-time data flows and hundreds of millions of GPS data points to match drivers with passengers and push proactive demand heat maps. Operational efficiency is sustained with fewer than ten full-time infrastructure engineers, supported by AWS managed services. The analytics backend also transitioned from MySQL to Amazon Redshift, eventually moving to an Amazon S3 data lake using Amazon EMR and Presto. These data-driven matching systems improved driver-passenger allocation rates by up to 30%.
Context
Scaling a transportation platform across 40 cities in 7 countries required processing real-time demand, unpredictable weather, and multi-petabyte GPS data streams without ballooning infrastructure maintenance headcount.
Approach / What changed
Grab migrated from a monolithic Ruby on Rails architecture to microservices on AWS, running its analytics platform on an S3 data lake with EMR and Presto while using real-time demand mapping to dispatch drivers.
Takeaways
- Leveraging real-time big data mapping increased driver-passenger booking allocation rates by up to 30%.
- Fewer than 10 full-time engineers maintain the entire underlying AWS infrastructure despite a 200-fold increase in usage over four years.
- The internal analytics architecture evolved across iterations from MySQL to Amazon Redshift, and ultimately to an Amazon S3 data lake running Presto on Amazon EMR.
Related reading
Grab ·
Scaling developer experience: How we improved Android Studio in a large monorepo
Grab's passenger Android monorepo contains roughly 2,000 modules and 11 million lines of code, leading to IDE sync times exceeding 35 minutes on cold starts. While Bazel handles application builds, Android Studio relies on Gradle sync to construct its project model, requiring Gradle to evaluate every module during configuration. To solve this bottleneck, the team built a custom Focus plugin that restricts IDE syncing to target modules and their direct dependencies. The architecture reuses a static dependency graph generated during existing Gradle-to-Bazel migration tasks to eliminate the Gradle configuration phase during module selection. An IntelliJ extension and a Groovy method-shadowing technique in settings.gradle allow developers to configure focused modules directly through a graphical user interface.
Rifqi FahmiGrab ·
Enabling R8 optimization at scale with AI-assisted debugging
Grab experienced widespread Application Not Responding spikes across its Android superapp, driven by memory pressure and complex Jetpack Compose layouts embedded in legacy code. While switching to advanced R8 optimization promised significant performance gains, obfuscated stack traces and two-hour remote compilation cycles stalled investigation across nine million lines of code. To resolve this, engineers built Model Context Protocol tools to automate APK decompilation, deobfuscation, and code context extraction. The team paired these tools with an AI workflow that used the GitLab CLI to generate multiple solution branches and run verification builds in parallel. This strategy replaced hours of manual reverse engineering with minutes of automated analysis, allowing the team to debug and validate aggressive optimizations at scale.
Nguyen Van MinhGrab ·
Data Mesh at Grab (Part II): The foundational tools behind certification
Grab operationalizes its Signals Marketplace data mesh through integrated platforms designed for continuous data certification and observability. The central metadata management platform, Hubble, extends open-source DataHub to model metadata as an event-driven graph and expose search, lineage, ownership, and data contracts. An automated certification engine built on the DataHub Actions framework continuously evaluates metadata changes, classifying assets into Uncertified, Certified, CertifiedPlus, or Revoked states. Genchi serves as the data quality observability layer, using Temporal and Kafka to run checks for freshness, volume completeness, schema stability, and semantic rules. To eliminate false-positive alerts caused by decoupled cron schedules, Genchi integrates with the Lighthouse monitoring service to trigger quality tests immediately upon pipeline completion.
Aezo TeoGrab ·
From firefighting to building: How AI agents restored our team’s core productivity
Grab's Analytics Data Warehouse team spent roughly 40% of their engineering bandwidth answering repetitive questions, tracing data lineage, and handling basic pipeline enhancement requests across more than 15,000 tables. To eliminate these manual investigative bottlenecks, the team implemented a multi-agent AI architecture using FastAPI, LangGraph, Redis, and PostgreSQL. Incoming requests route through two dedicated pathways: an enhancement pipeline for generating code changes and an investigation pipeline for diagnosing data anomalies. Specialized agents interact with underlying engines like Trino, GitLab, and observability platforms to query data, trace transformations, and check ongoing incidents before synthesizing findings. This system automates the context-gathering process within minutes while maintaining human-in-the-loop review for merge requests and production changes.
Sneh Agrawal