<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1" -->

---
title: Simone Carletti: Rails at the Center of DNSimple | daily.dev
description: DNSimple's CTO Simone Carletti describes how Ruby on Rails anchors a polyglot DNS infrastructure spanning Ruby, Go and Erlang. The 15-person engineering team...
canonical: https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Simone Carletti: Rails at the Center of DNSimple | daily.dev
og:description: DNSimple's CTO Simone Carletti describes how Ruby on Rails anchors a polyglot DNS infrastructure spanning Ruby, Go and Erlang. The 15-person engineering team...
og:url: https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1
og:image: https://api.daily.dev/og/posts/RpYclSXc1.png
og:image:alt: Simone Carletti: Rails at the Center of DNSimple
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Simone Carletti: Rails at the Center of DNSimple

**[Ruby on Rails](https://daily.dev/sources/rubyonrails)** · 105 min read · 0 upvotes · 0 comments

## Summary

DNSimple's CTO Simone Carletti describes how Ruby on Rails anchors a polyglot DNS infrastructure spanning Ruby, Go and Erlang. The 15-person engineering team splits its stack roughly 50% Ruby, 30% Go and 20% Erlang, each running a core component: Rails handles the main app, Go runs the zone server, and Erlang powers the name servers. One customer's zone holds over 2 million DNS records. Restart time dropped from 35 minutes to 60 seconds once data was distributed to edge locations. The team layers controllers, interactors and services in Rails to share logic between UI and API, and after three attempts over 12 years containerized the stack for local development.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=9n9ld04i43Q>

## Questions this post answers

### How does DNSimple split its tech stack between Ruby, Go, and Erlang?

DNSimple's stack is roughly 50% Ruby, 30% Go, and 20% Erlang. Ruby on Rails runs the main application handling UI, API, billing, and business logic. Go powers the zone server, a lightweight in-memory process that replicates DNS data across edge data centers. Erlang runs the custom name servers (Erlang DNS Simple), chosen for its pattern matching, which maps naturally to decomposing DNS RFC binary packets.

_Developers weighing a polyglot backend split like this can compare real architecture tradeoffs on daily.dev._

### Why did DNSimple replace PowerDNS with a custom Erlang name server?

Around 2012, PowerDNS could not efficiently support new DNS patterns like pointing apex domains to hostnames (e.g., GitHub Pages), because CNAME records can't be used at the apex. DNSimple tried a Ruby-based pipeline injected into PowerDNS resolution, which didn't work well, then built its own Erlang-based name server, deploying it to production around 2014 as the primary name server while keeping PowerDNS only for AXFR zone synchronization.

_Anyone evaluating whether to build versus buy a DNS layer can track these tradeoffs via daily.dev._

### What is the interactor and service pattern used to organize a large Rails application?

Controllers handle authentication and permission checks, then hand off to interactors, which represent each public action a user can take (register a domain, transfer a domain, sign up). Interactors orchestrate calls to service objects that hold the business logic and external integrations (like registry HTTP calls), while models are kept thin and limited to database interaction only, with no external HTTP calls allowed in models.

_Teams refactoring a bloated Rails codebase can follow patterns like this through daily.dev._

## Similar posts on daily.dev

- [Goodbye Nginx and Redis: Building a Zero-Service Monolith in Rails 8](https://daily.dev/posts/goodbye-nginx-and-redis-building-a-zero-service-monolith-in-rails-8-wxtfhhpwk) · Ruby Flow · 0 upvotes · 0 comments
- [DNS is infrastructure. It’s time to manage it that way.](https://daily.dev/posts/dns-is-infrastructure-it-s-time-to-manage-it-that-way--t4fx0zlcn) · The New Stack · 1 upvotes · 0 comments
- [48 companies you didn't know were using Rails in 2026](https://daily.dev/posts/48-companies-you-didn-t-know-were-using-rails-in-2026-32r6qjgry) · thoughbot · 1 upvotes · 1 comments
- [Many Keepers](https://daily.dev/posts/many-keepers-llbivve9v) · RUBYLAND · 0 upvotes · 0 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#rails](https://daily.dev/tags/rails), [#dns](https://daily.dev/tags/dns), [#erlang](https://daily.dev/tags/erlang)

[View this post on daily.dev](https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Simone Carletti: Rails at the Center of DNSimple","url":"https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1"},"datePublished":"2026-10-25T08:15:57.252Z","dateModified":"2026-10-25T08:22:45.857Z","description":"DNSimple's CTO Simone Carletti describes how Ruby on Rails anchors a polyglot DNS infrastructure spanning Ruby, Go and Erlang. The 15-person engineering team...","image":"https://i.ytimg.com/vi/9n9ld04i43Q/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/9n9ld04i43Q/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Ruby on Rails","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Ruby on Rails","logo":"https://media.daily.dev/image/upload/s--24ECqlCO--/f_auto,q_auto/v1792916147/logos/rubyonrails?_a=BAMAMiiw0","url":"https://daily.dev/sources/rubyonrails"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"architecture,rails,dns,erlang","timeRequired":"PT105M","video":{"@type":"VideoObject","name":"Simone Carletti: Rails at the Center of DNSimple","description":"DNSimple's CTO Simone Carletti describes how Ruby on Rails anchors a polyglot DNS infrastructure spanning Ruby, Go and Erlang. The 15-person engineering team...","thumbnailUrl":"https://i.ytimg.com/vi/9n9ld04i43Q/sddefault.jpg","uploadDate":"2026-10-25T08:15:57.252Z","duration":"PT105M","url":"https://api.daily.dev/r/RpYclSXc1","embedUrl":"https://www.youtube.com/embed/9n9ld04i43Q"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ruby on Rails","item":"https://daily.dev/sources/rubyonrails"},{"@type":"ListItem","position":3,"name":"Simone Carletti: Rails at the Center of DNSimple"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/simone-carletti-rails-at-the-center-of-dnsimple-rpyclsxc1#faq","mainEntity":[{"@type":"Question","name":"How does DNSimple split its tech stack between Ruby, Go, and Erlang?","acceptedAnswer":{"@type":"Answer","text":"DNSimple's stack is roughly 50% Ruby, 30% Go, and 20% Erlang. Ruby on Rails runs the main application handling UI, API, billing, and business logic. Go powers the zone server, a lightweight in-memory process that replicates DNS data across edge data centers. Erlang runs the custom name servers (Erlang DNS Simple), chosen for its pattern matching, which maps naturally to decomposing DNS RFC binary packets. Developers weighing a polyglot backend split like this can compare real architecture tradeoffs on daily.dev."}},{"@type":"Question","name":"Why did DNSimple replace PowerDNS with a custom Erlang name server?","acceptedAnswer":{"@type":"Answer","text":"Around 2012, PowerDNS could not efficiently support new DNS patterns like pointing apex domains to hostnames (e.g., GitHub Pages), because CNAME records can't be used at the apex. DNSimple tried a Ruby-based pipeline injected into PowerDNS resolution, which didn't work well, then built its own Erlang-based name server, deploying it to production around 2014 as the primary name server while keeping PowerDNS only for AXFR zone synchronization. Anyone evaluating whether to build versus buy a DNS layer can track these tradeoffs via daily.dev."}},{"@type":"Question","name":"What is the interactor and service pattern used to organize a large Rails application?","acceptedAnswer":{"@type":"Answer","text":"Controllers handle authentication and permission checks, then hand off to interactors, which represent each public action a user can take (register a domain, transfer a domain, sign up). Interactors orchestrate calls to service objects that hold the business logic and external integrations (like registry HTTP calls), while models are kept thin and limited to database interaction only, with no external HTTP calls allowed in models. Teams refactoring a bloated Rails codebase can follow patterns like this through daily.dev."}}]}
```

