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
- but unlike “traditional” virtual private cloud (VPC) offerings,
- 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
- little to no management effort for:
- 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
- e.g.,
Examples
- AWS Lambda
- Google Cloud Functions
- Microsoft Azure Functions