What are GeoFabrics?
In 17.7, we’ve introduced a feature that allows users to create fabrics for multiple regions in the Macrometa GDN. GeoFabrics gives users more control over where their data can be stored and accessed.
In the past, new Macrometa users have had two options: access to all global regions or create a local collection that doesn't replicate to all regions. This had two downsides:
- Not every application needs data to go to all regions, and in some cases, not all data should
- Limiting to a single location/region is too restrictive
GeoFabrics give users the ability to use a subset regions, all based on their own criteria and not pre-generated (such as US, Europe, or Asia, for example). GeoFabrics helps GDN users not only comply with local data regulations (such as GDPR) but reduce read/write costs associated with global replication. GeoFabrics offers more options for where data should be stored/accessed, and this flexibility is offered via a simpler on/off switch. Users now have more control of data and the costs associated with reads/writes of that data. Just select the regions you need and we'll handle all of the ops. Better yet, GeoFabrics functionality is available to all users (no phone calls, emails, or signups required 😉).
What is a tenant/fabric global URL?
When a user creates a new GeoFabric, the Macrometa GDN generates a specific global URL, and a set of regional URLs for that fabric. This fabric global URL provides geo-routing capabilities, so a request to this global URL will automatically get routed to the closest geolocation - relative to where the request was issued.
Tenant and fabric-specific URLs are essentially alias DNS records that map to the federation global/regional DNS records of the GDN. These are automatically created based on where the tenant/fabric is created. From there, all corresponding alias regional DNS records for this tenant/fabric are created on the Macrometa cloud DNS service. A unique global DNS record is created for that tenant/fabric, containing all of its alias regional DNS records, and configured with geo-location routing.
Macrometa tenant/fabric global URLs follow a specific naming convention: [name of a sea animal]-[CRC32 hash of the tenant/fabric combination + the DNS hosted zone name].
To illustrate how a tenant/fabric global URL is generated, we’ll walk through a typical tenant signup workflow and the creation of a GeoFabric spanning three locations.
After signing up for a free dev account and clicking on the verification link in the confirmation email, the tenant is created along with the unique global DNS record.
Next, login from the signup page.
Once logged in, the user is redirected to a page with their unique global tenant URL. Note: All edge locations are selected by default.
Now that this tenant is accessible, we can create a geo fabric for this tenant: Let’s create a fabric spanning two edge locations: on Cedar Knolls, NJ, US and Frankfurt, Germany.
Upon the successful GeoFabric creation, we can see that a unique fabric global URL, along with its unique regional URLs, is also created. Notice that only two regional URLs are currently available (with toggle on), and the fabric global URL will only route requests to either edge location, based on the geolocation of the originating requests.
There is an option to enable the third region: Mumbai, India for the fabric, effectively expanding the geo fabric to this region by creating the fabric in the Mumbai edge location, and enabling the geo-routing to the Mumbai regional URL on the fabric global URL: https://manta-58abf7ad.paas.macrometa.io/.
The toggle button next to the now disabled Mumbai region can be switched, and it will generate a support ticket to Macrometa, notifying the platform administrator to add this region to this geo fabric on the customer’s behalf.
All of this happens in just a few steps. Watch it in action:
How does a tenant/fabric global URL work?
Overall, the tenant/fabric global URL is built on the existing federation global URL of the GDN, with its geo-routing capabilities. In addition, the global URL feature is expanded to allow the customer to create a fabric with a subset of available edge locations from the GDN, along with a unique URL for the fabric. Any request made to this unique URL will get routed to the closest location of the fabric
When a tenant/fabric is created/updated/deleted, the tenant/fabric global URLs are automatically created/updated/deleted on Macrometa cloud DNS service, along with necessary health check records, geolocation traffic policy records, etc. These DNS information are also maintained as a part system collections of GDN database.
Typical ways to generate a tenant/fabric global and its regional URLs:
During the sign up workflow of a tenant: a unique tenant global URL is generated, along with its regional URLs; customer is automatically redirected to the tenant global URL after successful login in to GDN.
Tenant creates a new fabric, and selects available edge locations for that fabric. The fabric global/regional URLs information are displayed under “GEO FABRIC” page.
After a fabric is created, the tenant has the option to enable/disable a specific location for that fabric, resulting in this location being added/removed from the geo-replication; the fabric global/regional DNS records are also updated accordingly in the Macrometa cloud DNS service.
Why do we need the tenant/fabric global URL?
Many new Macrometa users didn’t need to use ALL regions provided by GDN, at least initially. Requiring them to use a static list of ALL regions added unnecessary friction for new users.
Similarly, some customers prefer to isolate the data to only certain regions for regulatory reasons. Ex: GDPR, CCP etc.
On the other hand, customers want the geo-routing capabilities of GDN. There had to be an option other than ALL or one.
The GeoFabrics feature bridges this gap: customers can use a single fabric global URL that provides geo-routing capabilities to direct the request to the region closest to them, without resorting to the current approach. With a tenant/fabric global URL, customers can get the geo-routing capabilities of the GDN without having the tenant or fabric running on all GDN regions.
Customers also receive a uniquely identifiable global URL per tenant, and one unique global URL per fabric created by that tenant, which can be used with the customer application, along with the GDN drivers. They can use a single tenant/fabric global URL to direct requests to the appropriate edge location, without having to resort to using any regional specific federation URL, i.e. “gdn-us-west.paas.macrometa.io”.
The benefits of GeoFabrics
GeoFabrics allow us to solve a core issue for first-time users but also allows for users to better control how and where they access their data. Having more control of data is a huge priority, not just for Macrometa users, but for everyone. We’re happy to provide this level of granularity without additional operations or infrastructure required from the user.
Data geolocation is not a new feature, and restricting data to specific regions is especially not new. What makes GeoFabrics different is that it's an improvement to our existing platform and makes the Macrometa GDN even more flexible than other solutions.
- While DynamoDB has a max of 5 regions, Macrometa can provide a much bigger range, depending on your data's unique requirements
- Fauna Regions allows users to restrict data to certain locations, but those regions are pre-determined (US, Europe, Asia, for example)
- Google's Cloud Spanner offers multi-region support, but latency can increase with each node and data migration is...sticky, to put it mildly
TL;DR We’re a global data platform that lets users create geo-distributed databases that work in unison without any ops, and GeoFabrics help us do better at it.
Sign up for a forever-free dev account and try out GeoFabrics for yourself.
Visit the Macrometa docs.