CF engineer here. The main pain point of pdns and CloudFlare was all the additional logic needed to support CloudFlare's cdn product. For example, for a given record, should this resolve to the origin server's IP or CloudFlare's edge node? In the case of an edge node, what particular set of CloudFlare's IPs should be returned. These are both user settable options, and need to be propagated to all dns servers in real time. Supporting this meant supporting an increasingly hacked up fork of pdns, with logic scattered though the code base. Eventually it became less work to build rrdns as a clean platform.
In terms of dns updates, see the blog post http://blog.cloudflare.com/kyoto_tycoon_with_postgresql for details on how CF does it now.
Re:The story of a little DNS easter egg
by peterwwillis on Tuesday August 27, 2013 @12:47PM
(#6284564)
I like the way bind updates its child nodes and reloads/adds new records. It allows me to load only what I want, only when I want it done, not immediately. Not to mention the dependency nightmare of requiring a stable SQL backend just to serve virtually-always-static DNS requests...
I'm not sure about "rebooting" -- if this was just a language error -- but PowerDNS can run with a MySQL or Postgres backend with instant updates to records. i.e., no reload or other configuration re-read required.
With DB replication up and running, you can get a fairly robust domain name server pool going without the usual headaches associated with copying updates to multiple servers.