DNSimple

Heroku Extends Domain Provider’s Internal Infrastructure for Fast Deployment of Tools and Services

DNSimple helps developers save time with easy domain management services.

Managing domains can often be confusing and complicated. Developers want to register and configure a domain with as little effort as possible. Instead, they become mired in the complexities and upselling that comes with traditional providers. More time spent wrestling with domain issues means less time spent on building product.

DNSimple was founded in 2010 to remove much of the friction around domain setup and management. The company provides a streamlined system for setting up and managing DNS records and SSL certification, including an easy-to-use interface and an API with various code libraries and tools. DNSimple’s mission is to help developers save time and effort around domain management, so they can move on to more pressing concerns and ultimately get more done.

Heroku extends internal infrastructure

DNSimple operates their own infrastructure through ServerCentral, a managed data center provider based in Chicago. The company runs an Anycast DNS network that covers five points of presence around the world with data centers in Japan, Europe, and the U.S. Their customer-facing web app, dnsimple.com, and primary data stores are also hosted on this infrastructure.

After the first couple of years in business, DNSimple wanted an alternate way to deploy apps to production quickly by adding a platform-as-a-service component to their system. The founder had been familiar with the Heroku platform for many years, and had always been impressed with Heroku’s ease of use.

From its early days, Heroku has worked magic. With a simple Git push, the Heroku platform does all the builds and deploys—it just makes the most sense from a developer standpoint. Now, I deploy to Heroku first before anywhere else. Anthony Eden, Founder, DNSimple

With Heroku, the development team could push out new apps quickly to Heroku without dealing with the complexity of their core infrastructure. Heroku’s simplicity and intuitive tools allowed the company to focus less on DevOps and more on higher-value activities, such as building their business and evolving their product portfolio.

One of the reasons why we chose Heroku is that we feel a kindred spirit with Heroku—like DNSimple, Heroku was created for developers by developers. Anthony Eden, Founder, DNSimple

The introduction of Heroku Postgres as a managed service was also a big advantage for DNSimple. Multiple Heroku apps could each have their own data store, and the team didn’t have to worry about operations or having to adapt the core database running on their own infrastructure.

Communications between DNSimple’s internal and external systems are kept contained with well-defined protocols using JSON over HTTPS.

Towards a Heroku-first approach

Initially, DNSimple deployed apps using Heroku’s free plan. This allowed the company to experiment with new ideas and iterate as needed. As the apps matured and traffic grew, they’d move the apps over to a paid plan. Now that free SSL is available for custom domains on Heroku's paid plans, the team starts all new apps at the Hobby level.

DNSimple’s first apps were Qbot instances, which helped operate their infrastructure. As the company focused on developing new products and driving adoption of their API, DNSimple began routinely deploying all new apps to Heroku. Most apps now stay on Heroku for the long term.

The DNSimple team writes apps on Heroku in Ruby, Go, Node.js, and Elixir. The platform’s polyglot approach, coupled with Heroku Buildpack support, was a critical factor in DNSimple’s choice to go with Heroku.

The ability to deploy different types of apps in different languages is a huge win for us. Heroku Buildpacks make it easy to deploy apps without having to set up the underlying infrastructure on the virtual machine. We love that. Anthony Eden, Founder, DNSimple

DNSimple apps on Heroku

Most of DNSimple’s apps on Heroku are tools, services, and smaller systems that can run outside of the company’s internal infrastructure. This enables the DNSimple team to accelerate the time to market for new features and updates, and drive a faster evolution of their product portfolio.

The “Zone Vision” app can take any domain and inspects its DNS/zone data to check for issues or domains already in use. The app is a mix between a useful troubleshooting tool and a marketing tool for customers. The front-end—zone.vision—is written in HTML and JavaScript and runs on Amazon Cloud Front. The back-end API—api.zone.vision—is written in Go and runs on Heroku. It primarily handles DNS queries and processing. The team was able to build and deploy their API on Heroku in just a couple of days.

DNSimple’s web notification service is an API written in Go running on Heroku with its own Heroku Postgres database. Whenever a user creates a webhook on the DNSimple main app, the main app calls over HTTPS with JSON to the web notification service to add the webhook to its database. The next time a webhook is triggered in the main app, it first hits the web notification service running on Heroku, which then delivers the notification to all the webhook’s subscribers. Although it would have been possible to build the service on their internal infrastructure, the team found it much faster to deploy on Heroku.

On the radar: Apache Kafka on Heroku

The DNSimple team has been exploring Apache Kafka on Heroku to determine whether the cloud-based, managed Kafka service can benefit them in the future. Currently, webhooks are triggered synchronously over HTTPS with JSON. The team is evaluating the merits of switching to an event stream with multiple listeners in order to improve performance and expand opportunities for new features and products. They are particularly excited by the integration of Kafka with the Heroku platform, which would allow them to bypass the significant investment they would otherwise need to set up and manage their own Kafka instance.

A growing product portfolio

The DNSimple team is working on refining and expanding their offerings with new apps on Heroku, including DNSimple API v2 and Let’s Encrypt SSL certificate integration, which enables customers to get ready-to-go certificates via an API or webhook call.

DNSimple also offers two Heroku DNS Snippets written in Elixir that connect a domain to a Heroku app and manages DNS setup, as well as SSL installation and certificate renewal. Inspired by the Heroku Add-on model, the company plans to launch a full platform that will foster their own ecosystem by enabling developers to build DNSimple add-ons.

As the company grows, DNSimple will continue to stay laser-focused on ways to make life easier for developers. They’ve even simplified customer education by explaining DNS in a web comic, How DNS Works. Sometimes simplicity can also be fun.