Serverless Computing

Serverless Computing

Serverless Introduction In the rapidly evolving landscape of modern application development, serverless computing stands out as a revolutionary paradigm shift. It represents a departure from traditional server-based models, offering a more efficient and scalable approach to building and deploying applications.

A 2019 paper written by a group at UC Berkeley, Cloud Computing Simplified: A Berkely view of serverless computing their definition is expanded

“While cloud functions—packaged as FaaS (Function as a Service) offerings—represent the core of serverless computing, cloud platforms also provide specialized serverless frameworks that cater to specific application requirements as BaaS (Backend as a Service) offerings. Put simply, serverless computing = FaaS + BaaS.”

Backend as a Service refers to managed services such as databases (Amazon DynamoDB) and authentication services (Auth0, Amazon Cognito, and Firebase Auth), among others Functions as a service allow developers to build, compute, run, and manage application packages as functions without having to maintain their infrastructure. It's an event-driven execution model that runs in stateless containers, and those functions manage server-side logic and state through services from a FaaS provider. Serverless computing describes how to most efficiently deliver business value Instead of coding support infrastructure for your business logic, Serverless adoption allows you to leverage on FaaS, managed services, and smart abstraction while only building custom solutions if an existing service doesn't yet exist Characteristics of serverless

  • Decreased Operational responsibilities

  • Serverless computing shifts the burden of infrastructure management, such as server provisioning, scaling, and maintenance, away from developers. This allows them to focus solely on writing code and building applications.

  • Heavy usage of managed services

  • Serverless applications leverage managed services provided by cloud providers. This includes services like databases, authentication, storage, and more. These services handle the operational aspects, such as maintenance, scalability, and security, reducing the workload on developers

Benefits of serverless

  • Scalability

  • Serverless computing liberates developers from the concern of handling sudden spikes in user activity. Cloud providers automatically handle the scaling of code, ensuring it runs efficiently in response to each interaction. Serverless functions allow for parallel processing of triggers, effectively managing increased workloads. By eliminating the need to manage server and database scaling, serverless computing provides a significant advantage. This allows developers to focus on writing code and building features without the added complexity of infrastructure management, ultimately streamlining the development process.

  • Cost

  • With the traditional approach, you often paid for resources, whether they were utilized or not. This meant that regardless of whether you reached that point, you needed to prepare for the biggest workload you anticipated seeing to ensure that your application would scale. This approach meant you were paying for unused resources for the majority of your application's lifespan.

  • With services, you pay for what you use. For example, with Faas, you are billed based on the number of requests for your functions, the time it takes for your function code to execute, and the reserved memory for each function. This allows you to build features with no upfront infrastructure cost

  • Developer velocity

  • The fewer features to build, the greater the developer's velocity. The ability to spin up the types of features that are typical for most applications allows you to quickly focus on writing the core functionality and business logic for the features that you want to deliver

  • Experimentation

  • Serverless environments provide an ideal platform for experimentation and rapid prototyping. Developers can quickly deploy and test new features or ideas without the overhead of infrastructure setup, with less risk.

  • Security and stability

  • The services you are subscribing to are the core competency of the service provider; by maintaining them, you are getting something more polished and secure than you could build.

  • Also, these service providers will strive for the least downtime possible. They are taking on the burden of not only building but also maintaining those services and ensuring they are stable.

  • less code

  • Code is a liability; the code has no value; rather, what has value are the features it delivers. You are reducing overall complexity when you find ways to deliver these features while simultaneously limiting the amount of code you need to maintain and even doing away with the code completely.

  • Less code, fewer bugs, easier onboarding for new engineers, and overall less cognitive load for those maintaining and adding new features

Disadvantages of serverless

  • Latency: Serverless platforms can experience delays, especially when handling a function for the first time (known as a cold start). This latency may impact real-time or time-sensitive applications.

  • Inefficiency for Long-Running Apps: Running long-lasting tasks in a serverless environment may incur higher costs compared to running the same workload on a virtual machine or dedicated server.

  • Vendor Lock-In: Moving from one cloud provider to another can be challenging due to variations in how serverless services are delivered across different vendors.

  • Debugging Complexity: Debugging serverless functions can be more challenging. Each time a serverless instance starts, it creates a new version of itself, making it harder to accumulate the necessary data for effective debugging and troubleshooting.

