
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Tue, 14 Apr 2026 21:30:17 GMT</lastBuildDate>
        <item>
            <title><![CDATA[The Internet Mince Pie Data Base: 2018 Edition]]></title>
            <link>https://blog.cloudflare.com/internet-mince-pie-database/</link>
            <pubDate>Mon, 24 Dec 2018 09:33:36 GMT</pubDate>
            <description><![CDATA[ A year ago, we unveiled the true mission of Cloudflare’s scale: to find the best mince pie available to the public. Discover what makes a mince pie great and how to learn this at Cloudflare’s scale. ]]></description>
            <content:encoded><![CDATA[ <p>In December 2017 we unveiled the <a href="/imdb-2017/">true potential</a> of Cloudflare’s scale: to find the best commercially available mince pie and let the world know about it. In 2018, we’ve all been extremely busy helping Cloudflare &amp; our customers, and therefore we left it <i>very</i> late this year. Uncomfortably late.</p><p>If you want to know the best mince pie to buy in 2018 right now, skip straight to the bottom of this post where we reveal the winner. If you want to understand more about what makes a mince pie great and how we can learn this at Cloudflare’s scale - read on.</p>
    <div>
      <h2>How do you review 42 varieties of mince pie in an hour?</h2>
      <a href="#how-do-you-review-42-varieties-of-mince-pie-in-an-hour">
        
      </a>
    </div>
    <p>With a very short amount of time to get this research out to a discerning and demanding public, we engaged the entire Cloudflare London team to help. Team members diligently went out and purchased mince pies from all over the South East of England for everyone to taste.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7jZ2L5QDE6kEQZ99YLWeea/2e524861a4f9969ad8abe85955b0a933/mince_pie_collecting_collage.png" />
            
            </figure><p>On Monday the team assembled for a “Mince Pie Jam”, where we would taste &amp; consistently review each pie:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/191cbkS3GWDQFlk2vHIp3P/63842c9eea00cb215f19580cee41d488/2018_mince_pie_jam_kitchen.jpg" />
            
            </figure>
    <div>
      <h2>A quick refresher - what is a mince pie?</h2>
      <a href="#a-quick-refresher-what-is-a-mince-pie">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4hvZNibFEBxOfXo1UqMkd2/543453431e2cf33c28c6b59d5d76ec38/internet_search_mince_pies.png" />
            
            </figure><p>As we can see from even the most cursory Internet search, there are a lot of questions surrounding mince pies. After some confusion relating to our 2017 edition of the IMDB we should clearly state: modern mince pies do not contain meat. A Mince Pie is “a sweet pie of British origin, filled with a mixture of dried fruits and spices called mincemeat, that is traditionally served during the Christmas season in the English world.” - <a href="https://en.wikipedia.org/wiki/Mince_pie">Wikipedia for Mince Pie</a></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/9l4k8S5cx7UqPVdw7p25L/886121a89eafd3a780bd90449fef52ef/mincepie-Sketch--Today-at-14.07.04.png" />
            
            </figure>
    <div>
      <h2>Our methodology</h2>
      <a href="#our-methodology">
        
      </a>
    </div>
    <p>We reviewed the mince pies in terms of its characteristics as well as overall. Each mince pie was given a score of 1 to 10 for each of the following:</p><ul><li><p>Innovation</p></li><li><p>Booziness</p></li><li><p>Pastry to Filling Ratio</p></li><li><p>Pastry</p></li><li><p>Mince</p></li><li><p>Overall rating</p></li></ul><p>The top 3 categories there are somewhat objective measurements compared to the more subjective ones below. During analysis, this created some exciting opportunities.</p>
    <div>
      <h2>Analysis</h2>
      <a href="#analysis">
        
      </a>
    </div>
    <p>With this combination of 3 subjective &amp; 3 objective metrics and a total of 214 submitted reviews by our team, we had a lot of data. To break this data down Nela quickly settled on the Pearson Correlation Coefficient (PCC).</p>
    <div>
      <h3>The Pearson Correlation Coefficient</h3>
      <a href="#the-pearson-correlation-coefficient">
        
      </a>
    </div>
    <p><a href="https://wikipedia.org">Wikipedia</a> describes the PCC as follows:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1iok4F6Gh9I3kqz4e16YyF/709ee53c3f83f81dd87ca7f2c66eab0a/f76ccfa7c2ed7f5b085115086107bbe25d329cec.1.0.0_" />
            
            </figure><blockquote><p>The correlation coefficient ranges from −1 to 1. A value of 1 implies that a linear equation describes the relationship between X and Y perfectly, with all data points lying on a line for which Y increases as X increases. A value of −1 implies that all data points lie on a line for which Y decreases as X increases. A value of 0 implies that there is no linear correlation between the variables.</p></blockquote><p>By setting our X Value as the Overall Rating, we were able to plug in each of the other metrics from our reviews as the Y value, to understand how important each of these characteristics are in producing a high quality result.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/As76BfBuh2Rcz9zZVHq5c/646c19c3259e6adfea3e2611523b9b89/2018_mince_pie_correlation_coefficient-1.png" />
            
            </figure><p>2018 Internet Mince pie Database evaluation criteria coefficient. <a href="https://public.tableau.com/profile/nela7296#!/vizhome/2018MincePieRatingCriteria/RatingCriteriaCoefficient">Explore the full dataset</a></p><p>From this data we can conclude that satisfaction with a pie’s mince filling is the most likely criteria for overall pie satisfaction with <code>r=.841</code>, while innovation creates a negative correlation implying that traditional mince pies are favoured, and straying from this will only lead to dissatisfaction. Alcohol content had a minor positive correlation while pastry, pastry to filling ratio, and aesthetic had an average positive correlation.</p>
    <div>
      <h3>Word Association</h3>
      <a href="#word-association">
        
      </a>
    </div>
    <p>Along with scores, our reviewers also left tasting notes which gave an insight into how they arrived at their scores. Taking the reviews which scored a mince pie from 1-5 we’re able to see the terms most associated with poorer performing pies:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6GPC7lCIeM7O27KtOOS5Gm/10730a7e3eed59fda527c77048cac7a8/bad_mince_pie_review_word_cloud.png" />
            
            </figure><p>Pies scoring between 6 and 10 points had the following terms used the most in tasting notes:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5pDTjVBjvHukQAzb3klSqn/dc866033e9313259b76ce5e4bd28fe24/good_mince_pie_review_word_cloud.png" />
            
            </figure>
    <div>
      <h2>Also-rans and notable mentions</h2>
      <a href="#also-rans-and-notable-mentions">
        
      </a>
    </div>
    <p>Before we get to the final overall rankings, there are a few categories we wanted to mention.</p>
    <div>
      <h3>The Most Expensive Pies</h3>
      <a href="#the-most-expensive-pies">
        
      </a>
    </div>
    <p>Unsurprisingly, some of the most expensive mince pies come from London’s fanciest Restaurants &amp; Bakeries. The 3 most expensive mince pies did not rank highly enough to feature elsewhere - which goes to show you that money doesn’t necessarily buy you the best mince pie.</p>
    <div>
      <h4><a href="https://ottolenghi.co.uk/">Ottolenghi</a> Mince Pie</h4>
      <a href="#mince-pie">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>6.647</p></td><td><p>£10 for 4 (250ppp)</p></td><td><p>8.176</p></td><td><p>8.471</p></td><td><p>7.647</p></td><td><p>4.000</p></td><td><p>6.588</p></td><td><p>6.059</p></td></tr></table><blockquote><p>A Dickensian-styled thing of beauty, I expected a pie-seller to appear muttering "gawd blimey guv'nor thems good pies". Good bite, alcohol was raw and overly pungent, tasty but I needed a quiet lie down afterwards.</p></blockquote>
    <div>
      <h4><a href="https://www.flourishbakery.com/">Flourish</a> Mince Pie</h4>
      <a href="#mince-pie">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>7.167</p></td><td><p>230ppp</p></td><td><p>3.167</p></td><td><p>6.333</p></td><td><p>8.167</p></td><td><p>6.000</p></td><td><p>7.667</p></td><td><p>6.667</p></td></tr></table><blockquote><p>Deeelicious and moist. A little citrus and Christmas on the finish.</p></blockquote>
    <div>
      <h4><a href="https://stjohnrestaurant.com/a/restaurants/bakery">St. John</a> Mince Pie</h4>
      <a href="#mince-pie">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>6.273</p></td><td><p>230ppp</p></td><td><p>6.273</p></td><td><p>4.000</p></td><td><p>6.727</p></td><td><p>4.727</p></td><td><p>6.182</p></td><td><p>6.000</p></td></tr></table><blockquote><p>In a word, dense. Dense filling, dense pastry. A bit too heavy all round.</p></blockquote>
    <div>
      <h3>The Bottom 3</h3>
      <a href="#the-bottom-3">
        
      </a>
    </div>
    <p>Below are the 3 lowest scoring mince pies in 2018. We publish this not to humiliate but in the hope that these bakers will learn &amp; improve for 2019.</p>
    <div>
      <h4><a href="https://www.tesco.com/groceries/products/301637989">Tesco Mince Pie Cookies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>2.4</p></td><td><p>£3.00 for 8 (~38ppc)</p></td><td><p>3.2</p></td><td><p>1</p></td><td><p>2</p></td><td><p>10</p></td><td><p>2.8</p></td><td><p>1</p></td></tr></table><blockquote><p>The 10 on "experimental" here means ... experiment gone badly wrong. If ratings allowed for complex numbers, this one would score an overall '10i'.</p></blockquote>
    <div>
      <h4><a href="https://groceries.asda.com/product/tarts-pies-bakewells/asda-extra-special-allbutter-luxury-mince-pies/910000327219">ASDA Extra Special All-Butter Luxury</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>4.2</p></td><td><p>£1.50 for 6 (25ppp)</p></td><td><p>6</p></td><td><p>3</p></td><td><p>2</p></td><td><p>3.75</p></td><td><p>5.75</p></td><td><p>4.5</p></td></tr></table><blockquote><p>A bit dry and what on earth is all that air doing there?! Get out and put mince in!</p></blockquote>
    <div>
      <h4><a href="https://www.aldi.co.uk">Aldi</a> Holly Lane Mince Pies</h4>
      <a href="#holly-lane-mince-pies">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>4.667</p></td><td><p>£0.75 for 6 (~13ppp)</p></td><td><p>5.667</p></td><td><p>3</p></td><td><p>4.333</p></td><td><p>1.667</p></td><td><p>5</p></td><td><p>4.333</p></td></tr></table><blockquote><p>BANG average from Aldi. I don't know where Holly Lane is but if I were to guess it would be firmly in the middle of somewhere. Slightly chalky, pasty pastry and sweet uninteresting mince.</p></blockquote>
    <div>
      <h3>The most innovative mince pies</h3>
      <a href="#the-most-innovative-mince-pies">
        
      </a>
    </div>
    <p>Nela’s impressive Pearson Correlation work showed that there is actually a minor negative correlation with mince pies that are highly innovative. During tasting we observed that innovative pies drew people in but they most definitely divided opinion. Here are the 3 most innovative mince pies (as ranked by their innovation score).</p>
    <div>
      <h4><a href="https://www.waitrose.com/ecom/products/heston-from-waitrose-chocolate-and-cherry-mince-pies/689473-666824-666825">Heston from Waitrose Chocolate &amp; Cherry Mince Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>5.600</p></td><td><p>£3.00 for 6 (50ppp)</p></td><td><p>5.800</p></td><td><p>5.400</p></td><td><p>5.400</p></td><td><p>9.600</p></td><td><p>4.200</p></td><td><p>6.000</p></td></tr></table><blockquote><p>Bad.</p></blockquote>
    <div>
      <h4><a href="https://groceries.asda.com/product/tarts-pies-bakewells/asda-extra-special-allbutter-caramel-crumble-pies/1000071078214">ASDA Extra Special All-Butter Caramel Crumble Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>6.667</p></td><td><p>£2.00 for 6 (~33ppp)</p></td><td><p>7.333</p></td><td><p>1.000</p></td><td><p>4.000</p></td><td><p>9.333</p></td><td><p>7.333</p></td><td><p>6.667</p></td></tr></table><blockquote><p>Interesting but this is not a mince pie.</p></blockquote>
    <div>
      <h4><a href="https://www.aldi.co.uk/flavoured-mince-pies/p/071747105694400">Aldi Black Forest Mince Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>6.700</p></td><td><p>£1.99 for 6 (~33ppp)</p></td><td><p>6.000</p></td><td><p>2.300</p></td><td><p>7.200</p></td><td><p>9.300</p></td><td><p>5.500</p></td><td><p>6.800</p></td></tr></table><blockquote><p>Absolutely amazing taste however questionable as a mince pie. 😱😱😱😱</p></blockquote>
    <div>
      <h2>The overall chart</h2>
      <a href="#the-overall-chart">
        
      </a>
    </div>
    <p>Here are 2018’s top mince pies as stringently tested by the Cloudflare mince pie QA engineers:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2GUErGVz4gB2QM6yAAPtYG/a8a1c1e89552b1b8d68c1e3ac8cf2f89/2018_mince_pie_rankings-2.png" />
            
            </figure><p>2018 Internet Mince pie Database Rankings. <a href="https://public.tableau.com/profile/nela7296#!/vizhome/2018MincePieRating/AverageRatingDash">Explore the full dataset</a>.</p>
    <div>
      <h3>The IMDB Top 3 mince pies for 2018</h3>
      <a href="#the-imdb-top-3-mince-pies-for-2018">
        
      </a>
    </div>
    
    <div>
      <h4><a href="https://christmasfood.marksandspencer.com">M&amp;S Bakery Mince Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>8.400</p></td><td><p>£1.30 per pie</p></td><td><p>8.200</p></td><td><p>4.400</p></td><td><p>8.000</p></td><td><p>3.200</p></td><td><p>8.000</p></td><td><p>8.400</p></td></tr></table><blockquote><p>I tried it twice. Will probably try to grab another one. Even with 14 others in-between the first and the second sampling, my preference hasn't changed. To me this is the star of the show. Yum!</p></blockquote>
    <div>
      <h4><a href="https://gailsbread.co.uk/order/christmas/390-6-mince-pies.html">Gail’s Bakery Mince Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>8.200</p></td><td><p>£8.75 for 6 (146ppp)</p></td><td><p>7.700</p></td><td><p>4.900</p></td><td><p>8.000</p></td><td><p>4.300</p></td><td><p>8.000</p></td><td><p>8.300</p></td></tr></table><blockquote><p>Tasty filling, with a solid pastry. A great all rounder, if a little sweet with extra filling peel and topped sugar on the pastry.</p></blockquote>
    <div>
      <h4><a href="https://groceries.iceland.co.uk/iceland-luxury-6-mince-pies/p/56837">Iceland Luxury Mince Pies</a></h4>
      <a href="#">
        
      </a>
    </div>
    <table><tr><td><p><b>Overall</b></p></td><td><p><b>Price</b></p></td><td><p><b>Booziness</b></p></td><td><p><b>Aesthetic</b></p></td><td><p><b>Pastry-to-Filling Ratio</b></p></td><td><p><b>Innovation</b></p></td><td><p><b>Pastry</b></p></td><td><p><b>Filling</b></p></td></tr><tr><td><p>7.500</p></td><td><p>£1.89 for 6 (~32ppp)</p></td><td><p>6.000</p></td><td><p>3.500</p></td><td><p>6.000</p></td><td><p>3.000</p></td><td><p>3.500</p></td><td><p>9.500</p></td></tr></table><blockquote><p>Iceland are a dark horse here - the mince here elevates the fairly pedestrian pastry - which is pale and a little bit chalky in texture. But that mince - full of complexity - there's a hint of banana in here despite there being no actual bananas. HOW DID THEY DO THIS? DELICIOUS.</p></blockquote>
    <div>
      <h2>Thanks</h2>
      <a href="#thanks">
        
      </a>
    </div>
    <p>Thanks to everyone at Cloudflare who took part in this extensive research. If you’re inspired by some of the questions answered in this blog post, and you like spiced fruit and intense pastry debates then Cloudflare is hiring in <a href="https://www.cloudflare.com/careers/locations/london/">London</a> and <a href="https://www.cloudflare.com/careers/locations/">all over the world</a>.</p><p>Happy Holidays!</p> ]]></content:encoded>
            <category><![CDATA[Trends]]></category>
            <guid isPermaLink="false">4jbD76Y3KCEPvvknnVHBYj</guid>
            <dc:creator>Nela Collins</dc:creator>
            <dc:creator>Simon Moore</dc:creator>
            <dc:creator>Tom Arnfeld</dc:creator>
        </item>
        <item>
            <title><![CDATA[Building a new IMDB: Internet Mince Pie Database]]></title>
            <link>https://blog.cloudflare.com/imdb-2017/</link>
            <pubDate>Fri, 08 Dec 2017 14:55:55 GMT</pubDate>
            <description><![CDATA[ Since joining Cloudflare I’ve always known that as we grew, incredible things would be possible. It’s been a long held ambition to work in an organisation with the scale to answer a very controversial and difficult question.  ]]></description>
            <content:encoded><![CDATA[ <p></p><p><a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA 2.0</a> <a href="https://www.flickr.com/photos/phil_g/17286720/in/photolist-2wAJU-7nUeqG-7oG65d-dEy5Rh-5KWk2j-5KSzP9-dzFvTK-b2ckqV-9HE6Vm-5KS9Ke-vpPoo-7uBMs1-aWs82p-5KcJZ7-pwRhWC-px5PXD-qch6NS-pwRixY-7mcnHY-5KS8pz-5KS7JD-px5NEZ-pwRib5-5ncoYs-5NWed2-q77Jou-7oJvNq-5KWnDq-8zMUYN-5KS72T-94VR5d-t8aSZ-94SNDp-pYpMsh-b1kxJc-dBBGMy-7eTu9m-dHzhow-uirqrY-5KcJzE-5MyC93-qtMdRu-aLiqbt-pBoaV5-aJcKSe-b1bTnr-aJcLk2-aJcL92-aJcLe2-aJcKHc">image</a> by <a href="https://www.flickr.com/photos/phil_g">Phil! Gold</a></p><p>Since joining Cloudflare I’ve always known that as we grew, incredible things would be possible. It’s been a long held ambition to work in an organisation with the scale to answer a very controversial and difficult question. To do so would require a collection of individuals with a depth of experience, passion, dedication &amp; above all collaborative spirit.</p><p>As Cloudflare’s London office has grown in the last 4 years I believe 2017 is the year we reach the tipping point where this is possible. A paradigm-shift in the type of challenges Cloudflare is able to tackle. We could finally sample every commercially available mince pie in existence before the 1st of December. In doing so, we would know conclusively which mince pie we should all be buying over Christmas to share with our friends &amp; families.</p>
    <div>
      <h3>What is a mince pie?</h3>
      <a href="#what-is-a-mince-pie">
        
      </a>
    </div>
    <p>For the uninitiated, a Mince Pie is “a sweet pie of British origin, filled with a mixture of dried fruits and spices called mincemeat, that is traditionally served during the Christmas season in the English world.” - <a href="https://en.wikipedia.org/wiki/Mince_pie">Wikipedia for Mince Pie</a></p><p>The original Mince Pie was typically filled with a mixture of minced meat, suet and a variety of fruits and spices like cinnamon, cloves and nutmeg. Today, many mince pies are vegetarian-friendly, containing no meat or suet. They are churned out by both <a href="https://www.theguardian.com/lifeandstyle/2016/dec/09/inside-worlds-largest-mince-pie-factory-mr-kipling-christmas">large commercial operations</a> and <a href="http://www.dunns-bakery.co.uk/about-dunns/">200 year-old, family-run bakeries</a> alike to feed hungry Brits at Christmas. Some factories peak at at more than 27pps (pies per second).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7GZ0kOUyGRbnTYX3xUCqVZ/9d6c4e6d80e05ce4eafdc4c17071f6d7/mincepie-Sketch--Today-at-14.07.04.png" />
            
            </figure>
    <div>
      <h3>Review Methodology</h3>
      <a href="#review-methodology">
        
      </a>
    </div>
    <p>Early on we settled on 4 key metrics to score each pie on, on a scale from 1-10. When reviewing anything with a scientific approach, consistency is key. Much like a well made pastry case.</p>
    <div>
      <h5>What does and does not constitute a pie?</h5>
      <a href="#what-does-and-does-not-constitute-a-pie">
        
      </a>
    </div>
    <p>Very quickly we realised that we needed some hard rules on what counted as a pie. For example, we had some "Frangipane Mince Pies" from Marks &amp; Spencer which caused a lot of controversy– these do not have a top, but instead cover the mince with a baked frangipane.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2RNz3yh97I6YzgdeQNnios/e337f2f420e6aefed004ebb5a8202113/frangipane.png" />
            
            </figure><p>Although these rule-breaking pies were not included in our leaderboard, they're definitely worth a try... one reviewer described the filling as “inoffensive” and another left these comments;</p><p>"ZERO air gap! How do you solve the problem of an air gap in your pie? Fill it with some delicious tasty frangipane, that's how. The crunchy almonds on the top really cut through the softness with some texture, too. Most excellent."</p><p><i>Tom Arnfeld, Systems Engineer</i></p><p><b>Pastry / Filling Ratio</b>The ratio is really key to a good mince pie, but it is also possible for other aspects of the pie to be bad while the ratio itself is excellent. To be clear (there was confusion and debate internally) a score of 5/10 ratio would mean the ratio was average in quality. It does not directly measure the ratio itself. A 10/10 would have the perfect ratio of pastry to mince. Air gap was also a consideration, and the detailed comments each reviewer made on each pie often explain this.</p><p><b>Pastry</b>The right pastry needs to be not too thick, crispy but still have chew and be moist but not soggy. It should hold the filling without it spilling out.</p><p><b>Filling</b>The filling itself is probably the thing most pies were scored harshly on. A good filling has a variety of fruits and textures and possibly even some other flavours such as brandy.</p><p><b>Overall</b>We left it to each reviewer to add an overall score judging the entire pie.</p>
    <div>
      <h3>Results</h3>
      <a href="#results">
        
      </a>
    </div>
    <p><b>30</b> types of mince pie, <b>68</b> reviewers, <b>18</b> hungry Cloudflare staff.</p>
    <div>
      <h4>Top 5 Pies</h4>
      <a href="#top-5-pies">
        
      </a>
    </div>
    <p>After collecting all of the reviews together, here’s our top 5 pies.</p>
    <div>
      <h5>1. <a href="https://www.waitrose.com/ecom/products/heston-from-waitrose-spiced-shortcrust-mince-pies-lemon/791825-525982-525983">Heston from Waitrose Spiced Shortcrust Mince Pies Lemon</a></h5>
      <a href="#1">
        
      </a>
    </div>
    <p><i>£0.75p per pie</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5vnfC4LWw7UAedJDSbxPfP/f587c3b4916a3d8347fbeb241f08b08a/heston.png" />
            
            </figure><p>Look, I'm going to get straight to it: if you are a mince pie traditionalist, these are not the mince pies for you. HOWEVER, for me they were a revelation. They push boundaries, break all the rules but somehow retain the essence of a great mince pie.</p><p><b>Pastry:</b> TWO DIFFERENT TYPES for the base and the topping. Some people have an issue with the pastry 'rubble' on top. I found it DELIGHTFUL. 9/10</p><p><b>Filling:</b> Not only was there excellent standard mincemeat, but also there was a thin layer of lemon jelly in there as well. SPLENDID. Strong nutmeg and clove themes throughout.</p><p>Extra marks for the surreal box art. ("Ceci n'est pas une pie")</p><p><i>Sam Howson, Support Engineer</i></p>
    <div>
      <h5>2. <a href="http://www.dunns-bakery.co.uk/shop/christmas-shop/handmade-mince-pies/mince-pies-puff-113">Dunns Traditional Deep-Fill Pastry Mince Pies</a></h5>
      <a href="#2">
        
      </a>
    </div>
    <p><i>£1.35p per pie</i></p><p><b>Pastry / Filling Ratio:</b> Absolutely no visible air gap. TFL could learn from this. Actually fulfilling the promise of deep filled for the first time ever. 10/10</p><p><b>Pastry:</b> Really great. Well constructed, cooked &amp; even all the way around. We've said this a lot but probably "needs more butter" 8/10</p><p><b>Filling:</b> Ironically the reason I like this is also the reason why it's not getting a 10. The citrus - it's so good to have some citrus in there - sorely lacking in lots of other fillings. But it's just too much - it's really the only discernible flavour. Some booze wouldn't go amiss here. 8/10</p><p><b>Overall:</b> This competition might be Dunn Dunn Dunn. Spectacular. 8.5</p><p><i>Simon Moore, Lead Customer Support Engineer</i></p>
    <div>
      <h5>3. Fortnum &amp; Mason</h5>
      <a href="#3-fortnum-mason">
        
      </a>
    </div>
    <p><i>£1.83p per pie</i></p><p>These were by far the most controversial, from our reviewers' point of view.</p><p><b>Pastry / Filling Ratio:</b> About right... a well filled pie with little air gap and a pastry that wasn't so thick that it would diminish the filling. 9/10</p><p><b>Pastry:</b> The weakest part, butter and soft, lovely all over... except that the base was also like this and needed to be a bit crisper and less soft. 7/10</p><p><b>Filling:</b> Subtle flavours, good spices, a hint of Christmas warmth. Could be improved with a little more aftertaste like the K&amp;C ones had, but this is a good filling and with lots of filling, very tasty. 8/10</p><p><b>Overall:</b> A pretty good pie, one of the best yet but the pastry not being crisp and solid underneath makes it fall apart in your hands a little. 8/10</p><p><i>David Kitchen, Engineering Manager</i></p><p><b>For contrast, one anomalous reviewer wrote;</b></p><p><b>Pastry / Filling Ratio:</b> EXCELLENT. The pie is deep, and with little air gap. Other reviews mention an air gap however, so QC is clearly not a priority in spite of its cost. 9/10</p><p><b>Pastry:</b> Just fine. Kind of dry, not very buttery. Sugar was nice on top, but really nothing to write home about. Structurally this pie was terrible as the lid lifted clean off when I tried to get it out of its tin. 4/10</p><p><b>Filling:</b> The worst part of this pie, by a massive margin. The mince was almost a pureé, with no discernable fruit textures. Very lightly spiced, again with no flavour components of it being distinguishable. Lack of texture here made it feel like a mince pie for the elderly or small children as after the pastry had disintegrated, there was nothing to chew. 3/10</p><p><b>Overall:</b> Decadently priced farce of a pie filled with a disappointment flavoured mincemeat. Might as well have been packaged in a Londis box. As my girlfriend said "That sounds like it needs covering in cream and then putting in the bin". I wholeheartedly agree. 3/10</p><p><i>Bhavin Tailor, Support Engineer</i></p>
    <div>
      <h5>4. Marks &amp; Spencer Standard Mince Pies (red box)</h5>
      <a href="#4-marks-spencer-standard-mince-pies-red-box">
        
      </a>
    </div>
    <p><i>(price unknown)</i></p><p><b>Pastry / Filling Ratio:</b> Filled to the brim. Excellent! 9/10</p><p><b>Pastry:</b> Buttery, right thickness, just lovely. Although a bit too much on the sweet side. 7/10</p><p><b>Filling:</b> Great! Nice flavours, still some texture, nothing overwhelms the other flavours. Just wonderful. 8/10</p><p><b>Overall:</b> Great pastry, could eat it all day. 8/10</p><p><i>Tom Strickx, Network Automation Engineer</i></p>
    <div>
      <h5>5. Marks &amp; Spencer Extra Special Mince Pies</h5>
      <a href="#5-marks-spencer-extra-special-mince-pies">
        
      </a>
    </div>
    <p><i>£0.33p per pie</i></p><p><b>Pastry / Filling Ratio:</b> Massive air gap. Probably has more air than mince, which is very disappointing. 5/10</p><p><b>Pastry:</b> Buttery, but a bit too thick. Feels a bit heavy. 7/10</p><p><b>Filling:</b> Very noticeable brandy smell, luckily not as present in the taste. Subtle brandy flavour, but doesn't overwhelm the actual mince. A+ 9/10</p><p><b>Overall:</b> Great flavour, love the touch of brandy, unfortunately a bit let down by the filling ratio, and the heaviness of the crust. 7/10</p><p><i>Tom Strickx, Network Automation Engineer</i></p>
    <div>
      <h4>Other Entrants</h4>
      <a href="#other-entrants">
        
      </a>
    </div>
    <p>While on our quest to try every pie on the market, we encountered some great ones that are worth a mention. Of aldi mince pies we've tried a single Marks &amp; Spencer pie asda best taste of all, but one had the lidlest per pie cost.</p>
    <div>
      <h5>Greggs</h5>
      <a href="#greggs">
        
      </a>
    </div>
    <p><i>£0.25p per pie</i></p><p><b>Pastry / Filling Ratio:</b> There's no easy way of saying this, there's more pastry here than there are Greggs branches in Coventry. The only way I would score this lower was if there was no mince at all and I was just eating a solid puck of pastry. 1/10</p><p><b>Pastry:</b> Overcooked, brittle and really just miserable. I'm giving it a point only because it exists. 1/10</p><p><b>Filling:</b> Sweet &amp; Bland. 1/10</p><p><b>Overall:</b> Horrible. 1/10</p><p><i>Simon Moore, Lead Customer Support Engineer</i></p><p>Bigger than the standard supermarket ones, which is definitely nice.</p><p><b>Pastry / Filling Ratio:</b> I think kids these day call it "dat gap". Unfortunately in this case, it's not a good thing.</p><p><b>Pastry:</b> Buttery, crumbly, good thickness, bit bland. 6/10</p><p><b>Filling:</b> Bit bland as well, no specific highlights or notes of flavour. 6/10</p><p><b>Overall:</b> Pretty bland, but not too shabby.</p><p><i>Tom Strickx, Network Automation Engineer</i></p>
    <div>
      <h5>Costco</h5>
      <a href="#costco">
        
      </a>
    </div>
    <p><i>£0.44p per pie</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5iZOxmH3UL0dkAVzynW1ck/0c4ab977fd7a4d41e22654fd3ce37da1/costco.png" />
            
            </figure><p><b>Pastry/Filling Ratio:</b> 9/10 To solve the problem of the 'air gap', Costco decided to top the mince pie with sponge cake. This technically makes the pastry/filling ratio near-perfect since the tiny amount of pastry on the outside matches the tiny amount of filling. Well played, Costco.</p><p><b>Pastry:</b> 3/10 The pastry itself is acceptable but minimal - the majority of the cake is sponge. Yes, I said cake - this is no pie.</p><p><b>Filling:</b> 1/10 They decided to fill it one currant high. And not even like a currant standing proud like the California Raisins, this is a teensy portion. I'm pretty sure the icing on top is thicker than the filling.</p><p><b>Overall:</b> 2/10 This is not a mince pie, it's clearly a sugar cake that has some regulation-mandated minimum amount of mincemeat content to call it a mince pie. Making the 'pies' huge doesn't compensate for anything. Poor showing, Costco.</p><p><i>Chris Branch, Systems Engineer</i></p>
    <div>
      <h5>Mr Kipling</h5>
      <a href="#mr-kipling">
        
      </a>
    </div>
    <p><i>£0.25p per pie (from Tesco)</i></p><p><b>Pastry / Filling Ratio:</b> 5/10</p><p><b>Pastry:</b> More salty than buttery. 4/10</p><p><b>Filling:</b> Drabness cloaked in excessive sweetness. 4/10</p><p>Mr Kipling purports his products to be "exceedingly good" in his television advertisements, but this pie did not lend support to that claim.</p><p><i>David Wragg, Systems Engineer</i></p>
    <div>
      <h5>Aldi (Cognac Steeped)</h5>
      <a href="#aldi-cognac-steeped">
        
      </a>
    </div>
    <p><i>£0.38p per pie</i></p><p><b>Pastry / Filling Ratio:</b> This pie has more air than Michael Jordan 4/10</p><p><b>Pastry:</b> Good but far too thick on the lid. 6/10</p><p><b>Filling:</b> I can detect the booze but it's just not really adding anything. There's nothing of distinction here. 5/10</p><p><b>Overall:</b> 4/10 The ratio and the lid spoil what would otherwise be a serviceable mince pie.</p><p><i>Simon Moore, Lead Customer Support Engineer</i></p>
    <div>
      <h5>Jimmy’s Home-made Pies</h5>
      <a href="#jimmys-home-made-pies">
        
      </a>
    </div>
    <p>With so many mince pies moving through the office on a daily basis, one of our resident staff bakers decided to bake some of his own to add into the mix. Jimmy Crutchfield (Systems Reliability Engineer) brought in 12 lovingly made pies for us all to try...</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/SIyPPFj992MI1z4SJFD0j/0bab678498467a09b57cd8daeb7cb522/jimmy.png" />
            
            </figure><p><b>Pastry / Filling Ratio:</b> Nice and deep, but a little too moist. Surprising given apparently the mincemeat was shop bought – you'd think it would have the right consistency.</p><p><b>Pastry:</b> The pastry was pretty well cooked, and not too dry. I think it could do with a bit more butter though. 8/10</p><p><b>Filling:</b> The added apple bits introduced some delightful new texture. 6/10</p><p><b>Overall:</b> Little in the way of decoration on the top, though bonus points for the lovingly home-made look. Pretty excited about the next version. 9/10</p><p><i>Tom Arnfeld, Systems Engineer</i></p><p>A couple of weeks later, Jimmy had his hand at making a second batch, too!</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7kECfasRkvvlSCxRgUtiGV/21cc1f4cb8d72d68817dca4e2b237212/jimmy-kitchen.jpeg.jpeg" />
            
            </figure><p><b>Pastry / Filling Ratio:</b> Small air gap. 8/10</p><p><b>Pastry:</b> Buttery &amp; crumbly, very good. 9/10</p><p><b>Filling:</b> Just a little too tart. 8/10</p><p><b>Overall:</b> I'd be happy if i'd paid for a box of them. 9/10</p><p><i>Michael Daly, Systems Reliability Engineering Manager</i></p>
    <div>
      <h4>Falling by the wayside</h4>
      <a href="#falling-by-the-wayside">
        
      </a>
    </div>
    <p>There are too many pies and reviews to mention in full detail, but here’s a full list of the other pies we haven’t mentioned, sorted by their rating.</p><ul><li><p>Sainsbury’s Bakery (fresh)</p></li><li><p>Carluccio’s</p></li><li><p>Coco di Mama Mini Mince Pies</p></li><li><p>Riverford Farm Shop Classic</p></li><li><p>Tesco Standard</p></li><li><p>Marks &amp; Spencer Lattice-top</p></li><li><p>Marks &amp; Spencer All Butter</p></li><li><p>Tesco Finest (with Cognac)</p></li><li><p>Aldi Sloe Gin Mince Tarts</p></li><li><p>Waitrose All Butter</p></li><li><p>Gail’s</p></li><li><p>LIDL Favorina</p></li><li><p>Co-op Irresistible</p></li><li><p>Sainsbury’s Deep Filled</p></li><li><p>LIDL Brandy Butter</p></li><li><p>Aldi Almond Mince Tarts</p></li></ul><p>With so many reviews from so many staff, we’d like to thank everyone that took part in our quest! <i>Alex Palaistras, Bhavin Tailor, Chris Branch, David Kitchen, David Wragg, Etienne Labaume, John Graham-Cumming, Jimmy Crutchfield, Lorenz Bauer, Matthew Bullock, Michael Daly, Sam Howson, Scott Pearson, Simon Moore, Sophie Bush, Tim Ruffles, Tom Arnfeld, Tom Strickx.</i></p><p><b>If you want to join a passionate, dedicated, talented and mince pie-filled team - </b><a href="https://www.cloudflare.com/careers/"><b>we’re hiring</b></a><b>!</b></p> ]]></content:encoded>
            <category><![CDATA[Developers]]></category>
            <guid isPermaLink="false">6Z33N5AvUQoiCA5GIqezp6</guid>
            <dc:creator>Tom Arnfeld</dc:creator>
        </item>
        <item>
            <title><![CDATA[How we made our DNS stack 3x faster]]></title>
            <link>https://blog.cloudflare.com/how-we-made-our-dns-stack-3x-faster/</link>
            <pubDate>Tue, 11 Apr 2017 09:28:45 GMT</pubDate>
            <description><![CDATA[ Cloudflare is now well into its 6th year and providing authoritative DNS has been a core part of infrastructure from the start. We’ve since grown to be the largest and one of the fastest managed DNS services on the Internet, hosting DNS for nearly 100,000 of the Alexa top 1M sites. ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare is now well into its 6th year and providing authoritative DNS has been a core part of infrastructure from the start. We’ve since grown to be the largest and one of the fastest managed DNS services on the Internet, hosting DNS for nearly 100,000 of the <a href="https://www.datanyze.com/market-share/dns/Alexa%20top%201M/">Alexa top 1M sites</a> and over 6 million other web properties – or DNS zones.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6k94yrsuPlbsjgsmuf9tVF/e6f7de37d5e1a03b66333b72cd60092e/8159769501_c2026331b8_k.jpg" />
            
            </figure><p><a href="https://creativecommons.org/licenses/by/2.0/">CC-BY 2.0</a> <a href="https://flic.kr/p/dr3Xc4">image</a> by <a href="https://www.flickr.com/photos/jurvetson/">Steve Jurvetson</a></p><p>Today Cloudflare’s DNS service answers around 1 million queries per second – not including attack traffic – via a global anycast network. Naturally as a growing startup, the technology we used to handle tens or hundreds of thousands of zones a few years ago became outdated over time, and couldn't keep up with the millions we have today. Last year we decided to replace two core elements of our DNS infrastructure: the part of our DNS server that answers authoritative queries and the data pipeline which takes changes made by our customers to DNS records and distributes them to our edge machines across the globe.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/9rXGrQRlGmIWAfKr8oM2D/f85999d6398fba0c3627c9ea7c6746a6/data-flow-3.png" />
            
            </figure><p>The rough architecture of the system can be seen above. We store customer DNS records and other origin server information in a central database, convert the raw data into a format usable by our edge in the middle, and then distribute it to our <a href="https://www.cloudflare.com/network/">&gt;100 data centers</a> (we call them PoPs - Points of Presence) using a KV (key/value) store.</p><p>The queries are served by a custom DNS server, rrDNS, that we’ve been using and developing for several years. In the early days of Cloudflare, our DNS service was built on top of PowerDNS, but that was phased out and replaced by rrDNS in 2013.</p><p>The Cloudflare DNS team owns two elements of the data flow: the data pipeline itself and rrDNS. The first goal was to replace the data pipeline with something entirely new as the current software was starting to show its age; as any &gt;5 year old infrastructure would. The existing data pipeline was originally built for use with PowerDNS, and slowly evolved over time. It contained many warts and obscure features because it was built to translate our DNS records into the PowerDNS format.</p>
    <div>
      <h3>A New Data Model</h3>
      <a href="#a-new-data-model">
        
      </a>
    </div>
    <p>In the old system, the data model was fairly simple. We’d store the DNS records roughly in the same structure that they are represented in our UI or API: one entry per resource record (RR). This meant that the data pipeline only had to perform fairly rudimentary encoding tasks when generating the zone data to be distributed to the edge.</p><p>Zone metadata and RRs were encoded using a mix of JSON and Protocol Buffers, though we weren’t making particularly good use of the schematized nature of the protocols so the schemas were very bloated and the resulting data ended up being larger than necessary. Not to mention that as the number of total RRs in our database headed north of 100 million, these small differences in encoding made a significant difference in aggregate.</p><p>It’s worth remembering here that <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">DNS</a> doesn’t really operate on a per-RR basis when responding to queries. You query for a name and a type (e.g <code>example.com</code> and <code>AAAA</code>) and you’ll be given an RRSet which is a <i>collection</i> of RRs. The old data format had RRSets broken out into multiple RR entries (one key per record) which typically meant multiple roundtrips to our KV store to answer a single query. We wanted to change this and group data by RRSet so that a single request could be made to the KV store to retrieve all the data needed to answer a query. Because Cloudflare optimizes heavily for DNS performance, multiple KV lookups were limiting our ability to make rrDNS go as fast as possible.</p><p>In a similar vein, for lookups like A/AAAA/CNAME we decided to group the values into a single “address” key instead of one key per RRset. This further avoids having to perform extra lookups in the most common cases. Squishing keys together also helps reduce memory usage of the cache we use in front of the KV store, since we’re storing more information against a single cache key.</p><p>After settling on this new data model, we needed to figure out how to serialize the data and pass it to the edge. As mentioned, we were previously using a mix of JSON and Protocol Buffers, and we decided to replace this with a purely <a href="http://msgpack.org/">MessagePack</a>-based implementation.</p>
    <div>
      <h4>Why MessagePack?</h4>
      <a href="#why-messagepack">
        
      </a>
    </div>
    <p>MessagePack is a binary serialization format that is typed, but does not have a strict schema built into the format. In this regard, it can be considered a little like JSON. For both the reader and the writer, extra fields can be present or absent and it’s up to your application code to compensate.</p><p>In contrast, Protocol Buffers (or other formats like <a href="https://capnproto.org/">Cap’n Proto</a>) require a schema for data structures defined in a language agnostic format, and then generate code for the specific implementation. Since DNS already has a large structured schema, we didn’t want to have to duplicate all of this schema in another language and then maintain it. In the old implementation with Protocol Buffers, we’d not properly defined schemas for all DNS types – to avoid this maintenance overhead – which resulted in a very confusing data model for rrDNS.</p><p>When looking for new formats we wanted something that would be fast, easy to use and that could integrate easily into the code base and libraries we were already using. rrDNS makes heavy use of the <a href="https://github.com/miekg/dns">miekg/dns</a> Go library which uses a large collection of structs to represent each RR type, for example:</p>
            <pre><code>type SRV struct {
	Hdr      RR_Header
	Priority uint16
	Weight   uint16
	Port     uint16
	Target   string `dns:"domain-name"`
}</code></pre>
            <p>When decoding the data written by our pipeline in rrDNS we need to convert the RRs into these structs. As it turns out, the <a href="https://github.com/tinylib/msgp">tinylib/msgp</a> library we had been investigating has a rather nice set of code generation tools. This would allow us to auto-generate efficient Go code from the struct definitions without having to maintain another schema definition in another format.</p><p>This meant we could work with the miekg RR structs (of which we are already familiar with from rrDNS) in the data pipeline, serialize them straight into binary data, and then deserialize them again at the edge straight into a struct we could use. We didn't need to worry about mapping from one set of structures to another using this technique, which simplified things greatly.</p><p>MessagePack also performs incredibly well compared to other formats on the market. Here’s an excerpt <a href="https://github.com/alecthomas/go_serialization_benchmarks#results">from a Go serialization benchmarking test</a>; we can see that on top of the other reasons MessagePack benefits our stack, it outperforms pretty much every other viable cross-platform option.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3AlursaqXqiLWWVYqmCZV/7b618379c494fd0ec48f5b8dc1de3e7c/unmarshal.png" />
            
            </figure><p>One unexpected surprise after switching to this new model was that we actually reduced the space required to store the data at the edge by around 9x, which was a significantly higher saving compared to our initial estimates. It just goes to show how much impact a bloated data model can have on a system.</p>
    <div>
      <h3>A New Data Pipeline</h3>
      <a href="#a-new-data-pipeline">
        
      </a>
    </div>
    <p>Another very important feature of Cloudflare’s DNS is our ability to propagate zone changes around the globe in a matter of seconds, not minutes or hours. Our existing pipeline was struggling to keep up with the growing number of zones, and with changes to at least 5 zones each second, even at the quietest of times we needed something new.</p>
    <div>
      <h4>Global distribution is hard</h4>
      <a href="#global-distribution-is-hard">
        
      </a>
    </div>
    <p>For a while now we’ve had this monitoring, and we are able to visualize propagation times across the globe. The graph below is taken from our end-to-end monitoring: it makes changes to DNS via our API and watches for the change from various probes around the world. Each dot on the graph represents a particular probe talking to one of our PoPs, and the delay is tracked as the time it took for a change made via our API to be visible externally.</p><p>Due to various layers of caches – both inside and outside of our control – we see some banding on 10s intervals under 1 minute, and it fluctuates all the time. For monitoring and alerting of this nature, the granularity we have here is sufficient but it’s something we’d definitely like to improve. In normal operation, new DNS data is actually available to 99% of our global PoPs in under 5s.</p><p>In this time frame we can see there were a couple of incidents where delays of a few minutes were visible for a small number of PoPs due to network connectivity, but generally all probes reported stable propagation times.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3b39QD2BNytbKhSVw2eFVp/f9e4a87160f66595c3b2de54984d0ef5/drift-ok-2.png" />
            
            </figure><p>In contrast, here’s a graph of the old data pipeline for the same period. We can see how the graph represents the growing delay in visible changes for all PoPs at any given time.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6XyhiYnT2kz0pM2PJygck4/8f4a2a772597b3a64dd04110e1e1611d/drift-delayed-1.png" />
            
            </figure><p>With a new data model designed and ready to go, one that better matched our query patterns, we set out implementing a new service to pick up changes to our zones in the central data store, do any needed processing and send the resulting output to our KV store.</p><p>The new service (written in our favourite language Go) has been running in production since July 2016, and we’ve now migrated over <b>99%</b> of Cloudflare customer zones over to it. If we exclude incidents where issues with congestion across the internet affect connectivity to or from a particular location, the new pipeline itself has experienced zero delays thus far.</p>
    <div>
      <h4>Authoritative rrDNS v2</h4>
      <a href="#authoritative-rrdns-v2">
        
      </a>
    </div>
    <p>rrDNS is a modular application, which allows us to write different “filters” that can hand off processing of different types of queries to different code. The Authoritative filter is responsible for taking an incoming DNS query, looking up the zone the query name belongs to, and performing all relevant logic to find the RRSet to send back to the client.</p><p>Since we’ve completely revised the underlying DNS data model at our edge, we needed to make significant changes to the “Authoritative Filter” in rrDNS. This too is an old area of the code base that hasn’t significantly changed in a number of years. As with any ageing code base, this brings a number of challenges, so we opted to re-write the filter completely. This allowed us to redesign it from the ground up on our new data model, keeping a keen eye on performance, and to better suit the scale and shape of our DNS traffic today. Starting fresh also made it much easier to build in good development practices, such as high test coverage and better documentation.</p><p>We’ve been running the v2 version of the authoritative filter in production alongside the existing code since the later months of 2016, and it has already played a key role in the DNS aspects of our new <a href="https://www.cloudflare.com/load-balancing/">load balancing product</a>.</p><p>The results with the new filter have been great: we’re able to respond to DNS queries on average 3x faster than before, which is excellent news for our customers and improves our ability to mitigate large DNS attacks. We can see here that as the percentage of zones migrated increased, we saw a significant improvement in our average response time.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/m0Z5sDnulTMQHBtjLDLm7/89c4749f7a7855ecf1ad8330957b4869/grafana-rrdns-response.png" />
            
            </figure>
    <div>
      <h4>Replacing the wings while flying</h4>
      <a href="#replacing-the-wings-while-flying">
        
      </a>
    </div>
    <p>The most time consuming part of the project was migrating customers from the old system to something entirely new, without impacting customers or anybody noticing what we were doing. Achieving this involved a significant effort from variety of people in our customer facing, support and operations teams. Cloudflare has many offices in different time zones – London, San Francisco, Singapore and Austin – so keeping everyone in sync was key to our success.</p><p>Already, as a part of the release process for rrDNS we automatically sample and replay production queries against existing and upcoming code to detect unexpected differences, so naturally we decided to extend this idea for our migration. For any zone to pass the migration test, we compared the possible answers for the entire zone from the old system and the new system. Just one failure would result in the tool skipping the zone.</p><p>This allowed us to iteratively test the migration of zones and fix issues as they arose, keeping releases simple and regular. We chose not to do a single – and very scary – switch away from the old system, but run them both in parallel and slowly move zones over keeping them both in sync. Meaning we quickly could migrate zones back in case something unexpected happened.</p><p>Once we got going we were safely migrating zones at several hundred thousand per day, and we kept a close eye on how far we were from our initial goal of 99%. The last mile is still in progress, as there is often an element of customer engagement for some complex configurations that need attention.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/54cH2meY3F08ohfUhEtcp0/0c9b43f28c798738b67d49ca2b2f7a11/migrated-zones-1.png" />
            
            </figure>
    <div>
      <h4>What did we gain?</h4>
      <a href="#what-did-we-gain">
        
      </a>
    </div>
    <p>Replacing a piece of infrastructure this core to Cloudflare took significant effort from a large variety of teams. So what did we gain?</p><ul><li><p>Average of 3x performance boost in code handling DNS queries</p></li><li><p>Faster and more consistent updates to DNS data around the globe</p></li><li><p>A much more robust system for SREs to operate and engineers to maintain</p></li><li><p>Consolidated feature-set based on today’s requirements, and better documentation of edge case behaviours</p></li><li><p>More test coverage, better metrics and higher confidence in our code, making it safer to make changes and develop our DNS products</p></li></ul><p>Now that we’re now able to process our customers DNS more quickly, we’ll soon be rolling out support for a few new RR types and some other exciting new things in the coming months.</p><p><b>Does solving these kinds of technical and operational challenges excite you? Cloudflare is always hiring for talented specialists and generalists within our </b><a href="https://www.cloudflare.com/careers/jobs/?department=Engineering"><b>Engineering</b></a><b>, </b><a href="https://www.cloudflare.com/careers/jobs/"><b>Technical Operations</b></a><b> and </b><a href="https://www.cloudflare.com/careers"><b>other teams</b></a><b>.</b></p> ]]></content:encoded>
            <category><![CDATA[Reliability]]></category>
            <category><![CDATA[DNS]]></category>
            <category><![CDATA[Speed & Reliability]]></category>
            <category><![CDATA[Speed]]></category>
            <category><![CDATA[Growth]]></category>
            <category><![CDATA[Cloudflare History]]></category>
            <guid isPermaLink="false">2sobSP2PzNwwQzN32CQsML</guid>
            <dc:creator>Tom Arnfeld</dc:creator>
        </item>
    </channel>
</rss>