# Multi-region with GeoDNS

> Open a second region, route each region's Users to it with GeoDNS, and keep reads local, so far Users stop paying the ocean twice on every request.

Run a copy of the stack near each large group of Users, and let GeoDNS send them there.

## Move up when

- Users on another continent are slow and the load bars look healthy, so the delay is distance.
- **Why users leave** lists far regions at the top.
- A far Users' request pays the round trip twice, once to open the connection and once to ask.

## The Design

Before, all Users enter the home region.



After, European Users enter their own Users Node.



The picture shows the home tab. Nodes in Europe carry an EU tag and the round trip to reach them, and a link across regions shows its cost under the belt. The European App Server reads from a local replica and writes to the home primary.

## Why it works

With GeoDNS each region's Users enter their own Users Node, or the nearest one that is up. Their App Server sits beside them, so calls skip the ocean. A replica answers reads at home. Regions with no Node of their own, such as Asia-Pacific here, still reach the nearest one and pay its trip, which that region's own Apdex shows.

## What it costs

Writes still cross to the primary, and some replica reads come back stale. Calls between regions bill egress, so keep each region's App Server calling its own data. Each open region costs Cash to open and adds the Burn of every Node you copy into it. The Mirror copies a region for you and then drifts, and a Region outage takes down every Node in it that is not global.

## In Quorum

Set a Node's **Region** and place a Users Node there. Research [Multiple zones](https://wiki.playquorum.dev/research/multi-az.md), [Multiple regions](https://wiki.playquorum.dev/research/multi-region.md), [GeoDNS](https://wiki.playquorum.dev/research/geo-dns.md) and [Infrastructure as code](https://wiki.playquorum.dev/research/infra-as-code.md). Follow [Go global](https://wiki.playquorum.dev/guides/go-global.md) and read [GeoDNS](https://wiki.playquorum.dev/glossary/geodns.md). The next rung, [compute at the edge](https://wiki.playquorum.dev/patterns/compute-at-the-edge.md), moves small handlers next to the user.

Source: https://wiki.playquorum.dev/patterns/multi-region-with-geodns
