Serverless Function - Should You Use Them?
Tags: webdev, javascript, programming, beginners
Published: 2024-03-28 23:00:00

In this ever-changing world of cloud computing, **"serverless functions"** has become a widely discussed term. This new way of developing and deploying applications has revolutionized the process, offering developers a more efficient and streamlined approach. In this article you are going to learn what serverless functions are, how they operate, its benefits and drawbacks, popular use cases, types of serverless functions, and the leading cloud platform providers in this space. Let’s dive right in 😉

## What are Serverless Functions?

Serverless functions at it’s core are basically functions that run on the cloud. It's a cloud-based development model where you, the developer, focus on writing code (functions) without worrying about server management. The cloud provider handles everything behind the scenes: provisioning servers, scaling resources, and maintaining infrastructure. You simply deploy your code, and the provider takes care of the rest.

There's a quote that often comes to mind from my computer engineering teacher: "Every wireless connection must have a wired backbone." This is particularly relevant in the context of serverless functions because although they operate without explicit server management, there's still a server infrastructure working behind the scenes.

## How do Serverless Functions work?

Serverless functions are triggered by events. These events can be anything from an HTTP request to a change in a database. When an event occurs, the cloud provider wakes up your function, executes your code, and then puts your function back to sleep once finished. This event-driven approach ensures that resources are only used when needed, making it highly cost-effective.

## **Why Go Serverless?**

Here are some reasons you should consider using serverless 👇🏽

- **Faster Development:** No server management translates to quicker development cycles. You can focus on writing code and deploying functions without getting bogged down in infrastructure concerns.
  _💡 You do have to set up your environment variables yourself though._
- **Scalability:** Serverless applications scale automatically based on demand. You don't need to worry about provisioning extra servers during peak traffic or dealing with underutilized resources during downtime.
- **Cost-Effectiveness:** You only pay for the resources you use. Since serverless functions are event-driven, you're not charged for idle time which is really nice.

## **Types of Serverless Functions**

There are two main types of serverless functions:

- **HTTP-triggered functions:** Invoked by HTTP requests, making them ideal for building APIs and web backends.
- **Event-triggered functions:** Respond to various events like changes in databases, file uploads, or messages in queues.

## **Pros and Cons of Serverless**

Like any technology, serverless has its advantages and disadvantages 👇🏽

**Pros:**

- Faster development and deployment
- Automatic scaling
- Cost-effective
- Reduced operational overhead

**Cons:**

- Vendor lock-in (code might be specific to a cloud provider's platform)
- Limited control over underlying infrastructure
- Cold start times (functions may experience delays in execution, especially the first time after deployment) - This is a common frustration associated with serverless computing.

## **Cloud Providers for Serverless**

Most major cloud providers offer serverless platforms, including:

- AWS Lambda by Amazon Web Service
- Azure Functions by Microsoft Azure
- Google Cloud Functions by Google cloud

AWS Lambda is often considered the most mature and feature-rich serverless computing platform. It has excellent integration with other AWS services, a wide range of runtimes and programming language support, and robust tooling and monitoring capabilities. If your application is heavily invested in the AWS ecosystem or requires advanced features and integrations, AWS Lambda is a solid choice.

💡 _Netlify and Vercel are built on top of AWS Lambda and they both use it for their serverless functions offering._

### **Personal Opinion**

I recommend experimenting with a traditional server setup before delving into serverless computing. This way, you can better understand the distinctions between the two approaches.

## Conclusion

Thank you for reaching the conclusion of the article! 🎉 🎉 I hope you gained valuable insights. Feel free to share in the comments whether you're currently utilizing serverless functions for your applications and any hurdles you encounter. Looking forward to connecting with you again next week. Have a fantastic weekend! 😉