<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>Living In A Multi-Cloud World</title> <meta name="description" content="At our recent Internet Summit, we hosted a discussion on A Cloud Without Handcuffs with Joe Beda, one of the creators of Kubernetes, and Brandon Phillips, the co-founder of CoreOS." /> <meta name="HandheldFriendly" content="True"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="msvalidate.01" content="CF295E1604697F9CAD18B5A232E871F6" /> <link rel="shortcut icon" href="/assets/images/favicon.ico?v=b6cf3f99a6"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/assets/images/apple-touch-icon-57x57-precomposed.png?v=b6cf3f99a6" /> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/assets/images/apple-touch-icon-72x72-precomposed.png?v=b6cf3f99a6" /> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/assets/images/apple-touch-icon-114x114-precomposed.png?v=b6cf3f99a6" /> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/assets/images/apple-touch-icon-144x144-precomposed.png?v=b6cf3f99a6" /> <link rel="stylesheet" type="text/css" href="/assets/css/screen.css?v=b6cf3f99a6" /> <!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="/assets/css/ie.css?v=b6cf3f99a6" /><![endif]--> <!--<link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,400,700,300,600" rel="stylesheet" type="text/css">--> <script>(function(G,o,O,g,l){G.GoogleAnalyticsObject=O;G[O]||(G[O]=function(){(G[O].q=G[O].q||[]).push(arguments)});G[O].l=+new Date;g=o.createElement('script'),l=o.scripts[0];g.src='//www.google-analytics.com/analytics.js';l.parentNode.insertBefore(g,l)}(this,document,'ga'));ga('create','UA-10218544-12', 'auto');ga('send','pageview')</script> <link rel="canonical" href="http://blog.cloudflare.com/living-in-a-multi-cloud-world/" /> <meta name="referrer" content="no-referrer-when-downgrade" /> <link rel="amphtml" href="http://blog.cloudflare.com/living-in-a-multi-cloud-world/amp/" /> <meta property="og:site_name" content="Cloudflare Blog" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Living In A Multi-Cloud World" /> <meta property="og:description" content="At our recent Internet Summit, we hosted a discussion on A Cloud Without Handcuffs with Joe Beda, one of the creators of Kubernetes, and Brandon Phillips, the co-founder of CoreOS." /> <meta property="og:url" content="http://blog.cloudflare.com/living-in-a-multi-cloud-world/" /> <meta property="og:image" content="http://blog.cloudflare.com/content/images/2017/11/Cloudflare_Multi_Cloud-1.png" /> <meta property="article:published_time" content="2017-11-21T16:30:00.000Z" /> <meta property="article:modified_time" content="2017-11-21T16:35:36.000Z" /> <meta property="article:tag" content="Google Cloud" /> <meta property="article:tag" content="Cloud Computing" /> <meta property="article:tag" content="Internet Summit" /> <meta property="article:publisher" content="https://www.facebook.com/Cloudflare" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Living In A Multi-Cloud World" /> <meta name="twitter:description" content="At our recent Internet Summit, we hosted a discussion on A Cloud Without Handcuffs with Joe Beda, one of the creators of Kubernetes, and Brandon Phillips, the co-founder of CoreOS." /> <meta name="twitter:url" content="http://blog.cloudflare.com/living-in-a-multi-cloud-world/" /> <meta name="twitter:image" content="http://blog.cloudflare.com/content/images/2017/11/Cloudflare_Multi_Cloud-1.png" /> <meta name="twitter:label1" content="Written by" /> <meta name="twitter:data1" content="Sergi Isasi" /> <meta name="twitter:label2" content="Filed under" /> <meta name="twitter:data2" content="Google Cloud, Cloud Computing, Internet Summit" /> <meta name="twitter:site" content="@cloudflare" /> <meta name="twitter:creator" content="@sgisasi" /> <meta property="og:image:width" content="2002" /> <meta property="og:image:height" content="934" /> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "Cloudflare Blog", "logo": { "@type": "ImageObject", "url": "http://blog.cloudflare.com/content/images/2016/09/logo-for-blog_thumb.png", "width": 189, "height": 47 } }, "author": { "@type": "Person", "name": "Sergi Isasi", "image": { "@type": "ImageObject", "url": "http://blog.cloudflare.com/content/images/2017/11/FullSizeRender_jpeg.png", "width": 487, "height": 487 }, "url": "http://blog.cloudflare.com/author/sergi/", "sameAs": [ "https://twitter.com/sgisasi" ], "description": "Product Management @ Cloudflare. " }, "headline": "Living In A Multi-Cloud World", "url": "https://blog.cloudflare.com/living-in-a-multi-cloud-world/", "datePublished": "2017-11-21T16:30:00.000Z", "dateModified": "2017-11-21T16:35:36.000Z", "image": { "@type": "ImageObject", "url": "http://blog.cloudflare.com/content/images/2017/11/Cloudflare_Multi_Cloud-1.png", "width": 2002, "height": 934 }, "keywords": "Google Cloud, Cloud Computing, Internet Summit", "description": "At our recent Internet Summit, we hosted a discussion on A Cloud Without Handcuffs with Joe Beda, one of the creators of Kubernetes, and Brandon Phillips, the co-founder of CoreOS.", "mainEntityOfPage": { "@type": "WebPage", "@id": "http://blog.cloudflare.com" } } </script> <script type="text/javascript" src="/shared/ghost-url.min.js?v=b6cf3f99a6"></script> <script type="text/javascript"> ghost.init({ clientId: "ghost-frontend", clientSecret: "cf0df60d1ab4" }); </script> <meta name="generator" content="Ghost 0.11" /> <link rel="alternate" type="application/rss+xml" title="Cloudflare Blog" href="https://blog.cloudflare.com/rss/" /> <meta name="msvalidate.01" content="CF295E1604697F9CAD18B5A232E871F6" /> <meta class="swiftype" name="language" data-type="string" content="en" /> <script src="https://s3-us-west-1.amazonaws.com/cf-ghost-assets-hotfix/js/index.js"></script> <script type="text/javascript" src="//cdn.bizible.com/scripts/bizible.js" async=""></script> <script> var trackRecruitingLink = function(role, url) { ga('send', 'event', 'recruiting', 'jobscore-click', role, { 'transport': 'beacon', 'hitCallback': function(){document.location = url;} }); } </script> <script type="text/javascript"> (function() { var didInit = false; function initMunchkin() { if(didInit === false) { didInit = true; Munchkin.init('713-XSC-918'); } } var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//munchkin.marketo.net/munchkin.js'; s.onreadystatechange = function() { if (this.readyState == 'complete' || this.readyState == 'loaded') { initMunchkin(); } }; s.onload = initMunchkin; document.getElementsByTagName('head')[0].appendChild(s); })(); </script> <script> var HTMLAttrToAdd = document.querySelector("html"); HTMLAttrToAdd.setAttribute("lang", "en"); </script> <style> table { background-color: transparent; } td { padding: 5px 1em; } pre { max-height: 500px; overflow-y: scroll; } </style> <link href="https://s3-us-west-1.amazonaws.com/cf-ghost-assets-hotfix/css/screen.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.1/themes/prism.min.css" rel="stylesheet"> <style> .st-default-search-input { font-family: Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; line-height: 16px; font-weight: 400; -moz-transition: opacity 0.2s; -o-transition: opacity 0.2s; -webkit-transition: opacity 0.2s; transition: opacity 0.2s; display: inline-block; width: 190px; height: 16px; padding: 7px 11px 7px 28px; border: 1px solid rgba(0, 0, 0, 0.25); color: #444; -moz-box-sizing: content-box; box-sizing: content-box; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; background: #fff 8px 8px no-repeat url("data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG11AABzoAAA%2FN0AAINkAABw6AAA7GgAADA%2BAAAQkOTsmeoAAAESSURBVHjajNCxS9VRGMbxz71E4OwgoXPQxVEpXCI47%2BZqGP0LCoJO7UVD3QZzb3SwcHB7F3Uw3Zpd%2FAPCcJKG7Dj4u%2FK7Pwp94HDg5Xyf5z1Pr9YKImKANTzFXxzjU2ae6qhXaxURr%2FAFl9hHDy%2FwEK8z89sYVEp5gh84wMvMvGiSJ%2FEV85jNzLMR1McqfmN5BEBmnmMJFSvtpH7jdJiZv7q7Z%2BZPfMdcF6rN%2FT%2F1m2LGBkd4HhFT3dcRMY2FpskxaLNpayciHrWAGeziD7b%2BVfkithuTk8bkGa4wgWFmbrSTZOYeBvjc%2BucQj%2FEe6xHx4Taq1nrnKaW8K6XUUsrHWuvNevdRRLzFGwzvDbXAB9cDAHvhedDruuxSAAAAAElFTkSuQmCC") } .st-ui-close-button { -moz-transition: none; -o-transition: none; -webkit-transition: none; transition: none } </style> </head> <body class="post-template tag-google-cloud tag-cloud-computing tag-internet-summit"> <div id="fb-root"></div> <header id="header" class="header"> <div class="wrapper"> <a href="https://www.cloudflare.com" class="logo logo-header">Cloudflare</a> <nav id="main-menu" class="header-navigation navigation" role="navigation"> <ul class="menu menu-header"> <li><a href="https://blog.cloudflare.com/">Blog home</a></li> <li><a href="https://www.cloudflare.com/overview" tabindex="1">What we do</a></li> <li><a href="https://www.cloudflare.com/support" tabindex="9">Support</a></li> <li><a href="https://www.cloudflare.com/community" tabindex="9">Community</a></li> <li><a href="https://www.cloudflare.com/login" tabindex="10">Login</a></li> <li><a href="https://www.cloudflare.com/sign-up" class="btn btn-success" tabindex="11">Sign up</a></li> </ul> </nav> </div> </header> <div class="wrapper reverse-sidebar"> <section class="primary-content" role="main"> <article class="post tag-google-cloud tag-cloud-computing tag-internet-summit"> <header class="post-header"> <h1 class="title">Living In A Multi-Cloud World</h1> <div class="meta"> <time class="meta-date" datetime="2017-11-21">21 Nov 2017</time> by <a href="/author/sergi/">Sergi Isasi</a>. </div> <div class="social"> <div class="g-plusone" data-size="medium" data-href="https://blog.cloudflare.com/living-in-a-multi-cloud-world/"></div> <script type="IN/Share" data-url="https://blog.cloudflare.com/living-in-a-multi-cloud-world/" data-counter="right"></script> <div class="fb-like" data-href="https://blog.cloudflare.com/living-in-a-multi-cloud-world/" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div> <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://blog.cloudflare.com/living-in-a-multi-cloud-world/" data-text="Living In A Multi-Cloud World" data-via="cloudflare" data-related="cloudflare">Tweet</a> </div> </header> <div class="post-content"> <p>A few months ago at Cloudflare’s <a href="https://www.cloudflare.com/internet-summit/">Internet Summit</a>, we hosted a discussion on <a href="https://blog.cloudflare.com/a-cloud-without-handcuffs/">A Cloud Without Handcuffs</a> with Joe Beda, one of the creators of Kubernetes, and Brandon Phillips, the co-founder of CoreOS. The conversation touched on multiple areas, but it’s clear that more and more companies are recognizing the need to have some strategy around hosting their applications on multiple cloud providers.</p> <p>Earlier this year, Mary Meeker published her annual <a href="http://www.kpcb.com/internet-trends">Internet Trends</a> report which revealed that 22% of respondents viewed Cloud Vendor Lock-In as a top 3 concern, up from just 7% in 2012. This is in contrast to previous top concerns, Data Security and Cost & Savings, both of which dropped amongst those surveyed.</p> <p><img src="/content/images/2017/11/Mary-Meeker-Internet-Trends-2017.png" alt="Internet Trends" /></p> <p>At Cloudflare, our mission is to help build a better internet. To fulfill this mission, our customers need to have consistent access to the best technology and services, over time. This is especially the case with respect to storage and compute providers. This means not becoming locked-in to any single provider and taking advantage of multiple cloud computing vendors (such as Amazon Web Services or Google Cloud Platform) for the same end user services. </p> <h3 id="thebenefitsofhavingmultiplecloudvendors">The Benefits of Having Multiple Cloud Vendors</h3> <p>There are a number of potential challenges when selecting a single cloud provider. Though there may be scenarios where it makes sense to consolidate on a single vendor, our belief is that it is important that customers are aware of their choice and downsides of being potentially locked-in to that particular vendor. In short, know what trade offs you are making should you decide to continue to consolidate parts of your network, compute, and storage with a single cloud provider. While not comprehensive, here are a few trade-offs you may be making if you are locked-in to one cloud.</p> <h4 id="costefficiences">Cost Efficiences</h4> <p>For some companies, there may be a cost savings involved in spreading traffic across multiple vendors. Some can take advantage of free or reduced cost tiers at lower volumes. Vendors may provide reduced costs for certain times of day that are lower utilized on their infrastructure. Applications can have varying compute requirements amongst layers of the application: some may require faster, immediate processing while others may benefit from delayed processing at a lower cost. </p> <h4 id="negotiationstrength">Negotiation Strength</h4> <p>One of the most important reasons to consider deploying in multiple cloud providers is to minimize your reliance on a single vendor’s technology for your critical business processes. As you become more vertically integrated with any vendor, your negotiation posture for pricing or favorable contract terms becomes diminished. Having production ready code available on multiple providers allows you to have less technical debt should you need to change. If you go a step further and are already sending traffic to multiple providers, you have minimized the technical debt required to switch and can negotiate from a position of strength.</p> <h4 id="businesscontinuityorhighavailability">Business Continuity or High Availability</h4> <p>While the major cloud providers are generally reliable, there have been a few notable outages in recent years. The most significant in recent memory being Amazon’s <a href="https://aws.amazon.com/message/41926/">US-EAST S3</a> outage in February. Some organizations may have a policy specifying multiple providers for high availability while others should consider it where necessary and feasible as a best practice. A multi-cloud strategy can lower operational risk from a single vendor’s mistakes causing a significant outage for a mission critical application.</p> <h4 id="experimentation">Experimentation</h4> <p>One of the exciting things about having competition in the space is the level of innovation and feature velocity of each provider. Every year there are major announcements of new products or features that may have a significant impact on improving your organization's competitive advantage. Having test and production environments in multiple providers gives your engineers the ability to understand and experiment with a new capability in the context of your technology stack and data. You may even try these features for a portion of your traffic and get real world data on any benefits realized.</p> <h3 id="cloudflaresrole">Cloudflare’s Role</h3> <p>Cloudflare is an independent third party in your multi-cloud strategy. Our goal is to minimize the layers of lock-in between you and a provider and lower the effort of change. In particular, one area where we can help right away is to minimize the operational changes necessary at the network, similar to what Kubernetes can do at the storage and compute level. As a benefit of our network, you can also have a centralized point for security and operational control.</p> <p><img src="/content/images/2017/11/Cloudflare_Multi_Cloud.png" alt="Cloudflare Multi Cloud" /></p> <p>Cloudflare’s Load Balancing can easily be configured to act as your global application traffic aggregator and distribute your traffic amongst origins at as many clouds as you choose to utilize. Active layer 7 health checks continually probe your origins and can automatically move traffic in the case of network or application failure. All consolidated web traffic can be inspected and acted upon by Cloudflare’s best of breed <a href="https://www.cloudflare.com/security/">Security</a> services, providing a single control point and visibility across all application traffic, regardless of which cloud the origin may be on. You also have the benefit of Cloudflare’s <a href="https://www.cloudflare.com/network/">Global Anycast Network</a>, providing for better speed and higher availability regardless of which clouds your origins are hosted on.</p> <h3 id="billforwardusingcloudflaretoimplementmulticloud">Billforward: Using Cloudflare to Implement Multi-Cloud</h3> <p>Billforward is a San Francisco and London based startup that is focused and mission driven on changing the way people bill and charge their customers, providing a solution to the complexities of Quote-to-Cash. Their platform is built on a number of Rest APIs that other developers call to bill and generate revenue for their own companies. </p> <p>Billforward is using Cloudflare for its core customer facing application to failover traffic between Google Compute Engine and Amazon Web Services. Acting as a reverse proxy, Cloudflare receives all requests for and decides which of Billforward’s two configured cloud origins to use based upon the availability of that origin in near real-time. This allows Billforward to completely manage the connections to and from two disparate cloud providers using Cloudflare’s UI or API. Billforward is in the process of migrating all of their customer facing domains to a similar setup.</p> <h4 id="configuration">Configuration</h4> <p>Billforward has a single load balanced hostname with two available Pools. They’ve named the two Pools with “gce” and “aws” labels and each Pool has one Origin associated with it. All of the Pools are enabled and the entire LB/hostname is proxied through Cloudflare (as indicated by the orange cloud).</p> <p><img src="/content/images/2017/11/Billforward_Config_UI.png" alt="Billforward Configuration UI" /></p> <p>Cloudflare probes Billforward’s Origins once every minute from all of Cloudflare’s data centers around the world (a feature available to all Load Balancing Enterprise customers). If Billforward’s GCE Origin goes down, Cloudflare will quickly and automatically failover to the AWS Origin with no actions required from Billforward’s team.</p> <p>Google Compute Engine was chosen as the primary provider for this application by virtue of cost. Martin Lee, Site Reliability Engineer at Billforward says, “Essentially, GCE is cheaper for our general purpose computing needs but we're more experienced with deployments in AWS. This strategy allows us to switch back and forth at will and avoid being tied in to either platform.” It is likely that Billforward will change the priority as pricing models evolve. <br /> <br> </p> <blockquote> <p>“It's a fairly fast moving world and features released by cloud providers can have a meaningful impact on performance and cost on a week by week basis - it helps to stay flexible,” says Martin. “We may also change priority based on features.”</p> </blockquote> <p><br>For orchestration of the compute and storage layers, Billforward uses <a href="https://www.docker.com/">Docker</a> containers managed through <a href="http://www.rancher.com/">Rancher</a>. They use distinct environments between cloud providers but are considering bridging an environment across cloud providers and using VPNs between them, which will enable them to move load between providers even more easily. “Our system is loosely coupled through a message queue,” adds Martin. “Having a container system across clouds means we can really take advantage of this - we can very easily move workloads across clouds without any danger of dropping tasks or ending up in an inconsistent state.”</p> <h4 id="benefits">Benefits</h4> <p>Billforward manages these connections at Cloudflare’s edge. Through this interface (or via the Cloudflare APIs), they can also manually move traffic from GCE to AWS by just disabling the GCE pool or by rearranging the Pool priority and make AWS the primary. These changes are near instant on the Cloudflare network and require no downtime to Billforward’s customer facing application. This allows them to act on potential advantageous pricing changes between the two cloud providers or move traffic to hit pricing tiers. </p> <p>In addition, Billforward is now not “locked-in” to either provider’s network; being able to move traffic and without any downtime means they can make traffic changes independent of Amazon or Google. They can also integrate additional cloud providers any time they deem fit: adding Microsoft Azure, for example, as a third Origin would be as simple as creating a new Pool and adding it to the Load Balancer. </p> <p>Billforward is a good example of a forward thinking company that is taking advantage of technologies from multiple providers to best serve their business and customers, while not being reliant on a single vendor. For further detail on their setup using Cloudflare, please check their <a href="https://www.billforward.net/blog/being-multi-cloud-with-cloudflare/">blog</a>.</p> </div> <footer> <small> Tagged with <a href="/tag/google-cloud/">Google Cloud</a>, <a href="/tag/cloud-computing/">Cloud Computing</a>, <a href="/tag/internet-summit/">Internet Summit</a> </small> </footer> <aside class="section learn-more"> <h5>Want to learn more about Cloudflare?</h5> <p><a href="https://www.cloudflare.com" class="btn btn-success">Learn more</a></p> </aside> <aside class="section comments"> <h3>Comments</h3> </aside> <div id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = 'cloudflare'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> </article> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); </script> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=596756540369391"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script src="//platform.linkedin.com/in.js" type="text/javascript">lang: en_US</script> <script type="text/javascript"> (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/platform.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script> </section> <aside class="sidebar"> <div class="widget"> <input type="text" placeholder="Search the blog" class="st-default-search-input"></input> <script type="text/javascript"> (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); e=d.getElementsByTagName(t)[0];s.async=0;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); _st('install','_KobMC_zsd_tDx_7NWiX','2.0.0'); </script> </div> <div class="widget"> <h4 class="widget-title">Cloudflare blog</h4> <p style="margin-top: 20px"> <a href="https://www.cloudflare.com/enterprise-service-request" class="btn btn-success" tabindex="11" target="_blank">Contact our team</a> </p> <p> <strong>US callers</strong><br/> 1 (888) 99-FLARE <br/> <strong>UK callers</strong><br/> +44 (0)20 3514 6970<br/> <strong>International callers</strong><br/> +1 (650) 319-8930 <BR/><BR/> <a href="https://www.cloudflare.com/plans" target="_blank">Full feature list and plan types</a> </p> <p>Cloudflare provides performance and security for any website. More than 6 million websites use Cloudflare.</p> <p>There is no hardware or software. Cloudflare works at the DNS level. It takes only 5 minutes to sign up. To learn more, please visit our website</p> </div> <div class="widget"> <h4 class="widget-title">Cloudflare features</h4> <ul class="menu menu-sidebar"> <li><a href="https://www.cloudflare.com/">Overview</a></li> <li><a href="https://www.cloudflare.com/cdn/">CDN</a></li> <li><a href="https://www.cloudflare.com/website-optimization/">Optimizer</a></li> <li><a href="https://www.cloudflare.com/security/">Security</a></li> <li><a href="https://www.cloudflare.com/analytics/">Analytics</a></li> <li><a href="https://www.cloudflare.com/apps">Apps</a></li> <li><a href="https://www.cloudflare.com/network/">Network map</a></li> <li><a href="https://www.cloudflarestatus.com">System status</a></li> </ul> </div> <div id="mc_embed_signup" class="widget"> <form action="https://cloudflare.us5.list-manage.com/subscribe/post?u=d80d4d74266c0c044b0bcd7ca&id=8dc0bf9dea" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <input type="email" value="" name="EMAIL" class="width-full required email" id="mce-EMAIL" placeholder="Enter your email address"/> <div id="mce-responses" class="clearfix"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div class="clearfix"> <button type="submit" name="subscribe" id="mc-embedded-subscribe" class="btn btn-primary width-full">Sign up for email updates</button> </div> </form> </div> </aside> </div> <footer id="footer" class="footer"> <div class="wrapper"> <nav class="navigation footer-nav"> <ul role="navigation"> <li id="cf_nav_menu-2" class="footer-column widget_cf_nav_menu"> <h6 class="widget-title">What We Do</h6> <div class="menu-what-we-do-container"> <ul class="menu menu-footer"> <li><a href="https://www.cloudflare.com/plans">Plans</a></li> <li><a href="https://www.cloudflare.com/performance/">Performance</a></li> <li><a href="https://www.cloudflare.com/security/">Security</a></li> <li><a href="https://www.cloudflare.com/reliability/">Reliability</a></li> <li><a href="https://www.cloudflare.com/apps">Apps</a></li> <li><a href="https://www.cloudflare.com/network-map">Network</a></li> </ul> </div> </li> <li id="cf_nav_menu-3" class="footer-column widget_cf_nav_menu"> <h6 class="widget-title">Resources</h6> <div class="menu-support-container"> <ul class="menu menu-footer"> <li><a href="https://www.cloudflare.com/support">Help Center</a></li> <li><a href="https://www.cloudflare.com/community">Community</a></li> <li><a href="https://www.cloudflare.com/video">Video Guides</a></li> <li><a href="https://www.cloudflarestatus.com">System Status</a></li> <li><a href="https://www.cloudflare.com/contact">Contact Us</a></li> <li class="active"><a href="/">Blog</a></li> </ul> </div> </li> <li id="cf_nav_menu-4" class="footer-column widget_cf_nav_menu"> <h6 class="widget-title">Not a Developer?</h6> <div class="menu-resources-container"> <ul class="menu menu-footer"> <li><a href="https://www.cloudflare.com/case-studies">Case Studies</a></li> <li><a href="https://www.cloudflare.com/resources/">White Papers</a></li> <li><a href="https://www.cloudflare.com/internet-summit/">Internet Summit</a></li> <li><a href="https://www.cloudflare.com/hosting-partners">Partners</a></li> <li><a href="https://www.cloudflare.com/hosting-partners">Integrations</a></li> </ul> </div> </li> <li id="cf_nav_menu-5" class="footer-column widget_cf_nav_menu"> <h6 class="widget-title">About Us</h6> <div class="menu-about-us-container"> <ul class="menu menu-footer"> <li><a href="https://www.cloudflare.com/people">Our Team</a></li> <li><a href="https://www.cloudflare.com/join-our-team">Careers</a></li> <li><a href="https://www.cloudflare.com/press-center">Press</a></li> <li><a href="https://www.cloudflare.com/terms">Terms of Service</a></li> <li><a href="https://www.cloudflare.com/security-policy/">Privacy & Security</a></li> <li><a href="https://www.cloudflare.com/abuse/">Trust & Safety</a></li> </ul> </div> </li> <li id="cf_nav_menu-6" class="footer-column widget_cf_nav_menu"> <h6 class="widget-title">Connect</h6> <div class="menu-connect-container"> <ul class="menu menu-footer"> <li><a href="http://twitter.com/cloudflare">Twitter</a></li> <li><a href="https://www.facebook.com/Cloudflare">Facebook</a></li> <li><a href="https://www.linkedin.com/company/cloudflare-inc-">LinkedIn</a></li> <li><a href="https://www.youtube.com/cloudflare-">YouTube</a></li> <li><a href="https://plus.google.com/+cloudflare/posts">Google+</a></li> <li><a href="/rss/">RSS</a></li> </ul> </div> </li> </ul> <div class="credits">All content © 2017 <a href="https://cloudflare.com">Cloudflare</a>. Proudly published with <a href="https://ghost.org">Ghost</a>.</div> </nav> </div> </footer> <script> var links = document.links; for (var i = 0, linksLength = links.length; i < linksLength; i++) { if (links[i].hostname != window.location.hostname) { links[i].target = '_blank'; } } </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.1/prism.min.js"></script> <script type="text/javascript" src="/assets/js/jquery.fitvids.js?v=b6cf3f99a6"></script> <script type="text/javascript"> $(document).ready(function(){ $(".post-content").fitVids(); }); </script> <script type="text/javascript"> var disqus_shortname = 'cloudflare'; (function () { var s = document.createElement('script'); s.async = true; s.type = 'text/javascript'; s.src = '//' + disqus_shortname + '.disqus.com/count.js'; (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); }()); </script> </body> </html>