Serverless Functions vs Edge Functions vs Cloudflare workers
Published: 2023-08-23 05:43:47


Let’s quickly understand the differences between these 3 server-less technologies. If you are like me and have been too busy to get a glimpse of the whole server-less hype, stay tuned.


**What are** **Serverless Functions?**
As the name suggests they are functions that can run without requiring a dedicated server. Think of these serverless functions as a small unit of code that runs in response to specific events, usually triggered by HTTP requests. The logic behind the creation of this technology is to save long-running server costs for trivial and independent tasks. They are hosted on cloud platforms like AWS Lambda, Google Cloud Functions, or Azure Functions. These serverless functions are highly scalable, cost-effective, and easy to deploy. These functions are ideal for creating backend services and APIs, and they excel at handling specific tasks triggered by events.


**What are the usecases for serverless functions?**

- REST APIs for your frontend/client apps
- event driven tasks or cron jobs, etc.

Examples :

  - **Uber** uses serverless functions to handle various backend tasks, such as processing ride requests, calculating fares, and sending notifications to drivers and passengers.
  - **Airbnb** leverages serverless functions for managing user authentication, handling reservations, and sending booking confirmation emails.
  - we can build an **image thumbnail generator** that processes uploaded images and generates thumbnails on-the-fly when requested via API endpoints.

**What are Edge Functions?**
Edge Functions are very similar to serverless functions but they run in a browser environment (chrome V8 engine) meaning they support only browser APIs and you cannot use native Node APIs/packages inside it. Edge functions run on content delivery networks (CDNs) at the network edge, close to the user's location. They are designed to manipulate and optimize content delivery. Edge functions enhance performance by reducing latency and can be used for tasks such as caching, content transformation, and security enhancements.


**Where should I use them?**

- to Implement real-time image optimization that resizes images based on the user's device and network conditions before delivering them, ensuring fast loading times.
- to redirect users to a different website, etc.
- rate limiting,
- geolocation based redirects/responses

Examples : 

- **Netflix** uses edge functions to optimize content delivery by dynamically selecting the appropriate bitrate based on the viewer's device and network conditions, ensuring smooth streaming experiences.
- **Pinterest** utilizes edge functions to resize and optimize images on-the-fly, delivering them in the optimal format and size for the user's device.

**What are Cloudflare Workers?**
Cloudflare Workers are a specific implementation of edge functions offered by Cloudflare. They allow you to write JavaScript code that runs at Cloudflare's edge servers. Cloudflare Workers are known for their flexibility, low-latency execution, and can be used for tasks such as request handling, routing, and filtering.


**Where should I use them?**

- Create a custom bot detection and mitigation system that analyzes incoming traffic at the edge, blocking or challenging requests that exhibit suspicious behavior.
- reverse proxy the traffic
- A/B testing, etc

Examples :

- **Discord** employs Cloudflare Workers to enhance the security of their platform by implementing rate limiting, DDoS protection, and IP filtering at the edge, minimizing the impact of malicious traffic.
- **Coinbase** uses Cloudflare Workers to manage traffic and routing, ensuring that users are directed to the appropriate server instances for trading, account management, and data retrieval.

Thank you for reading! Hope you learned something. You can check out my work and connect with me [here](https://neerajmukta.com).
This blog was published to medium, devto, hashnode using [buzpen](https://buzpen.com).

References :

https://www.splunk.com/en_us/blog/learn/serverless-functions.html

https://www.netlify.com/blog/edge-functions-explained/

https://blog.cloudflare.com/introducing-cloudflare-workers/