Cloud Computing 9 min read

How Gaode Scaled Serverless to Handle 2 Million Calls per Minute During China’s Travel Festival

During the 2020 "Golden Week" travel festival, Gaode Maps leveraged Alibaba Cloud Serverless to sustain nearly two million function invocations per minute, achieving over 99.99% success rate, sub‑60 ms latency, and demonstrating significant gains in efficiency, elasticity, cost savings, and observability for large‑scale map services.

Alibaba Cloud Native
Alibaba Cloud Native
Alibaba Cloud Native
How Gaode Scaled Serverless to Handle 2 Million Calls per Minute During China’s Travel Festival

Background

During the 2020 "Golden Week" travel festival, Gaode Maps reached a record of over 100 million daily active users. The autonomous‑travel service, which handles the largest user traffic in the app, was migrated to a Serverless architecture. In the peak period the system processed close to two million function invocations per minute, demonstrating that Serverless can sustain extreme load.

Overall service success rate > 99.99 %, total triggers > 1 million per minute, QPS > 20 k, average response time < 60 ms across all scenarios.

Architecture Overview

The autonomous‑travel feature consists of three front‑end pages: the main map page, the route‑planning page, and the navigation‑completion page. Each page displays recommendation cards that must be updated quickly and styled flexibly. Gaode implemented the following Serverless pipeline:

UI template storage : Card templates (HTML/CSS) are stored in a cloud object store (e.g., OSS) and versioned.

Node FaaS layer : An Alibaba Cloud Function Compute (Node.js) function retrieves the template, aggregates data from downstream services, applies business logic, and assembles a JSON Schema that describes the final UI.

Client rendering : The mobile client receives the schema and renders the card locally, eliminating the need for a heavyweight BFF.

This design makes the front‑end layer stateless (Serverless For Front‑end, SFF), enabling automatic scaling to zero when idle.

Key Benefits

1. Simple Efficiency Gains

Traditional BFF layers become increasingly complex as features accumulate, leading to code bloat and maintenance bottlenecks. Replacing the BFF with SFF provides:

Zero‑maintenance functions that are created, updated, and deleted via code deployment.

Automatic scaling to zero, which instantly frees resources for unused endpoints.

A 40 % reduction in the end‑to‑end development lifecycle (development → testing → gray release → production) because the function code is small, isolated, and integrates directly with the CI/CD pipeline.

2. Elasticity and Cost Reduction

Map traffic exhibits sharp peaks and long troughs. With conventional servers, capacity must be provisioned for the peak, leaving large idle pools during off‑peak hours. Alibaba Cloud Function Compute offers millisecond‑level cold‑start and warm‑start times, allowing:

Instantaneous horizontal scaling based on request volume.

Pay‑as‑you‑go billing that charges only for actual invocations and execution time, dramatically lowering cost compared with always‑on VMs.

3. Observability

Function Compute integrates out‑of‑the‑box with Alibaba Cloud Log Service, CloudMonitor, distributed tracing, and Function Workflow. By configuring these services once, developers obtain:

Full‑stack metrics (QPS, latency, error rate).

Centralised logs for each function instance.

End‑to‑end request tracing across upstream services.

This unified observability simplifies troubleshooting and reduces the learning curve for operations teams.

Implementation Details

Key implementation steps are:

Store UI templates in OSS with a stable URL pattern.

Write a Node.js handler that:

const OSS = require('ali-oss');
const fetch = require('node-fetch');

exports.handler = async (event) => {
  // 1. Load template
  const template = await oss.get('templates/card.html');
  // 2. Call downstream data services
  const data = await fetch('https://api.gaode.com/rec', {method: 'POST', body: JSON.stringify(event)}).then(r=>r.json());
  // 3. Merge template and data into a schema
  const schema = buildSchema(template, data);
  return { statusCode: 200, body: JSON.stringify(schema) };
};

Deploy the function via Alibaba Cloud CLI or CI pipeline; set concurrency limits and timeout (e.g., 3 s) according to latency SLA.

Configure Log Service and CloudMonitor as the function’s log and metric destinations.

Caveats and Best Practices

Ensure the function remains stateless – do not store session data locally.

Set appropriate memory (128 MiB–512 MiB) to balance cold‑start latency and cost.

Use versioned OSS objects to avoid breaking clients when templates change.

Monitor cold‑start latency; if it exceeds the SLA, consider keeping a warm pool via provisioned concurrency.

Technical Illustrations

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

performanceServerlesscloud computingScalabilityCost Optimization
Alibaba Cloud Native
Written by

Alibaba Cloud Native

We publish cloud-native tech news, curate in-depth content, host regular events and live streams, and share Alibaba product and user case studies. Join us to explore and share the cloud-native insights you need.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.