PLAY PODCASTS
DNSimple Is a Simple and Secure Domain Management Service

DNSimple Is a Simple and Secure Domain Management Service

with Nick Janetakis and Anthony Eden

Running in Production · Nick Janetakis

February 22, 20211h 34m

Show Notes

In this episode of Running in Production, Anthony Eden covers building a domain management service with Rails, Go and Erlang. It’s hosted on a combination of 70+ bare metal servers, AWS and Heroku. It’s been been up and running since 2010.

Anthony talks about handling millions of API queries per day, ~5 billion monthly DNS queries, spikes of up to 10,000 requests per second, sticking with a Rails monolith for the web dashboard, scaling PostgreSQL, building multiple data centers, feature flags and tons more.

Topics Include

  • 3:58 – Millions of API queries per day and 2-5 billion DNS queries per month
  • 6:40 – How Rails, Go and Erlang are being used along with why they were chosen
  • 12:54 – How DNS lookups happen and the importance of DDoS protection
  • 16:40 – The Erlang service has ~10k LOC and was written before Elixir existed
  • 21:23 – Go is responsible for a lot of glue services
  • 24:50 – A monolithic Rails app (server rendered templates) powers the web dashboard
  • 28:08 – Sidekiq (Enterprise), Redis, PostgreSQL and all services run on Ubuntu LTS
  • 29:41 – For cloud hosted services they end up on AWS or Heroku depending on what it is
  • 31:45 – There’s 2 PostgreSQL instances and only the Rails app writes to it
  • 34:55 – nginx is sitting in front of the Rails app
  • 35:43 – Topping out at 5-10k requests per second through the Erlang service
  • 42:44 – You can spin things up locally with or without Docker
  • 47:15 – Datadog is used to help view metrics and logs to detect potential issues
  • 50:10 – What exactly is Anycast?
  • 52:07 – Picking out hardware for their data centers (roughly 70 physical servers)
  • 59:29 – Chef is being used to configure all of the servers
  • 1:02:23 – What the process is like to develop something and then deploy it to production
  • 1:07:59 – Toggling feature flags, managing database migrations at scale and API versioning
  • 1:16:15 – How developers add new features through pull requests and then deploy code
  • 1:21:53 – Stripe handles all of the payments for each subscription tier
  • 1:24:26 – Handling database backups with snapshots and streaming the data offsite
  • 1:26:45 – Bugsnag is used for error handling and logs get written to Datadog as well
  • 1:29:16 – Everyone’s been working remotely from day 1 and there is no centralized office
  • 1:31:39 – Best tips? Have good processes in place as you grow in size
  • 1:34:07 – Check out https://dnsimple.com/ and you can find Anthony on Twitter
📄 References
⚙️ Tech Stack