Serverless Computing can be seen as natural extension of Microservices Architecture that brought us smaller units (smaller footprint) and it provides new level of Tenant consumption to resource consumption (and consts) alignment .
- Function are the unit of deployment and scaling.
- No machines, VMs, or containers visible in the programming model.
- Permanent storage lives elsewhere (SLE).
- Scales per request; Users cannot over- or under-provision capacity.
- Never pay for idle (no cold servers/containers or their costs).
- Implicitly fault-tolerant because functions can run anywhere.
- Bring Your Own Code (BYOC).
- Metrics and logging are a universal right.
As i learned from reddit comments, something here needs explanation.
BYOC meant literally. Any code you want run, with libraries you want. That's what we already learned from containers(Docker)
SLE means that serverless function can't and should not relay on internal state of the serverless program (function) it also can't just store something on disk. Because FaaS can't guarantee that it run the function on the same machine next time. So state should not be part of it. Application's (persistent) state should be managed by other environments ("elsewhere") e.g. Redis cluster, DB, AWS S3.