Just as you can drive a car without being a mechanic, you can also set up a website without understanding how all of the components under the hood work. While moving my sites to a new server (moved to a Hybrid server with WiredTree to reduce my costs), I was testing its performance and looked to optimize its speed. One place that popped out as an area that could be improved was the initial DNS lookup. Would it be a worthwhile investment even for a small site like mine?
The bare minimum to getting a website up and running consists of three steps:
- Register a domain
- Acquire hosting
- Point domain to hosting server
- Put HTML page or CMS on hosting to show website
It’s great that it is so easy but it also means there are intermediate steps that can optimize a website for better performance. Fortunately, I have had the opportunity to gain plenty of experience in running a small site across many hosts to learn and try to improve the process I use. Step 3, pointing the domain to the hosting server, is what this article focuses on.
Hosting provider’s nameserver
The usual way things go, when you sign up for hosting, they provide you with their name server. You hop back over to your domain registrar (GoDaddy, Hover, etc.) and enter the name server you were just given like ns1.host.com. You are now relying on a separate server from your hosting to translate your domain name to the IP address of your server.
In one of my hosting endeavors, the hosting provider’s name server was under a DDoS and it made my site unreachable for hours. To hopefully be less of a target, I switched the registrar to point to a nameserver running off of my server. This would utilize something like BIND, MyDNS, or NSD running on the local host to answer DNS queries.
External, specialized nameserver
Self-hosting the DNS entries was pretty straightforward. WHM took care of all the information when I created an account. However, it was an area that could be sped up and increased the load on the server.
As another example from experience, there was an instance where my server went down. My email is offloaded to Google Apps but since the server was housing the MX records, the email discussion with hosting support got stuck and didn’t arrive in my inbox.
Looking for some more redundancy and speeding up the process, I looked for external name servers. To start, I took a look at SolveDNS monthly speed comparison report.
As you can see from the speed report, there are a lot of options out there providing DNS lookups that would offer a speed increase compared to running it locally.
I shopped around across those and ruled out those that were too expensive and compared what I received for the cost. Features like IP Anycast, DNS SEC, IPv6 support, monitoring, and others would be added benefits to a fast, external DNS provider.
Out of the top three: You can use CloudFlare for DNS alone without their CDN easily and for free. I have used them before but found them often targeted, which has caused downtime for my site before. I’m looking for more reliability, not less. Dyn was more expensive even though they just introduced a new tier that utilizes Anycast. Currently, I am utilizing DNSMadeEasy’s 30 day trial for my sites. After that, it will be $30 per year for 10 domains and 5 million queries per month.
The change over was simple. You setup your account with DNSMadeEasy and create your DNS records, which can mostly be duplicated from what is currently working for you. This also gave me the opportunity to clean up some of the old records that had been migrated over or automatically created.
So far, I have been pleased with DNSMadeEasy. It was certainly easy. The Anycast network gives me redundancy and they have a history of excellent uptime. Their cost is also quite manageable. It has a number of features though not all of them but it is a good blend of performance and affordability for a small site like 404 Tech Support.