A Quick Introduction to Geo-Distributed Apps
You are not alone if you have never heard of a geo-distributed application. According to my (non-scientific) survey, approximately 50 percent of us haven’t. The term “geo-distributed” is a relatively new one, coined around the time that many of us jumped on the cloud bandwagon and started building cloud native applications.
So what is a geo-distributed app? Microsoft defines it as an app that spans multiple geographic locations for high availability and resiliency. However, I would expand Microsoft’s definition: a geo-distributed app spans multiple geographic locations for high availability, resiliency, compliance, and performance. So that may feel like too many buzzwords. I will not dispute that there are a few in that sentence. However, let’s break that definition down into pieces because it is accurate and concise—if you read it in full context.
The high availability/resiliency part of the definition implies that the app can withstand all types of cloud outages, including major incidents. A typical cloud environment comes with abundant resources and services. Still, you shouldn’t expect those resources to be available 100% of the time. High outage rates continue to plague organizations. According to a recent study, one in five have had a “serious” or “severe” outage between 2019 and 2022. According to the same report, this marks a slight tick upward in terms of the number of incidents.
Once down, it takes longer to recover. Prolonged downtime is the norm. In 2021, nearly 30% last more than 24 hours—up 8% in three years. And that is just major outages. Minor outages happen all the time. Geo-distributed apps aim to remain available and resilient even in the event of major (or minor) cloud incidents.
So, what does compliance mean when discussing geo-distributed apps? Remember the advent of GDPR and its data residency requirement that mandated that all data pertaining to a group of citizens or residents had to be collected, processed, and/or stored inside the country/area? Well, that about sums up how geo-distributed apps can help with compliance.
Suppose you create an app for US-based users, which becomes a big success. You would like to offer that same service to EU users. Is your architecture ready for that? Or do you need to postpone the launch because the app is not yet GDPR-compliant? With a geo-distributed app, GDPR compliance (for example) happens quickly and organically. The distributed nature of those apps ensures that users’ personal data can remain in the country/area of origin.
Let’s use some visuals to help explain how geo-distributed apps help with performance.
Let’s say that an app’s data resides in a single cloud region, like the US Western region (see above). Users who live nearby can experience a latency as low as 5ms (NOTE: Google Cloud strives to deliver 5ms roundtrip latencies between availability zones within a region). However, suppose the user interacts with the app from South Asia. In that case, latency might be 40x higher (~220ms in Google Cloud because the traffic needs to travel through cables—over mountains and under oceans).
The geo-distributed app can effectively compete against the laws of physics and brutal reality (ocean cables) so that a user from South Asia can experience the same (or comparable) latency as a user from the western part of the United States. HINT: it has everything to do with the database.