{"action":"created","comment":{"url":"https://api.github.com/repos/thoughtbot/guides/pulls/comments/35423598","id":35423598,"diff_hunk":"@@ -220,6 +220,11 @@ Browsers\n \n * Don't support versions of Internet Explorer before IE9.\n \n+DNS\n+---\n+\n+* Avoid using non-standard DNS entries (i.e. ALIAS, ANAME).","path":"best-practices/README.md","position":7,"original_position":7,"commit_id":"18958dbe1938485b7a3bbf4baa18bdfdcc3a0e24","original_commit_id":"18958dbe1938485b7a3bbf4baa18bdfdcc3a0e24","user":{"login":"derekprior","id":152152,"avatar_url":"https://avatars.githubusercontent.com/u/152152?v=3","gravatar_id":"","url":"https://api.github.com/users/derekprior","html_url":"https://github.com/derekprior","followers_url":"https://api.github.com/users/derekprior/followers","following_url":"https://api.github.com/users/derekprior/following{/other_user}","gists_url":"https://api.github.com/users/derekprior/gists{/gist_id}","starred_url":"https://api.github.com/users/derekprior/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/derekprior/subscriptions","organizations_url":"https://api.github.com/users/derekprior/orgs","repos_url":"https://api.github.com/users/derekprior/repos","events_url":"https://api.github.com/users/derekprior/events{/privacy}","received_events_url":"https://api.github.com/users/derekprior/received_events","type":"User","site_admin":false},"body":"Nitpick appreciated and you are correct.\n\nOn Friday, July 24, 2015, Mike Burns <notifications@github.com> wrote:\n\n> In best-practices/README.md\n> <https://github.com/thoughtbot/guides/pull/347#discussion_r35418161>:\n>\n> > @@ -220,6 +220,11 @@ Browsers\n> >\n> >  * Don't support versions of Internet Explorer before IE9.\n> >\n> > +DNS\n> > +---\n> > +\n> > +* Avoid using non-standard DNS entries (i.e. ALIAS, ANAME).\n>\n> Super grammatical nitpick but this feels more like an e.g. than an i.e. to\n> me (\"for example\" instead of \"that is\").\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/thoughtbot/guides/pull/347/files#r35418161>.\n>\n","created_at":"2015-07-24T13:51:04Z","updated_at":"2015-07-24T13:51:04Z","html_url":"https://github.com/thoughtbot/guides/pull/347#discussion_r35423598","pull_request_url":"https://api.github.com/repos/thoughtbot/guides/pulls/347","_links":{"self":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/comments/35423598"},"html":{"href":"https://github.com/thoughtbot/guides/pull/347#discussion_r35423598"},"pull_request":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/347"}}},"pull_request":{"url":"https://api.github.com/repos/thoughtbot/guides/pulls/347","id":40260362,"html_url":"https://github.com/thoughtbot/guides/pull/347","diff_url":"https://github.com/thoughtbot/guides/pull/347.diff","patch_url":"https://github.com/thoughtbot/guides/pull/347.patch","issue_url":"https://api.github.com/repos/thoughtbot/guides/issues/347","number":347,"state":"open","locked":false,"title":"Avoid using non-standard DNS entries","user":{"login":"derekprior","id":152152,"avatar_url":"https://avatars.githubusercontent.com/u/152152?v=3","gravatar_id":"","url":"https://api.github.com/users/derekprior","html_url":"https://github.com/derekprior","followers_url":"https://api.github.com/users/derekprior/followers","following_url":"https://api.github.com/users/derekprior/following{/other_user}","gists_url":"https://api.github.com/users/derekprior/gists{/gist_id}","starred_url":"https://api.github.com/users/derekprior/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/derekprior/subscriptions","organizations_url":"https://api.github.com/users/derekprior/orgs","repos_url":"https://api.github.com/users/derekprior/repos","events_url":"https://api.github.com/users/derekprior/events{/privacy}","received_events_url":"https://api.github.com/users/derekprior/received_events","type":"User","site_admin":false},"body":"We have frequently configured our sites and client sites to redirect the\n`www` subdomain to the zone apex. For example, `www.thoughtbot.com`\nredirects to `thoughtbot.com`. This works fine until you decide to put\nthe site behind a CDN.  Using a CDN like Fastly requires that you CNAME\nyour host to their servers. Per DNS spec, you cannot have a CNAME at\nyour zone apex.\n\nWe get around this by using DNSimple, which has an `ALIAS` record that\neffectively simulates a CNAME at the apex. This isn't standard though,\nand most providers do not offer it. Providers that do, often offer it as\nan `ANAME` instead -- also non-standard. By relying on one of these\nrecord types, we are locking ourselves in to these providers and more\nimportantly making it more difficult to be fault tolerant.\n\nDNSimple went down hard last year and took all of our sites and\ncustomers with them. Had we been using standard DNS servers it would\nhave been a best practice to have a backup provider listed as one of our\nname servers. Backup providers can sync your DNS records from your\nprimary provider via zone transfer (`AXFR`). But the proprietary nature\nof DNSimple's ALIAS was at least in-part responsible for this not being\npossible with DNSimple. Even if we had access to our full zone record,\nuploading to another provider would have meant temporarily compromising\nthe ALIAS feature.\n\nDNSimple has since worked out secondary DNS offerings provided by a\nlimited number of providers. If those providers don't support `ALIAS`\nthen DNSimple pushes the IP that `ALIAS` resolves to as an `A` record.\nSo you're again throwing out the `ALIAS` functionality.\n\nMost of this should \"just work\" now that they've put some effort behind\nit, but it's still a lot of magic for something that can just be avoided\nby forgoing the vanity of an apex domain. Yes, it looks prettier, but I\ndon't think it's worth all of this hullabaloo. I've learned to stop\nworrying and love my www.\n\nThis PR comes out of a discussion on thoughtbot/suspenders/565.","created_at":"2015-07-17T18:49:58Z","updated_at":"2015-07-24T13:51:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7f17e36a74efb4b1eb291c35d5c4e4577630c9dd","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/thoughtbot/guides/pulls/347/commits","review_comments_url":"https://api.github.com/repos/thoughtbot/guides/pulls/347/comments","review_comment_url":"https://api.github.com/repos/thoughtbot/guides/pulls/comments{/number}","comments_url":"https://api.github.com/repos/thoughtbot/guides/issues/347/comments","statuses_url":"https://api.github.com/repos/thoughtbot/guides/statuses/18958dbe1938485b7a3bbf4baa18bdfdcc3a0e24","head":{"label":"thoughtbot:dp-dns","ref":"dp-dns","sha":"18958dbe1938485b7a3bbf4baa18bdfdcc3a0e24","user":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"repo":{"id":5200099,"name":"guides","full_name":"thoughtbot/guides","owner":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/thoughtbot/guides","description":"A guide for programming in style.","fork":false,"url":"https://api.github.com/repos/thoughtbot/guides","forks_url":"https://api.github.com/repos/thoughtbot/guides/forks","keys_url":"https://api.github.com/repos/thoughtbot/guides/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thoughtbot/guides/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thoughtbot/guides/teams","hooks_url":"https://api.github.com/repos/thoughtbot/guides/hooks","issue_events_url":"https://api.github.com/repos/thoughtbot/guides/issues/events{/number}","events_url":"https://api.github.com/repos/thoughtbot/guides/events","assignees_url":"https://api.github.com/repos/thoughtbot/guides/assignees{/user}","branches_url":"https://api.github.com/repos/thoughtbot/guides/branches{/branch}","tags_url":"https://api.github.com/repos/thoughtbot/guides/tags","blobs_url":"https://api.github.com/repos/thoughtbot/guides/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thoughtbot/guides/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thoughtbot/guides/git/refs{/sha}","trees_url":"https://api.github.com/repos/thoughtbot/guides/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thoughtbot/guides/statuses/{sha}","languages_url":"https://api.github.com/repos/thoughtbot/guides/languages","stargazers_url":"https://api.github.com/repos/thoughtbot/guides/stargazers","contributors_url":"https://api.github.com/repos/thoughtbot/guides/contributors","subscribers_url":"https://api.github.com/repos/thoughtbot/guides/subscribers","subscription_url":"https://api.github.com/repos/thoughtbot/guides/subscription","commits_url":"https://api.github.com/repos/thoughtbot/guides/commits{/sha}","git_commits_url":"https://api.github.com/repos/thoughtbot/guides/git/commits{/sha}","comments_url":"https://api.github.com/repos/thoughtbot/guides/comments{/number}","issue_comment_url":"https://api.github.com/repos/thoughtbot/guides/issues/comments{/number}","contents_url":"https://api.github.com/repos/thoughtbot/guides/contents/{+path}","compare_url":"https://api.github.com/repos/thoughtbot/guides/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thoughtbot/guides/merges","archive_url":"https://api.github.com/repos/thoughtbot/guides/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thoughtbot/guides/downloads","issues_url":"https://api.github.com/repos/thoughtbot/guides/issues{/number}","pulls_url":"https://api.github.com/repos/thoughtbot/guides/pulls{/number}","milestones_url":"https://api.github.com/repos/thoughtbot/guides/milestones{/number}","notifications_url":"https://api.github.com/repos/thoughtbot/guides/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thoughtbot/guides/labels{/name}","releases_url":"https://api.github.com/repos/thoughtbot/guides/releases{/id}","created_at":"2012-07-27T03:15:44Z","updated_at":"2015-07-23T15:29:18Z","pushed_at":"2015-07-21T20:20:30Z","git_url":"git://github.com/thoughtbot/guides.git","ssh_url":"git@github.com:thoughtbot/guides.git","clone_url":"https://github.com/thoughtbot/guides.git","svn_url":"https://github.com/thoughtbot/guides","homepage":"https://robots.thoughtbot.com","size":4093,"stargazers_count":4124,"watchers_count":4124,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":619,"mirror_url":null,"open_issues_count":18,"forks":619,"open_issues":18,"watchers":4124,"default_branch":"master"}},"base":{"label":"thoughtbot:master","ref":"master","sha":"90774b40f0f5233c27a4d0ae53adac7fe2bea491","user":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"repo":{"id":5200099,"name":"guides","full_name":"thoughtbot/guides","owner":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/thoughtbot/guides","description":"A guide for programming in style.","fork":false,"url":"https://api.github.com/repos/thoughtbot/guides","forks_url":"https://api.github.com/repos/thoughtbot/guides/forks","keys_url":"https://api.github.com/repos/thoughtbot/guides/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thoughtbot/guides/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thoughtbot/guides/teams","hooks_url":"https://api.github.com/repos/thoughtbot/guides/hooks","issue_events_url":"https://api.github.com/repos/thoughtbot/guides/issues/events{/number}","events_url":"https://api.github.com/repos/thoughtbot/guides/events","assignees_url":"https://api.github.com/repos/thoughtbot/guides/assignees{/user}","branches_url":"https://api.github.com/repos/thoughtbot/guides/branches{/branch}","tags_url":"https://api.github.com/repos/thoughtbot/guides/tags","blobs_url":"https://api.github.com/repos/thoughtbot/guides/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thoughtbot/guides/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thoughtbot/guides/git/refs{/sha}","trees_url":"https://api.github.com/repos/thoughtbot/guides/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thoughtbot/guides/statuses/{sha}","languages_url":"https://api.github.com/repos/thoughtbot/guides/languages","stargazers_url":"https://api.github.com/repos/thoughtbot/guides/stargazers","contributors_url":"https://api.github.com/repos/thoughtbot/guides/contributors","subscribers_url":"https://api.github.com/repos/thoughtbot/guides/subscribers","subscription_url":"https://api.github.com/repos/thoughtbot/guides/subscription","commits_url":"https://api.github.com/repos/thoughtbot/guides/commits{/sha}","git_commits_url":"https://api.github.com/repos/thoughtbot/guides/git/commits{/sha}","comments_url":"https://api.github.com/repos/thoughtbot/guides/comments{/number}","issue_comment_url":"https://api.github.com/repos/thoughtbot/guides/issues/comments{/number}","contents_url":"https://api.github.com/repos/thoughtbot/guides/contents/{+path}","compare_url":"https://api.github.com/repos/thoughtbot/guides/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thoughtbot/guides/merges","archive_url":"https://api.github.com/repos/thoughtbot/guides/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thoughtbot/guides/downloads","issues_url":"https://api.github.com/repos/thoughtbot/guides/issues{/number}","pulls_url":"https://api.github.com/repos/thoughtbot/guides/pulls{/number}","milestones_url":"https://api.github.com/repos/thoughtbot/guides/milestones{/number}","notifications_url":"https://api.github.com/repos/thoughtbot/guides/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thoughtbot/guides/labels{/name}","releases_url":"https://api.github.com/repos/thoughtbot/guides/releases{/id}","created_at":"2012-07-27T03:15:44Z","updated_at":"2015-07-23T15:29:18Z","pushed_at":"2015-07-21T20:20:30Z","git_url":"git://github.com/thoughtbot/guides.git","ssh_url":"git@github.com:thoughtbot/guides.git","clone_url":"https://github.com/thoughtbot/guides.git","svn_url":"https://github.com/thoughtbot/guides","homepage":"https://robots.thoughtbot.com","size":4093,"stargazers_count":4124,"watchers_count":4124,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":619,"mirror_url":null,"open_issues_count":18,"forks":619,"open_issues":18,"watchers":4124,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/347"},"html":{"href":"https://github.com/thoughtbot/guides/pull/347"},"issue":{"href":"https://api.github.com/repos/thoughtbot/guides/issues/347"},"comments":{"href":"https://api.github.com/repos/thoughtbot/guides/issues/347/comments"},"review_comments":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/347/comments"},"review_comment":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/thoughtbot/guides/pulls/347/commits"},"statuses":{"href":"https://api.github.com/repos/thoughtbot/guides/statuses/18958dbe1938485b7a3bbf4baa18bdfdcc3a0e24"}}}}