
<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>Wed, 08 Apr 2026 11:12:34 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Migrate from S3 easily with the R2 Super Slurper]]></title>
            <link>https://blog.cloudflare.com/cloudflare-r2-super-slurper/</link>
            <pubDate>Tue, 15 Nov 2022 14:01:00 GMT</pubDate>
            <description><![CDATA[ Today we're announcing the R2 Super Slurper, the tool that will enable you to migrate all your data to R2 in a simple and efficient way ]]></description>
            <content:encoded><![CDATA[ <p></p><p>R2 is an <a href="https://www.cloudflare.com/developer-platform/solutions/s3-compatible-object-storage/">S3-compatible</a>, globally <a href="https://www.cloudflare.com/developer-platform/products/r2/">distributed object storage</a>, allowing developers to store large amounts of unstructured data without the costly <a href="https://www.cloudflare.com/learning/cloud/what-are-data-egress-fees/">egress bandwidth fees</a> you commonly find with other providers.</p><p>To enjoy this egress freedom, you’ll have to start planning to send all that data you have somewhere else into R2. You might want to do it all at once, moving as much data as quickly as possible while ensuring data consistency. Or do you prefer moving the data to R2 slowly and gradually shifting your reads from your old provider to R2? And only then decide whether to cut off your old storage or keep it as a backup for new objects in R2?</p><p>There are multiple options for architecture and implementations for this movement, but taking terabytes of data from one cloud storage provider to another is always problematic, always involves planning, and likely requires staffing.</p><p>And that was hard. But not anymore.</p><p>Today we're announcing the R2 Super Slurper, the feature that will enable you to move all your data to R2 in one giant slurp or sip by sip — all in a friendly, intuitive UI and API.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4ndFgYCd0mbAXlnMc5LRQ2/a52499ae2b42f8f7d0b99c08ae1333b5/image2-29.png" />
            
            </figure>
    <div>
      <h2>The first step: R2 Super Slurper Private Beta</h2>
      <a href="#the-first-step-r2-super-slurper-private-beta">
        
      </a>
    </div>
    
    <div>
      <h3>One giant slurp</h3>
      <a href="#one-giant-slurp">
        
      </a>
    </div>
    <p>The very first iteration of the R2 Super Slurper allows you to target an S3 bucket and import the objects you have stored there into your R2 bucket. It's a simple, one-time import that covers the most common scenarios. Point to your existing S3 source, grant the R2 Super Slurper permissions to read the objects you want to migrate, and an asynchronous job will take care of the rest.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3WkVFWS2GIAuc9TnpHuAsT/898b781ae72a521fddafb2ddb722763b/image1-34.png" />
            
            </figure><p>You'll also be able to save the definitions and credentials to access your source bucket, so you can migrate different folders from within the bucket, in new operations, without having to define URLs and credentials all over again. This operation alone will save you from scripting your way through buckets with many paths you’d like to validate for consistency.  During the beta stages — with your feedback — we will evolve the R2 Super Slurper to the point where anyone can achieve an entirely consistent, super slurp, all with the click of just a few buttons.</p>
    <div>
      <h3>Automatic sip by sip migration</h3>
      <a href="#automatic-sip-by-sip-migration">
        
      </a>
    </div>
    <p>Other future development includes automatic sip by sip migration, which provides a way to incrementally copy objects to R2 as they get requested from an end-user. It allows you to start serving objects from R2 as they migrate, saving you money immediately.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/36YMN6Y7USY0TMwG8VQuob/a3e1f03714895b9581abe870a322566b/image4-16.png" />
            
            </figure><p>The flow of the requests and object migration will look like this:</p><ul><li><p><b>Check for Object</b> — A request arrives at Cloudflare <b>(1)</b>, and we check the R2 bucket for the requested object <b>(2)</b>. If the object exists, R2 serves it <b>(3)</b>.</p></li><li><p><b>Copy the Object</b> — If the object does <i>not</i> exist in R2, a request for the object flows to the origin bucket <b>(2a)</b>. Once there's an answer with an object, we serve it and copy it into R2 <b>(2b)</b>.</p></li><li><p><b>Serve the Object —</b> R2 serves all future requests for the object <b>(3)</b>.</p></li></ul><p>With this capability you can copy your objects, previously scattered through one or even multiple buckets from other vendors, while ensuring that everything requested from the end-user side gets served from R2. And because you will only need to use the R2 Super Slurper to sip the object from elsewhere on the first request, you will <a href="https://r2-calculator.cloudflare.com/">start saving on those egress fees</a> for any subsequent ones.</p><p>We are currently targeting <a href="https://www.cloudflare.com/developer-platform/solutions/s3-compatible-object-storage/">S3-compatible</a> buckets for now, but you can expect other sources to become available during 2023.</p>
    <div>
      <h2>Join the waitlist for the R2 Super Slurper private beta</h2>
      <a href="#join-the-waitlist-for-the-r2-super-slurper-private-beta">
        
      </a>
    </div>
    <p>To access the R2 Super Slurper, <a href="https://dash.cloudflare.com/?to=/:account/r2/plans">you must be an R2 user first</a> and sign up for the R2 Super Slurper waitlist <a href="https://dash.cloudflare.com/?to=/:account/r2/slurper">here</a>.</p><p>We will collaborate closely with many early users in the private beta stage to refine and test the service . Soon, we'll announce an open beta where users can sign up for the service.</p><p>Make sure to join our <a href="https://discord.gg/cloudflaredev">Discord server</a> and get in touch with a fantastic community of users and Cloudflare staff for all R2-related topics!</p> ]]></content:encoded>
            <category><![CDATA[Developer Week]]></category>
            <category><![CDATA[R2 Super Slurper]]></category>
            <category><![CDATA[Data Transfer Bucket]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <category><![CDATA[R2]]></category>
            <guid isPermaLink="false">5pytIiHYPQbpQj1sc4tDlE</guid>
            <dc:creator>Aly Cabral</dc:creator>
        </item>
        <item>
            <title><![CDATA[R2 is now Generally Available]]></title>
            <link>https://blog.cloudflare.com/r2-ga/</link>
            <pubDate>Wed, 21 Sep 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[ R2 is now generally available!! R2 gives developers object storage minus the egress fees ]]></description>
            <content:encoded><![CDATA[ <p></p><p><a href="https://www.cloudflare.com/developer-platform/r2/">R2</a> gives developers object storage, without the egress fees. Before R2, cloud providers taught us to expect a data transfer tax every time we actually used the data we stored with them. Who stores data with the goal of never reading it? No one. Yet, every time you read data, the egress tax is applied. R2 gives developers the ability to access data freely, breaking the ecosystem lock-in that has long tied the hands of application builders.</p><p>In May 2022, we launched R2 into open beta. In just four short months we’ve been overwhelmed with over 12k developers (and rapidly growing) getting started with R2. Those developers came to us with a wide range of use cases from podcast applications to video platforms to <a href="https://www.cloudflare.com/ecommerce/">ecommerce websites</a>, and users like <a href="https://www.vecteezy.com">Vecteezy</a> who was spending six figures in egress fees. We’ve learned quickly, gotten great feedback, and today we’re excited to announce R2 is now generally available.</p><p>We wouldn’t ask you to bet on tech we weren’t willing to bet on ourselves. While in open beta, we spent time moving our own products to R2. One such example, Cloudflare Images, proudly serving thousands of customers in production, is now powered by R2.</p>
    <div>
      <h2>What can you expect from R2?</h2>
      <a href="#what-can-you-expect-from-r2">
        
      </a>
    </div>
    
    <div>
      <h3>S3 Compatibility</h3>
      <a href="#s3-compatibility">
        
      </a>
    </div>
    <p>R2 gives developers a familiar interface for object storage, the S3 API. With <a href="https://www.cloudflare.com/developer-platform/solutions/s3-compatible-object-storage/">S3 Compatibility</a>, you can easily migrate your applications and start taking advantage of what R2 has to offer right out of the gate.</p><p>Let’s take a look at some basic data operations in javascript. To try this out on your own, you’ll need to <a href="https://developers.cloudflare.com/r2/platform/s3-compatibility/tokens/">generate an Access Key</a>.</p>
            <pre><code>// First we import our bindings as usual
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// Then we create a new client. Note that while R2 requires a region for S3 compatibility, only “auto” is supported
const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID, //  fill in your own
    secretAccessKey: SECRET_ACCESS_KEY, // fill in your own
  },
});

// And now we can use our client to list associated buckets just like we would with any other S3 compatible object storage
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);</code></pre>
            <p>Regardless of the language, the S3 API offers familiarity. We have examples in <a href="https://developers.cloudflare.com/r2/examples/aws-sdk-go/">Go</a>, <a href="https://developers.cloudflare.com/r2/examples/boto3/">Java</a>, <a href="https://developers.cloudflare.com/r2/examples/aws-sdk-php/">PHP</a>, and <a href="https://developers.cloudflare.com/r2/examples/aws-sdk-ruby/">Ruby</a>.</p>
    <div>
      <h3>Region: Automatic</h3>
      <a href="#region-automatic">
        
      </a>
    </div>
    <p>We don’t want to live in a world where developers are spending time looking into a crystal ball and predicting where application traffic might come from. Choosing a region as the first step in application development forces optimization decisions long before the first users show up.</p><p>While S3 compatibility requires you to specify a region, the only region we support is ‘auto’. Today, R2 automatically selects a bucket location in the closest available region to the create bucket request. If I create a bucket from my home in Austin, that bucket will live in the closest available R2 region to Austin.</p><p>In the future, R2 will use data access patterns to automatically optimize where data is stored for the best user experience.</p>
    <div>
      <h3>Cloudflare Workers Integration</h3>
      <a href="#cloudflare-workers-integration">
        
      </a>
    </div>
    <p>The Workers platform offers developers powerful compute across Cloudflare’s network. When you deploy on Workers, your code is deployed to Cloudflare’s <a href="https://www.cloudflare.com/network/">more than 275 locations</a> across the globe, automatically. When paired with R2, Workers allows developers to add custom logic around their data without any performance overhead. Workers is built on isolates and not containers, and as a result you don’t have to deal with lengthy cold starts.</p><p>Let’s try creating a simple REST API for an R2 bucket! First, <a href="https://developers.cloudflare.com/r2/data-access/workers-api/workers-api-usage/#3-create-your-bucket">create</a> your bucket and then add an R2 <a href="https://developers.cloudflare.com/r2/data-access/workers-api/workers-api-usage/#4-bind-your-bucket-to-a-worker">binding</a> to your worker.</p>
            <pre><code>export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // we’ll derive a key from the url path

    switch (request.method) {
      // For writes, we capture the request body and write that out to our bucket under the associated key
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

      // For reads, we’ll use our key to perform a lookup
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

        // if we don’t find the given key we’ll return a 404 error
        if (object === null) {
          return new Response('Object Not Found', { status: 404 });
        }

        const headers = new Headers();
        object.writeHttpMetadata(headers);
        headers.set('etag', object.httpEtag);

        return new Response(object.body, {
          headers,
        });
    }
  },
};</code></pre>
            <p>Through this Workers API, we can add all sorts of useful logic to the hot path of a R2 request.</p>
    <div>
      <h3>Presigned URLs</h3>
      <a href="#presigned-urls">
        
      </a>
    </div>
    <p>Sometimes you’ll want to give your users permissions to specific objects in R2 without requiring them to jump through hoops. Through pre-signed URLs you can delegate your permissions to your users for any unique combination of object and action. Mint a pre-signed URL to let a user upload a file or share a file without giving access to the entire bucket.</p>
            <pre><code>import {
  S3Client,
  PutObjectCommand
} from "@aws-sdk/client-s3";

