There are still servers, but they are not your problem. You don't provision machines, patch operating systems or plan capacity. You deploy a function or use a managed service, and the provider runs it when it is needed. Billing follows use, so an idle service costs little or nothing.
Two kinds of serverless
- Functions as a service (FaaS). You upload a function and choose what triggers it: an HTTP request, a file upload, a queue message or a schedule. Examples are AWS Lambda, Azure Functions and Google Cloud Run functions.
- Serverless managed services. Databases, queues, storage and APIs that scale without servers to manage, such as Amazon DynamoDB, Amazon S3, Amazon SQS and Firebase.
Serverless applications are usually event-driven: one function writes to a queue, which triggers another function, which writes to a database.
Benefits
- No servers to provision, patch or scale
- Pay per request and per unit of compute time, not for idle capacity
- Automatic scaling from zero to large bursts of traffic
- Faster delivery for small, event-driven pieces of work
Trade-offs
- Cold starts. A function that hasn't run recently needs time to start a new environment, which adds latency to the first request.
- Limits. Functions have maximum run times (15 minutes on AWS Lambda), memory caps and concurrency quotas.
- Lock-in. Triggers, permissions and managed services are specific to each provider.
- Harder debugging. A single request may pass through several functions and queues, and there is no server to log into.
- Cost at steady high load can exceed running your own containers or instances.
What to monitor
- Invocations, errors and duration per function
- Cold starts and their effect on latency
- Throttles and concurrent executions against your limits
- Timeouts, which may show up only as a duration equal to the limit
- Queue age and depth between functions
- Traces across functions, queues and the services they call
- Cost per function
More on this: serverless monitoring metrics and serverless monitoring tools.
Serverless monitoring with Atatus
Atatus serverless monitoring supports AWS Lambda (Node.js and Python) and Azure Functions, tracks invocations, duration, errors and cold starts, and follows distributed traces across functions, including SQS and SNS hops. A Lambda extension can also ship function logs. See also AWS monitoring.