# Serverless

> Código que corre solo cuando alguien lo llama; el servidor no lo ves nunca.

- Nivel: Intermedio
- Temas: Cloud
- URL: https://tidbit.legios.com.ar/es/serverless/
- En inglés: [Serverless](https://tidbit.legios.com.ar/serverless/)

**Serverless** es una forma de correr código en la nube donde subís una función y el proveedor la ejecuta solo cuando algo la dispara: un pedido HTTP, un archivo nuevo en Amazon S3, un reloj. Servidores hay, claro, pero nunca los ves, ni los dimensionás, ni los actualizás. AWS Lambda es el ejemplo más conocido, y la palabra también describe servicios como Amazon DynamoDB que escalan solos sin máquinas que administrar.

Se cobra por ejecución. Si tu función corre 10 veces por día durante 200 milisegundos, pagás 2 segundos de cómputo. Si un posteo viral manda un millón de pedidos, el proveedor levanta miles de copias en paralelo y cobra esas. Tráfico cero cuesta cero, o casi.

Le queda bien a cargas chicas o con picos: generar miniaturas, recibir webhooks, reportes nocturnos, pegamento entre servicios. Le queda peor a trabajos largos, porque una función suele tener un límite de tiempo (15 minutos en Lambda), y la primera llamada después de un rato quieta puede ser lenta mientras el proveedor la levanta (el "cold start").

## Una analogía

Un taxi en vez de auto propio. Con un servidor pagás el auto aunque esté estacionado; con serverless pagás por viaje, y del mantenimiento se preocupa otro.

## Para quedarse

- Pagás por invocación y por milisegundo, no por hora de máquina prendida.
- Escala de cero a miles de copias sin configurar nada.
- Las funciones son cortas y sin estado: lo que importa se guarda en una base de datos o en almacenamiento.
- Los cold starts y la dependencia del proveedor son las quejas de siempre.

## Para seguir leyendo

- [Serverless en AWS](https://aws.amazon.com/es/serverless/)
- [¿Qué es AWS Lambda? (documentación oficial)](https://docs.aws.amazon.com/es_es/lambda/latest/dg/welcome.html)
- [Serverless computing (Wikipedia, en inglés)](https://en.wikipedia.org/wiki/Serverless_computing)

## Términos relacionados

- [Computación en la nube](https://tidbit.legios.com.ar/es/cloud-computing/): Alquilar computadoras por internet en vez de comprar las tuyas.
- [HTTP](https://tidbit.legios.com.ar/es/http/): El idioma de pedido y respuesta que hablan los navegadores y los sitios web.
- [Amazon S3](https://tidbit.legios.com.ar/es/amazon-s3/): Un cajón gigante en internet para guardar archivos, alquilado por gigabyte.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [AWS Lambda](https://tidbit.legios.com.ar/es/aws-lambda/): Correr un pedazo de código solo cuando pasa algo, sin ningún servidor que administrar.
- [Amazon DynamoDB](https://tidbit.legios.com.ar/es/amazon-dynamodb/): Una base de datos clave-valor que responde en milisegundos por más que crezca la tabla.
- [Webhook](https://tidbit.legios.com.ar/es/webhook/): Una forma de que un servicio llame a tu app en el momento en que pasa algo.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
