Green Army Men

AWS Lambda

logo-bbva

¿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.

f(x,y) = x + y   (x,y) -> x + y

x -> (y -> x + y)

¿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)

Google

Microsoft Azure

AWS LAMBDA

Lambda

¿Qué es AWS Lambda?

Es un servicio bajo arquitectura serverless que ejecuta el código como respuesta a eventos y administra automáticamente los recursos necesarios

Características de AWS Lambda

Arquitectura AWS Lambda

  • Lambda

    Amazon CloudFront

    Servicio de entrega de contenidos y transferencia de datos.
  • Lambda

    API Gateway

    "Puerta delantera" para obtener acceso a datos, lógica de negocio o funcionalidades de backend.
  • Lambda

    Api Gateway Cache

    Almacena en caché las respuestas del punto de enlace.
  • Lambda

    Amazon CloudWatch Monitoring

    Servicio de monitorización de los recursos de la nube AWS.
Arquitectura AWS Lambda
  • Lambda

    AWS Lambda Functions

Road to Green Army Men

Migración de cálculos realizados en ENPP

Depliegue de ENPP

  • Lambda

    01. Compilación del war

    Compilación de TODOS los servicios de ENPP

  • Lambda

    02. Despliegue del war a EI y QA

    Implantación en ai003 (2 clones) y sctc6 (1 clon) y reinicios para pruebas en cada subida

  • Lambda

    03. Despliegue en PROD

    • - Implantación del war en los 12 clones
    • - Reinicio de cada una de las instancias

Problemas despliegues ENPP


  • Pérdida del servicio.

    Deriva en reinicios de cada una de las instancias por separado

  • Tiempo.

    Tiempo en despliegues (2h aprox en producción entre implantación y reinicio)

  • Despliegue de todos los servicios a la vez.

    Al no ser servicios atómicos, cada despliegue incluye todo el paquete de servicios de ENPP

Depliegue de AWS Lambda

  • Lambda

    01. Compilación funcion lambda

    Compilación ÚNICAMENTE de la función lambda que se desarrolla

  • Lambda

    02. Despliegue en Beta

    47"

  • Lambda

    03. Despliegue en PROD

    48"

Problemas despliegues AWS Lambda


  • "Mal del dedo rápido"

    Despliegues sin probar

Ejemplos GAM

Estadísticas GAM Allows

gráfica

ENPP Configuración pública

Producción

Beta GAM

GAM Configuración pública

Beta

Beta GAM

Gracias

@devOps

@Nativos

@HTMLiers

@Bea

@Juanillo

@LaRubia

Extra time