Green Army Men
AWS Lambda
¿Qué es el Cálculo Lambda?
λx. x
Es un sistema formal diseñado para la investigación de la definición de función, entendiendo la definición de funciones como la forma de expresar una función matemática. Fue introducido por Alonzo Church en los años 30. Es considerado el lenguaje universal de programación más pequeño.
¿Qué es una arquitectura Serverless?
Definición
La idea bajo una Arquitectura Serverless es que tu puedas crear aplicaciones y te olvides de la administración de la infraestructura que va a soportar esa aplicación. Normalmente se suelen estructurar de la misma forma que los microservicios, de forma que el desarrollador va creando pequeños modulos. Pero el uso de este tipo de arquitecturas tiene una serie de características que se deben tener en cuenta.
-
Coste variable según uso
Ya que no se paga por la infraestuctura, la forma de pago de estos servicios depende unicamente de la cantidad de uso de estos. En el caso de servicios de alojamiento de archivos, se pagará por la cantidad de accesos y el peso de tales archivos; en servicios de computación, se cobrara en función del tiempo de ejecución.
-
El código a ejecutar debe ser stateless
Debido a que las instancias donde se va a ejecutar el código mueren tras cada ejecución, no se puede asegurar que si se guarda algún tipo de estado este se mantenga o exista para la siguiente ejecución. Por ello, si se necesita guardar algún tipo de estado se deberá usar un servicio de Storage.
-
La latencia depende del uso del servicio
Si el servicio tiene una gran tasa de uso, la mayoría de proveedores tienen un sistema de "warm-start". Esto significa que se reusa el entorno de la anterior ejecución en vez de tener que levantar un nuevo entorno.
Tipos de Serverless
-
Backend as a Service (BaaS)
Firebase
-
Function as a Service
AWS Lambda, Cloud Functions, Azure Functions
Inconvenientes
-
Perdida de Optimizaciones
Como los entornos donde se ejecuta el código dependen de la configuración del proveedor, en la mayoria de casos no puedes manipular el entorno para mejorar la performance de tu aplicación
-
Arquitectura Compleja
Al estar basado en una arquitectura de microservicios donde se desarrollan pequeños modulos, aumenta en gran medida la complejidad de la arquitectura necesaria para la comunicación, monitoreo y testing de la aplicación
-
Dependencia de Terceros
Debido a que toda los servicios estan de mano del proveedor, dependemos totalmente de sus herramientas a la hora de desarrollar y crear nuestra arquitectura
Ventajas
-
Escalabilidad sencilla
El proveedor es el encargado total de manejar la forma de escalar la aplicación
-
Focus en la aplicación
Una vez que te quitas de tener que pensar en la infraestructura que soporte el código, puedes centrarte únicamente en el desarrollo
-
Eficiencia de Costes
Como sólo se paga debido al uso de los servicios te quitas los costes de manutención de la infraestructura
Proveedores
Amazon Web Services (AWS)
-
Computación
Lambda
-
Proxy
Api Gateway
-
Almacenamiento
S3
-
Base de Datos
DynamoDB
-
Mensajeria
SNS
-
Organización
Step Functions
-
Streams
Kinesis
-
Análisis
Athena
-
Computación
Cloud Functions
-
Proxy
Cloud Endpoints
-
Almacenamiento
Cloud Storage
-
Base de Datos
Cloud Datastore
-
Mensajeria
Cloud Pub/Sub
-
Streams
Cloud Dataflow
-
Análisis
Cloud Datalab
Microsoft Azure
-
Computación
Azure Functions
-
Proxy
Api Management
-
Almacenamiento
Azure Storage
-
Base de Datos
Azure Cosmos DB
-
Mensajeria
Service Bus
-
Organización
Logic Apps
-
Streams
Event Hub
-
Análisis
Azure Stream Analytcs