Serverless Computing


Serverless is a software architecture that runs functions within virtualized runtime containers in a cloud rather than on dedicated server instances.

  • aka Function as a Service
  • modern design pattern for service delivery
  • provides a scalable, cost-effective, and easy-to-manage infrastructure for event-driven and data-processing tasks

How it Works

  • all the architecture is hosted within a cloud
    • but unlike “traditional” virtual private cloud (VPC) offerings,
      • services such as authentication, web applications, and communications aren’t developed and managed as applications running on VM instances within the cloud
      • Instead, the applications are developed as functions and microservices
        • each interacting with other functions to facilitate client requests
      • When the client requires some operation to be processed, the cloud spins up a container to run the code, performs the processing, and then destroys the container
  • Billing is based on execution time rather than hourly charges
  • eliminate the need to manage physical or virtual server instances
    •  little to no management effort for:
      • software and patches
      • administration privileges
      • or file system security monitoring
    • allow focus on developing and deploying applications
  • no requirement to provision multiple servers for redundancy or load balancing
    • little emphasis on the provision of a corporate network
    • all of the processing is taking place within the cloud
    • service provider manages this underlying architecture
  • principal network security job is to ensure that the clients accessing the services have not been compromised

Risks

  • new technology, so use case and best practices still evolving
  • critical and unavoidable dependency on the service provider
    • limited options for disaster recovery

Event-driven Orchestration

  • depends heavily on the concept of event-driven orchestration to facilitate operations
    • e.g.,
      • multiple services are triggered when a client connects to an application
      • application needs to:
        • authenticate both the user and device
        • identify the location of the device and its address properties
        • create a session
        • load authorizations for the action
        • use application logic to process the action
        • read or commit information from a database
        • and write a log of the transaction
      • design logic differs from applications written in a “monolithic” server-based environment

Examples

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions