bridgy-fed
bridgy-fed copied to clipboard
Scale ATProto handle resolution
We need to serve ATProto handle resolution for all users bridged into ATProto (background: #381). They support both DNS and HTTPS methods, but our ATProto handles are multi-level, eg @[email protected]
becomes user.mastodon.social.ap.brid.gy
, and you can't make multi-level wildcard SSL certs, so HTTPS won't work, so DNS it is.
We're currently using Google Cloud DNS. It serves the entire brid.gy
DNS zone, and we create _atproto
records for handle resolution manually. The catch is that GCP DNS has a hard limit of 10k records per zone, which we'll likely outgrow. Grr.
We could make a zone per sub-subdomain, eg per fediverse instance, so mastodon.social.ap.brid.gy
would become its own zone, but GCP DNS also has a hard limit of 10k zones total.
So, we eventually need to switch to a different programmatic DNS service or run our own DNS server. Whee.
Provider lists: https://en.wikipedia.org/wiki/List_of_managed_DNS_providers https://www.g2.com/categories/managed-dns-providers https://serverauth.com/posts/comparing-dns-hosting-providers
Upcoming option: https://dns.kitchen/ , all you can eat zones/records, $5/mo.
@neatnik mentioned https://desec.io/ too.
Also https://dns.he.net/, https://www.nova53.net/, https://ns-global.zone/ .
Maybe obsoleted by #830 🤞
...nope, turns out #830 probably won't work after all, so this issue definitely still applies.
The 10k limit in Google Cloud DNS is a quota, rrsetsPerManagedZone
, that I can request an increase for. May try that.
- https://cloud.google.com/dns/quotas#quotas
- https://console.cloud.google.com/iam-admin/quotas?service=dns.googleapis.com&metric=dns.googleapis.com%2Fquota%rrsets_per_managed_zone&project=brid-gy
Tried requesting a quota bump. 🤞
In unrelated very good news, @bnewbold built us a whole new microservice to solve this! https://github.com/bluesky-social/atproto/discussions/1697#discussioncomment-9308726 . Extremely generous of him. Thank you Bryan!!!
More good news, I asked for a GCP DNS quota bump to 50k and got it. Woo!
We're currently at 6500 DNS records, with the limit still at 50k. We'll (hopefully) still need to figure this out eventually, but it seems like we have plenty of time.