Technology Radar TemplateTechnology Radar Template

Serverless

devops
Adopt

The serverless pattern, also referred to as Function as a Service (FaaS), represents a paradigm shift in cloud computing. It enables developers to focus solely on writing code, which is executed in response to events without having to manage the underlying servers or infrastructure. Serverless applications are composed of multiple individual functions or microservices that automatically scale in response to demand.

At AOE, we encourage our development teams to adopt the serverless pattern for its increased scalability, reduced operational overhead, and cost-effectiveness.

Common Tools for Developing and Deploying Serverless Applications

  • AWS SAM (Serverless Application Model): An AWS-native tool that simplifies the deployment of serverless applications on Amazon Web Services (AWS) and supports multiple programming languages.
  • Azure Functions Core Tools: Provide seamless development, debugging, and deployment of serverless functions on Microsoft Azure. These tools integrate with Visual Studio Code.
  • Google Cloud Functions Framework: Offer a local development environment, debugging capabilities, and a framework that integrates with other Google Cloud services. It supports multiple programming languages, including Node.js, Python, Go, and others.
  • OpenFaaS: Allow building and deploying serverless functions using Docker containers on Kubernetes. They provide flexibility in containerization and language choice.

Popular FaaS Providers

  • AWS Lambda: Amazon Web Services' serverless compute service with extensive language support and deep integration with AWS services.
  • Azure Functions: Microsoft Azure's serverless platform supporting multiple programming languages and seamless Azure service integration.
  • Google Cloud Functions: Google Cloud's serverless platform optimized for event-driven applications and simplified serverless development.
  • IBM Cloud Functions: IBM's serverless computing platform based on the open-source Apache OpenWhisk project, offering flexibility and hybrid cloud capabilities.
  • Firebase Functions: Google's serverless solution for mobile and web app development, tightly integrated with Firebase services like the real-time database and hosting.

When to Apply the Serverless Pattern

Embracing the Serverless pattern can significantly enhance development speed, scalability, and cost-effectiveness in modern software architectures. For example:

  • Event-Driven Workloads: Serverless is ideal for applications with sporadic or unpredictable workloads driven by events like user actions, sensor data, or file uploads.
  • Scaling Microservices: Adopt serverless for specific microservices within a larger architecture to simplify deployment and scale.
  • Cost Optimization: Use serverless to optimize costs by paying only for the resources consumed during execution.
  • Prototyping and MVPs: Quickly build and test minimum viable products (MVPs) and prototypes without extensive infrastructure setup.
  • Short-Lived Compute: For tasks that require short bursts of compute power, such as data processing or image resizing.