Serverless Frameworks

A serverless framework is a development tool designed to assist in building serverless applications. This comprehensive toolset is valuable for efficient building, deploying, and managing serverless applications, making it a crucial resource for developers in the serverless computing space. Some of the popular serverless frameworks include:

  1. Serverless

    It is the most popular framework out there, and one of the major facts is that it tends to be platform-neutral or cloud-neutral in a manner of speaking, so it works with AWS, Google Cloud, Microsoft Azure, and many others. So it is not a vendor lock-in or very tied to AWS itself. Serverless is a general-purpose serverless framework, so whether you are building web applications, REST APIs, or IoT applications using serverless technologies, it should allow you to walk seamlessly.

  2. AWS Serverless Application Model

    The AWS Serverless Application Model (SAM) was a framework designed to make it easier for developers to build, deploy, and manage serverless applications. It provides a simplified way of building serverless applications, writing functions, APIs, and other AWS resources using AWS CloudFormation templates. It also includes a CLI tool for building and deploying applications, as well as testing and debugging capabilities.

  3. AWS Amplify framework

    Allows users to build extensible, full-stack web and mobile apps faster. It's a combination of the CLI, client library, toolchain, and web hosting platform.

    Amplify provides an easy entry point to the cloud by doing away with the terminology and acronyms that may be unfamiliar to newcomers to AWS and instead a category-name approach for referring to services

  4. Zappa

    It is a very popular framework. It can be used for various purposes. It tends to be very popular for web-based applications or even REST API-like solutions, and one of the key strengths is to focus on solutions like Python if you have a WSGI( web server gateway interface) based app like Flask, Deploy Django and you want to port that to serverless capabilities like AWS lambda and AWS API gateway Zappa, which would come handy

Other serverless frameworks include AWS Chalice, Claudia.js, Architect (AWS, Node), Lambda Framework, and Sigma. When selecting a framework, consider cloud provider compatibility, programming language support, and community adoption. Serverless computing use cases

  • Event-triggered computing

  • Internet of Things (IoT) data processing

  • High-volume background processes

  • Building RESTful APIs

  • Continuous integration/continuous delivery (CI/CD)

  • Writing multilanguage apps

Serverless computing vendors and languages

The following are some of the major serverless computing vendors:

  • Google Cloud Functions

    It was released by Google in 2017 and has Node.js, JavaScript, Python, and Go support.

  • IBM Cloud Functions

    It supports JavaScript (Node.js), Swift, Cloudflare Workers, and any language that can be compiled into WebAssembly.

  • Amazon Web Services (AWS) Lambda

    It was released in 2014 and can be written in Java, Go, PowerShell, Node.js, JavaScript, C#, Python, and Ruby.

  • Microsoft Azure Functions

    Microsoft rolled out Azure Functions in 2016. It provides support for Bash, Batch, C#, F#, Java, JavaScript (Node.js), PHP, PowerShell, Python, and TypeScript.

  • Cloudflare Workers.

    Released in 2018, it supports JavaScript and WebAssembly-compatible languages.

  • Netlify Functions

    Rolled out in 2018. Functions can be written in JavaScript, TypeScript, and Go.

  • Vercel Serverless Functions

    It simplifies the serverless experience for web app developers. It supports Node.js, Go, Python, and Ruby.

  • Oracle Functions

    Released in 2019, Oracle Functions supports Java, Python, Node.js, Go, Ruby, and C#; developers can also bring their own Dockerfiles and GraalVM.

Conclusion

The benefits of Serverless computing, such as unconditional development and deployment and built-in scalability, among others, are playing an important role in supporting the rapid adoption of Serverless computing, thereby fueling the growth of the market