import { getSignedUrl } from "@aws-sdk/s3-request-presigner";

const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID,
    secretAccessKey: SECRET_ACCESS_KEY,
  },
});

// With getSignedUrl we can produce a custom url with a one hour expiration which will allow our end user to upload their dog pic
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)</code></pre>
            <p>Presigned URLs make it easy for developers to build applications that let end users safely access R2 directly.</p>
    <div>
      <h3>Public buckets</h3>
      <a href="#public-buckets">
        
      </a>
    </div>
    <p>Enabling <a href="https://developers.cloudflare.com/r2/data-access/public-buckets/">public access for a R2 bucket</a> allows you to expose that bucket to unauthenticated requests. While doing so on its own is of limited use, when those buckets are linked to a domain under your account on Cloudflare you can enable other Cloudflare features such as Access, Cache and bot management seamlessly on top of your data in R2.</p><p>Bottom line: public buckets help to bridge the gap between domain oriented Cloudflare features and the buckets you have in R2.</p>
    <div>
      <h3>Transparent Pricing</h3>
      <a href="#transparent-pricing">
        
      </a>
    </div>
    <p>R2 will never charge for egress. The pricing model depends on three factors alone: storage volume, <a href="https://developers.cloudflare.com/r2/platform/pricing/#class-a-operations">Class A operations</a> (writes, lists) and <a href="https://developers.cloudflare.com/r2/platform/pricing/#class-b-operations">Class B operations</a> (reads).</p><ul><li><p>Storage is priced at $0.015 / GB, per month.</p></li><li><p>Class A operations cost $4.50 / million.</p></li><li><p>Class B operations cost $0.36 / million.</p></li></ul><p>But before you’re ready to start paying for R2, we allow you to get up and running at absolutely no cost. The included usage is as follows:</p><ul><li><p>10 GB-months of stored data</p></li><li><p>1,000,000 Class A operations, per month</p></li><li><p>10,000,000 Class B operations, per month</p></li></ul>
    <div>
      <h2>What’s next?</h2>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>Making R2 generally available is just the beginning of our object storage journey. We’re excited to share what we plan to build next.</p>
    <div>
      <h3>Object Lifecycles</h3>
      <a href="#object-lifecycles">
        
      </a>
    </div>
    <p>In the future R2 will allow developers to set policies on objects. For example, setting a policy that deletes an object 60 days after it was last accessed. Object Lifecycles pushes object management down to the object store.</p>
    <div>
      <h3>Jurisdictional Restrictions</h3>
      <a href="#jurisdictional-restrictions">
        
      </a>
    </div>
    <p>While we don’t have plans to support regions explicitly, we know that data locality is important for a good deal of compliance use cases. Jurisdictional restrictions will allow developers to set a jurisdiction like the ‘EU’ that would prevent data from leaving the jurisdiction.</p>
    <div>
      <h3>Live Migration without Downtime</h3>
      <a href="#live-migration-without-downtime">
        
      </a>
    </div>
    <p>For large datasets, migrations are live and ongoing, as it takes time to move data over. Cache reserve is an easy way to quickly migrate your assets into a managed R2 instance to reduce your egress costs at the touch of a button. In the future, we'll be extending this mechanism so that you can migrate any of your existing S3 object storage buckets to R2.</p><p>We invite everyone to sign up and get started with R2 today. Join the growing community of developers building on Cloudflare. If you have any feedback or questions, find us on our Discord server <a href="https://discord.gg/V3GEduuBjP">here</a>! We can’t wait to see what you build.</p>
    <div>
      <h3>Watch on Cloudflare TV</h3>
      <a href="#watch-on-cloudflare-tv">
        
      </a>
    </div>
    <div></div><p></p> ]]></content:encoded>
            <category><![CDATA[GA Week]]></category>
            <category><![CDATA[General Availability]]></category>
            <category><![CDATA[Cloudflare Workers]]></category>
            <category><![CDATA[undefined]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <guid isPermaLink="false">678VjsJXBjjrsemLL1WOok</guid>
            <dc:creator>Aly Cabral</dc:creator>
        </item>
        <item>
            <title><![CDATA[Welcome to Platform Week]]></title>
            <link>https://blog.cloudflare.com/platform-week-2022/</link>
            <pubDate>Sun, 08 May 2022 16:59:38 GMT</pubDate>
            <description><![CDATA[ This Platform Week, we don’t want to deliver on just new and shiny things (though there will be a few of those, too!). We want to deliver on principles. On letting the best solution win. On breaking developers out of lock in: whether because of code, or because of economics ]]></description>
            <content:encoded><![CDATA[ <p></p><p><i>Principled</i>. It’s one of Cloudflare’s three core values (alongside curiosity and transparency).</p><p>It’s a word that we came back to quite a bit in thinking through a question that has been foundational in driving us for this year’s Platform Week: what makes a truly great developer platform?</p><p>Of course, when it comes to evaluating developer platforms, the temptation is to focus on the “feeds and speeds” part of the equation. Who is the fastest? Who has the coolest tech? Who lets you do stuff that previously you could not?</p><p>Undoubtedly, these are all important questions. But we realized that the fun and shiny things which are often answers to these questions can easily become distractions from the true promise of developing on the Internet — and even traps that the less principled developer platforms can use to lure you into their arms.</p><p>The promise being, of course: that you can pull together solutions from a variety of different providers, to build something greater than what you’d be able to do with any one of them alone. That you can build something based on whatever is best when you sit down to create your application. And of course, if something better subsequently comes along, then you can switch to it and take advantage of that, too. When you think about it, it makes sense: all the Internet really is a network based on a common set of standards that allows us all to talk to each other.</p><p>And yet, when it comes to the cloud platforms, it feels like we’re further away from that promise than ever before.</p><p><b><i>How did that happen?</i></b></p><p>When you start to think about why: well, many of the winners of the cloud have become too big for their (and our) own good. The same players that were underdogs have become incumbents — not just bending the world to their will, but sticking to their assumptions of what the world looked like a decade ago. We went from a highly competitive environment, with an even distribution of power, to something entirely unbalanced. Somewhere along the way, Hotel California became the theme song of the cloud: a friendly face welcomes you in… and then you can’t leave.</p><p>This manifests in many ways.</p><p>Sometimes it takes the form of egregious egress fees, where you are stuck with using in-ecosystem tooling instead of the best tool for the job. We don’t believe in that. We want an Internet that allows for specialization, where developers can use the best across several offerings, bringing together those services to build something incredible. But that requires giving developers freedom of choice: without hidden pricing considerations pushing you to stay with large, incumbent vendors. In fact, in many respects, freedom of choice <i>is</i> the promise of the Internet for developers.</p><p>We want to get back to that.</p><p>But it’s not just pricing. Other times, lock-in happens through the code or APIs needed to build with a service. Developers tie their applications to the services that power them, and eventually, without you even realizing it, it becomes incredibly cumbersome to switch off. We’ve watched the Internet become more proprietary, where vendors offer products as a service without the ability to run them anywhere else. Of course, that’s where standards come in, defining the same language and behavior across vendors.</p><p>Developers win when we open up the APIs we support and languages we speak, and rally several competing options around a common set. Continuously winning a developer’s business shouldn’t be because you’ve made someone dependent on you, and they can’t get out — it should be because what you’re offering is better than the alternatives.</p><p><b><i>When that happens, developers win.</i></b></p><p>This Platform Week, we don’t want to deliver on just new and shiny things (though there will be a few of those, too!). We want to deliver on principles. On letting the best solution win. On breaking developers out of lock in: whether because of code, or because of economics.</p><p>To get this right, we must start at the very beginning — the foundation. Everything we do is built on the foundation of the open web and open standards. That’s not something we take lightly, and certainly not something we take for granted. We decided the right way to kick this week off would be by giving back, and helping do what we can to help push the web, and those open standards forward.</p><p>So, that’s the foundation. But now you need the right blocks to build on it.</p><p>There’s one building block we know you’re excited about, it’s data. And we are too, which is why we’ll be giving you an update on a certain something we’ve had in beta the last little while. And that’s not all, either: there may even be a sequel.</p><p>Data is one thing, but applications need to share that data with services to extract value. This week we’ll make it easier and cheaper to connect the pieces of your stack together, enabling the sending of information where you need it, when you need it.</p><p>As we all know, the reason we all work so hard as developers is to enable that most critical of functionality: sharing pictures and videos of cats and babies. There are always better ways of doing it though, and we’re going to dedicate a whole day to new ways to upload, stream and share these gems.</p><p>And finally, we want to help the Internet become more programmable. Platforms offer real customizability to the developers they serve: enabling them to do things that the platform creator itself never envisioned. When you work with the application services component of Cloudflare, you can customize bot scores, load balancing rules, routing — all by programming our network. And we’re not just talking about relying on APIs to do things that we, the original developer, initially envisioned. We’re talking about true <i>programmability</i>. Whether you want to build a customized bot within an existing chat application, or a bespoke experience on an eCommerce website builder, we’re excited to move development beyond the era of the API into true programmability, beyond our walls, right across the web.</p><p><b><i>But back to it: principled.</i></b></p><p>Yes, we’re going to be delivering this week on all the innovation that you’ve come to expect from us. And you know what we can’t wait to see? All the amazing things you’re able to build — but it won’t just be on us. In fact, it might not be on us at all, and that’s completely ok. What we’re excited about is you building things on <i>all</i> the incredible providers out there, the ones that are equally dedicated to helping build a better Internet for all developers.</p><p>We can’t wait to show you what we have in store.</p> ]]></content:encoded>
            <category><![CDATA[Platform Week]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Product News]]></category>
            <guid isPermaLink="false">QM3xNwThtttl6M4IuuAtJ</guid>
            <dc:creator>Rita Kozlov</dc:creator>
            <dc:creator>Aly Cabral</dc:creator>
            <dc:creator>James Allworth</dc:creator>
        </item>
        <item>
            <title><![CDATA[Announcing Green Compute on Cloudflare Workers]]></title>
            <link>https://blog.cloudflare.com/announcing-green-compute/</link>
            <pubDate>Tue, 27 Jul 2021 12:59:26 GMT</pubDate>
            <description><![CDATA[ At Cloudflare, our goal is to bring sustainable computing to you without the need for any additional time, work, or complexity. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2lqbHdngnsAcoCYQsj3nyI/6d787b14f3bc14d318f3f56e1726379b/Green-Compute-1.png" />
            
            </figure><p>All too often we are confronted with the choice to move quickly or act responsibly. Whether the topic is safety, security, or in this case sustainability, we’re asked to make the trade off of halting innovation to protect ourselves, our users, or the planet. But what if that didn’t always need to be the case? At Cloudflare, our goal is to bring sustainable computing to you without the need for any additional time, work, or complexity.</p><p>Enter Green Compute on Cloudflare Workers.</p><p>Green Compute can be enabled for any <a href="/introducing-cron-triggers-for-cloudflare-workers/">Cron triggered Workers</a>. The concept is simple: when turned on, we’ll take your compute workload and run it exclusively on parts of our edge network located in facilities powered by renewable energy. Even though all of Cloudflare’s edge network is powered by renewable energy already, some of our data centers are located in third-party facilities that are not 100% powered by renewable energy. Green Compute takes our commitment to sustainability one step further by ensuring that not only our network equipment but also the building facility as a whole are powered by renewable energy. There are absolutely no code changes needed. Now, whether you need to update a leaderboard every five minutes or do DNA sequencing directly on our edge (yes, that’s a real use case!), you can minimize the impact of any scheduled work, regardless of how complex or energy intensive.</p>
    <div>
      <h3>How it works</h3>
      <a href="#how-it-works">
        
      </a>
    </div>
    <p>Cron triggers allow developers to set time-based invocations for their Workers. These Workers happen on a recurring schedule, as opposed to being triggered by application users via HTTP requests. Developers specify a job schedule in familiar cron syntax either through wrangler or within the Workers Dashboard. To set up a scheduled job, first create a Worker that performs a periodic task, then navigate to the ‘Triggers’ tab to define a Cron Trigger.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2C5uM6DrnUYZ7rM07VN4e6/57448d7540ee4be1f9e175854ea84e8d/image2-1.gif" />
            
            </figure><p>The great thing about cron triggered Workers is that there is no human on the other side waiting for a response in real time. There is no end user we need to run the job close to. Instead, these Workers are scheduled to run as (often computationally expensive) background jobs making them a no-brainer candidate to run exclusively on sustainable hardware, even when that hardware isn’t the closest to your user base.</p><p>Cloudflare’s massive global network is logically one distributed system with all the parts connected, secured, and trusted. Because our network works as a single system, as opposed to a system with logically isolated regions, we have the flexibility to seamlessly move workloads around the world keeping your impact goals in mind without any additional management complexity for you.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/fxW5ASzYbMXuNVsv5plW0/b20406a3e41867c15147245fd4d92be3/image1-27.png" />
            
            </figure><p>When you set up a Cron Trigger with Green Compute enabled, the Cloudflare network will route all scheduled jobs to green energy hardware automatically, without any application changes needed. To turn on Green Compute today, <a href="https://www.cloudflare.com/green-compute-cloudflare-workers/">signup for our beta.</a></p>
    <div>
      <h3>Real world use</h3>
      <a href="#real-world-use">
        
      </a>
    </div>
    <p>If you haven’t ever had the pleasure of writing a cron job yourself, you might be wondering — what do you use scheduled compute for anyway?</p><p>There are a wide range of periodic maintenance tasks necessary to power any application. In my working life, I’ve built a scheduled job that ran every minute to monitor the availability of the system I was responsible for, texting me if any service was unavailable. In another instance, a job ran every five mins, keeping the core database and search feature in sync by pulling all new application data, transforming it, then inserting into a search database. In yet another example, a periodic job ran every half hour to iterate over all user sessions and cleanup sessions that were no longer active.</p><p>Scheduled jobs are the backbone of real world systems. Now, with Green Compute on Cloudflare Workers all these real world systems and their computationally expensive background maintenance tasks, can take advantage of running compute exclusively on machines powered by renewable energy.</p>
    <div>
      <h3>The Green Network</h3>
      <a href="#the-green-network">
        
      </a>
    </div>
    <p>Our mission at Cloudflare is to help you tackle your sustainability goals. Today, with the launch of the Carbon Impact Report we gave you visibility into your environmental impact. The collaboration with the Green Web Foundation gave green hosting certification for Cloudflare Pages. And our launch of Green Compute on Cloudflare Workers allows you to exclusively run on hardware powered by renewable energy. And the best part? No additional system complexity is required for any of the above.</p><p>Cloudflare is focused on making it easy to hit your ambitious goals. We are just getting started.</p> ]]></content:encoded>
            <category><![CDATA[Impact Week]]></category>
            <category><![CDATA[Serverless]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Cloudflare Workers]]></category>
            <category><![CDATA[Sustainability]]></category>
            <guid isPermaLink="false">2iPJ5a4FrMgFrft8k3Tecx</guid>
            <dc:creator>Aly Cabral</dc:creator>
        </item>
        <item>
            <title><![CDATA[Introducing Workers Usage Notifications]]></title>
            <link>https://blog.cloudflare.com/introducing-workers-usage-notifications/</link>
            <pubDate>Thu, 22 Jul 2021 14:59:04 GMT</pubDate>
            <description><![CDATA[ Today we’re excited to launch Workers usage notifications that proactively send relevant usage information directly to your inbox. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>So you’ve built an application on the Workers platform. The first thing you might be wondering after pushing your code out into the world is “what does my production traffic look like?” How many requests is my Worker handling? How long are those requests taking? And as your production traffic evolves overtime it can be a lot to keep up with. The last thing you want is to be surprised by the traffic your serverless application is handling.  But, you have a million things to do in your day job, and having to log in to the Workers dashboard every day to check usage statistics is one extra thing you shouldn’t need to worry about.</p><p>Today we’re excited to launch Workers usage notifications that proactively send relevant usage information directly to your inbox. Usage notifications come in two flavors. The first is a weekly summary of your Workers usage with a breakdown of your most popular Workers. The second flavor is an on-demand usage notification, triggered when a worker’s CPU usage is 25% above its average CPU usage over the previous seven days. This on-demand notification helps you proactively catch large changes in Workers usage as soon as those changes occur whether from a huge spike in traffic or a change in your code.</p><p>As of today, if you create a new free account with Workers, we’ll enable both the weekly summary and the CPU usage notification by default. All other account types will not have Workers usage notifications turned on by default, but the notifications can be enabled as needed. Once we collect substantial user feedback, our goal is to turn these notifications on by default for all accounts.</p>
    <div>
      <h3>The Worker Weekly Summary</h3>
      <a href="#the-worker-weekly-summary">
        
      </a>
    </div>
    <p>The mission of the Worker Weekly Summary is to give you a high-level view of your Workers usage automatically, in your inbox, without needing to sign in to the Worker’s dashboard. The summary includes valuable information such as total request counts, duration and egress data transfer, aggregated across your account, with breakouts for your most popular Workers that include median CPU time. Where duration accounts for the entire time your Worker spends responding to a request, CPU time is the time a script spends in computational work on the Cloudflare edge, discounting any time spent waiting on network requests, including requests to third-party APIs.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/19aTEJ89wklJdmBxDjKUFR/588e690ab6f6d27ca7b1b88f59f1653f/image7-5.png" />
            
            </figure>
    <div>
      <h3>Workers Usage Report</h3>
      <a href="#workers-usage-report">
        
      </a>
    </div>
    <p>Where the Workers Weekly Summary provides a high-level view of your account usage statistics, the Workers Usage Report is targeted, event-driven and potentially actionable. It identifies those Workers with greater than a 25% increase in CPU time compared to the average of the previous 7 days (i.e., those Workers taking significantly more CPU resources now than in the recent past).</p><p>While sometimes these increases may be no surprise, perhaps because you’ve recently pushed a new deployment that you expected to do more CPU heavy work, at other times they may indicate a bug or reveal that a script is unintentionally expensive. The Workers Usage Report gives us an opportunity to let you know when a noticeable change in your compute footprint occurs, so that you can remedy any potential problems right away.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/23Vmzhra0aIxnxovatROXf/ec80dd1d262f5309b0986e8fad1f174b/image1-17.png" />
            
            </figure>
    <div>
      <h3>Enabling Notifications</h3>
      <a href="#enabling-notifications">
        
      </a>
    </div>
    <p>If you’d like to explicitly opt in to notifications, you can start off by clicking Add in the Notifications section of the Cloudflare zone dashboard.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2GPx4pkyrW5uOrEMrDEKQm/5eb8f06908bb0eeeae2896ab2a263d89/image3-12.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/ih36y6EbGWRdaM9hynnRe/6b1866699fa3cfb9f5e8738fb8acadae/image6-8.png" />
            
            </figure><p>After clicking <b>Add</b>, note the two new entries below “Create Notifications” under the “Workers” Product:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/78orwe4zhhBbxt2eNDRrkb/488046dc054ca072a623c20233f85632/image5-9.png" />
            
            </figure><p>Click on the <b>Select</b> box in line with “ Weekly Summary” for the weekly roll-up, which will then allow you to configure email recipients, webhooks or connect the notification to PagerDuty.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6KuTDkhL2ZjCce3ngdnLnc/53ea253fe39b88dd9fba9da6f2b47c9d/image2-19.png" />
            
            </figure><p>Clicking <b>Select</b> next to “Usage Report” for CPU threshold notifications will send you to a similar configuration experience where you can customize email recipients and other integrations.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/68bLKgWpe0NzTo8JvOwN9l/5d2e62c6daac52407375f10119b97dda/image8-6.png" />
            
            </figure>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>As mentioned above, we’re enabling notifications by default for all <b><i>new</i></b> free plans on Workers. Before rolling out these notifications by default to all our users, we want to hear from you. Let us know your experience with our Workers usage notifications by joining our <a href="https://discord.com/invite/cloudflaredev">Developer Community discord</a> or by sending feedback via the survey in the email notifications.</p><p>Our Workers Weekly Summary and on-demand CPU usage notification are just the beginning of our journey to support a wide range of useful, relevant notifications that help you get visibility into your deployments. We want to surface the right usage information, exactly when you need it.</p> ]]></content:encoded>
            <category><![CDATA[Cloudflare Workers]]></category>
            <category><![CDATA[Serverless]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Product News]]></category>
            <guid isPermaLink="false">16sZePhxLlf4opoZxD79AE</guid>
            <dc:creator>Aly Cabral</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare Acquires Linc]]></title>
            <link>https://blog.cloudflare.com/cloudflare-acquires-linc/</link>
            <pubDate>Tue, 22 Dec 2020 13:00:00 GMT</pubDate>
            <description><![CDATA[ Today, we’re excited to announce the acquisition of Linc, an automation platform to help front-end developers collaborate and build powerful applications. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Cloudflare has always been about democratizing the Internet. For us, that means bringing the most powerful tools used by the largest of enterprises to the smallest development shops. Sometimes that looks like putting our global network to work defending against large-scale attacks. Other times it looks like giving Internet users simple and reliable privacy services like 1.1.1.1.  Last week, it looked like <a href="https://pages.cloudflare.com/">Cloudflare Pages</a> — a fast, secure and free way to build and host your <a href="https://www.cloudflare.com/learning/performance/what-is-jamstack/">JAMstack sites</a>.</p><p>We see a huge opportunity with Cloudflare Pages. It goes beyond making it as easy as possible to deploy static sites, and extending that same ease of use to building full dynamic applications. By creating a seamless integration between Pages and <a href="https://workers.cloudflare.com/">Cloudflare Workers</a>, we will be able to host the frontend and backend together, at the edge of the Internet and close to your users. The <a href="https://linc.sh/">Linc</a> team is joining Cloudflare to help us do just that.</p><p>Today, we’re excited to announce the acquisition of <a href="https://linc.sh/">Linc</a>, an automation platform to help front-end developers collaborate and build powerful applications. Linc has done amazing work with <a href="https://fab.dev/">Frontend Application Bundles</a> (FABs), making dynamic backends more accessible to frontend developers. Their approach offers a straightforward path to building end-to-end applications on Pages, with both frontend logic and powerful backend logic in one bundle. With the addition of Linc, we will accelerate Pages to enable richer and more powerful full-stack applications.</p><p>Combining Cloudflare’s edge network with Linc’s approach to server-side rendering, we’re able to set a new standard for performance on the web by delivering the speed of powerful servers close to users. Now, I’ll hand it over to Glen Maddern, who was the CTO of Linc, to share why they joined Cloudflare.</p><hr /><p>Linc and the Frontend Application Bundle (FAB) specification were designed with a single goal in mind: to give frontend developers the best possible tools to build, review, refine, and deploy their applications. An important piece of that is making server-side logic and rendering much more accessible, regardless of what type of app you're building.</p>
    <div>
      <h3>Static vs Dynamic frontends</h3>
      <a href="#static-vs-dynamic-frontends">
        
      </a>
    </div>
    <p>One of the biggest problems in frontend web development today is the dramatic difference in complexity when moving from generating static sites (e.g. building a directory full of HTML, JS, and CSS files) to hosting a full application (traditionally using NodeJS and a web server like Express). While you gain the flexibility of being able to render everything on-demand and customised for the current user, you increase your maintenance cost — you now have servers that you need to keep running. And unless you're operating at a global scale already, you'll often see worse end-user performance as your requests are only being served from one or maybe a couple of locations worldwide.</p><p>While serverless platforms have arisen to solve these problems for backend services and can be brought to bear on frontend apps, they're much less cost-effective than using static hosting, especially if the bulk of your frontend assets are static. As such, we've seen a rise of technologies under the umbrella term of "<a href="https://www.cloudflare.com/the-net/jamstack-websites/">JAMstack</a>"; they aim at making static sites more powerful (like rebuilding based off CMS updates), or at making it possible to deploy small pieces of server-side APIs as "cloud functions", along with each update of your app. But it's still fundamentally a limited architecture — you always have a static layer between you and your users, so the more dynamic your needs, the more complex your build pipeline becomes, or the more you're forced to rely on client-side logic.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3nHs2UUyT6chrUyhl6xyw0/c83dec72860b29808ddc81d5b23cc3e6/image4-26.png" />
            
            </figure><p>FABs took a different approach: a deployment artefact that could support the full range of server-side needs, from entirely static sites, apps with some API routes or cloud functions, all the way to full server-side streaming rendering. We also made it compatible with all the cloud hosting providers you might want, so that deploying becomes as easy as uploading a ZIP file. Then, as your needs change, as dynamic content becomes more important, as new frameworks arise that offer increasing performance or you look at moving which provider you're hosting with, you never need to change your tooling and deployment processes.</p>
    <div>
      <h3>The FAB approach</h3>
      <a href="#the-fab-approach">
        
      </a>
    </div>
    <p>Regardless of what framework you're working with, the FAB compiler generates a fab.zip file that has two components: a server.js file that acts as a server-side entry point, and an _assets directory that stores the HTML, CSS, JS, images, and fonts that are sent to the client.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6hCbaeFsNVeN579nyOCVfZ/e24bb3feb541c696d50cee8736cb629a/image3-43.png" />
            
            </figure><p>This simple structure gives us enough flexibility to handle all kinds of apps. For example, a static site will have a server.js of only a few auto-generated lines of server-side code, just enough to add redirects for any files outside the _assets directory. On the other end of the spectrum, an app with full server rendering looks and works exactly the same. It just has a lot more code inside its server.js file.</p><p>On a server running NodeJS, serving a compiled FAB is as easy as fab serve fab.zip, but FABs are really designed with production class hosting in mind. They make use of world-class <a href="https://www.cloudflare.com/learning/cdn/what-is-a-cdn/">CDNs</a> and the best serverless hosting platforms around.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5iIRJAFAloTN8spJ8zbEIT/082f423dc57e5a03ba6a312e6675cbd7/image5-27.png" />
            
            </figure><p>When a FAB is deployed, it's often split into these component parts and deployed separately. Assets are sent to a <a href="https://www.cloudflare.com/developer-platform/products/r2/">low-cost object storage platform</a> with a CDN in front of it, and the server component is sent to dedicated serverless hosting. It's all deployed in an atomic, idempotent manner that feels as simple as uploading static files, but completely unlocks dynamic server-side code as part of your architecture.</p><p>That generic architecture works great and is compatible with virtually every hosting platform around, but it works slightly differently on Cloudflare Workers.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5xdv1Txo6E6IuxLGuBUj6d/735efdbf5f13d90225e4e4dfa11e2c04/image2-43.png" />
            
            </figure><p>Workers, unlike other serverless platforms, truly runs at the edge: there is no CDN or load balancer in front of it to split off /_assets routes and send them directly to the Assets storage. This means that every request hits the worker, whether it's triggering a full page render or piping through the bytes for an image file. It might feel like a downside, but with Workers' performance and cost profile, it's quite the opposite — it actually gives us much more flexibility in what we end up building, and gets us closer to the goal of fully unlocking server-side code.</p><p>To give just one example, we no longer need to store our asset files on a dedicated static file host — instead, we can use Cloudflare's global key-value storage: Workers KV. Our server.js running inside a Worker can then map /_assets requests directly into the KV store and stream the result to the user. This results in significantly better performance than proxying to a third-party asset host.</p><p>What we've found is that Cloudflare offered the most "FAB-native" hosting option, and so it's very exciting to have the opportunity to further develop what they can do.</p>
    <div>
      <h3>Linc + Cloudflare</h3>
      <a href="#linc-cloudflare">
        
      </a>
    </div>
    <p>As we stated above, Linc's goal was to give frontend developers the best tooling to build and refine their apps, regardless of which hosting they were using. But we started to notice an important trend —  if a team had a free choice for where to host their frontend, they inevitably chose Cloudflare Workers. In some cases, for a period, teams even used Linc to deploy a FAB to Workers alongside their existing hosting to demonstrate the performance improvement before migrating permanently.</p><p>At the same time, we started to see more and more opportunities to fully embrace edge-rendering and make global serverless hosting more powerful and accessible. But the most exciting ideas required deep integration with the hosting providers themselves. Which is why, when we started talking to Cloudflare, everything fell into place.</p><p>We're so excited to join the Cloudflare effort and work on expanding Cloudflare Pages to cover the full spectrum of applications. Not only do they share our goal of bringing sophisticated technology to every development team, but with innovations like Durable Objects starting to offer new storage paradigms, the potential for a truly next-generation deployment, review &amp;  hosting platform is tantalisingly close.</p> ]]></content:encoded>
            <category><![CDATA[Serverless]]></category>
            <category><![CDATA[Cloudflare Workers]]></category>
            <category><![CDATA[Cloudflare Pages]]></category>
            <category><![CDATA[JAMstack]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <category><![CDATA[Acquisitions]]></category>
            <guid isPermaLink="false">5qB64EMTsm3aXN4gkJN1yx</guid>
            <dc:creator>Aly Cabral</dc:creator>
            <dc:creator>Glen Maddern</dc:creator>
        </item>
    </channel>
</rss>