Evaluation of Google Maps' Design

Evaluate the Google Maps System Design by analyzing how segmenting the global road network ensures high availability and scalability. Learn how sharding the graph improves response times and how live data analytics enhance path accuracy and ETA calculations.

Requirements compliance

Let’s evaluate how the system handles millions of queries per second while ensuring fast response times.

Availability

Hosting a massive road network graph on a single server caused critical issues:

  • Memory limits: The graph was too large to fit in memory, rendering query processing impossible.

  • Connection limits: A single server could not maintain persistent connections for millions of concurrent users.

  • Single point of failure: If the server failed, the entire system became unavailable.

We resolved these issues by dividing the world into small segments, where each segment is a graph small enough to fit in a server’s memory. This approach achieved the following:

  • Distributed hosting: Segments are hosted on separate servers, eliminating the global graph memory bottleneck.

  • Load balancing: Requests are distributed across segment servers based on the user’s search area, preventing overload on any single node.

  • Replication: Replicating segments (though not detailed earlier) handles failover and distributes read load, ensuring high availability.

Note: Google Maps uses lazy loadingLazy loading is postponing the loading or initialization of resources or objects until they are needed. It reduces initial load time by reducing the amount of content to load, saves bandwidth by delivering content to users when required, and preserves server and client resources by rendering only some of the content. Thus, it increases performance and saves system resources. of data, putting less burden on the system, which improves availability.