Serverless

Overview

Despite its name, "serverless" computing still relies on servers. The concept is designed to simplify the deployment process for developers. Traditionally, deploying a web application requires setting up various resources like networks, virtual machines, operating systems, and load balancers. Serverless computing aims to take these complex tasks off the developers' hands, allowing them to focus solely on providing the application code.

Key Aspects

Cloud Provider's Role

Cloud providers manage the infrastructure, letting developers deploy software just by uploading code (like .zip files) or providing a container image. This abstraction means developers don't have to worry about the environment their application runs in.

Focus on On-Demand Provisioning

Serverless computing emphasizes on-demand provisioning and scaling. It incorporates autoscaling based on events, like incoming requests, enabling more precise billing models, often based on the actual events instead of time.

Complementing Existing Systems

Serverless, or Function as a Service (FaaS), doesn't necessarily replace container orchestration platforms or traditional virtual machines. Instead, it's frequently used alongside them for rapid deployment, testing, and sandbox environments.

Extension with Kubernetes

Technologies like Knative, built on Kubernetes, extend existing platforms with serverless capabilities. This is especially useful for private clouds and on-premise environments, though it may increase the complexity of operating a cloud platform.

Challenges and Solutions

Standardization Issues

Initially, serverless technology faced challenges with standardization, as many cloud providers had proprietary solutions. This made it difficult to switch between platforms.

CloudEvents Project

https://cloudevents.io/

To address standardization, the CloudEvents project was established. It provides a specification for structuring event data, crucial for scaling serverless workloads or triggering functions. With wide adoption, it simplifies the use of serverless and event-driven architectures across various platforms. CloudEvents is under the Cloud Native Computing Foundation and is gaining significant industry interest.

Application Design

Applications for serverless platforms need to adhere closely to cloud-native architecture principles. They benefit most when designed as small, stateless entities, ideal for tasks like event/data streams, scheduled tasks, business logic, or batch processing.

Last updated