Hablemos sobre una tecnología que está en auge, dentro de las distintas cloud: Serverless, tecnología que permite crear servicios dentro del cloud, pero que no poseen servidor. Existen múltiples tecnologías Serverless dentro de Amazon, pero nos vamos a fijar en una de ellas: AWS Lambda.
Permite la ejecución de código sin necesidad de declarar nada más que el lenguaje utilizado por la función y los permisos asignados.
Entre ellos permite trabajar con:
- .NET Core 2.1 (C# y PowerShell)
- Go 1.x
- Java 8
- Node.js 10.x
- Node.js 8.10
- Python 3.7
- Python 3.6
- Python 2.7
- Ruby 2.5
Pero, ¿cuál es la ventaja real?
Su escalabilidad. Ya no estamos iniciando servidores EC2 (Elastic Cloud Compute) para levantar nuestros servicios, y pagamos por que estén levantados, aunque no se estén consumiendo. Con los servicios AWS Lambda solo se paga por tiempo de proceso, por cómputo. Luego ciertos servicios son susceptibles de ser generados como AWS Lambda, ahorrando costes. No solo eso, sino que si comparamos la escalabilidad de cada servicio, puede que no seamos capaces de controlar esa escalabilidad por medio de instancias EC2, al menos con la velocidad que deseamos.
AWS Lambda permite definir una función ajustando para esa función los parámetros de memoria asignados “por cada petición”, es decir, consumo por ejecución en AWS Lambda. ¡Adiós a los desbordamientos de memoria!
Y, ¿cuántos clientes vamos a tener por defecto?
¿10? ¿100 al mismo tiempo? AWS Lambda permite ejecutar concurrentemente peticiones y reservar con un máximo de hasta 1.000 ejecuciones reservadas simultáneas.
¿Cuáles son sus objetivos? ¿Qué podemos ejecutar ahí dentro?
Pues son preguntas muy interesantes.
Podemos usarlo para servicios internos, como consumidores orientados a eventos dentro de AWS. Por ejemplo, si un usuario almacena información en DynamoDB (la base de datos NoSQL basada en documentos de AWS) o guarda información en un S3 (el almacenamiento infinito y barato más famoso de AWS), produce un evento que puede ser capturado por la función Lambda. Esta función recibe la información y puede enviar información a otros servicios de Amazon, lo que permite realizar flujos complejos y escalables.
Otra opción es que consuma y produzca mensajes en los servicios de mensajería de AWS como SNS (Simple Notification Service) o SQS (Simple Queue Service), permitiendo su comunicación sencilla entre clientes externos y servicios internos de AWS.
Pero una de las soluciones más interesantes, es consumir peticiones desde otro componente de AWS llamado API Gateway, que nos permite crear servicios web REST con sencillez, gestionarlos en un solo punto, y mandar su petición a AWS Lambda, devolviendo una respuesta REST esperada. ¡Mis servicios ya no cuestan si no se usan!
En resumen, Amazon Web Services es una herramienta muy poderosa que puede, sin duda, ahorrar costes en nuestras soluciones cloud. Si ya lo dice un refrán: «más vale adaptarse a donde vamos, que imitar lo que tenemos».