Evaluación del comportamiento de los lenguajes de programación en una plataforma serverless. Amazon Web Services como caso de estudio
Resumen
Serverless Computing es una arquitectura o modelo de ejecución en el cloud, alternativo al modelo
tradicional. Ofrece numerosas ventajas sobre una arquitectura monolítica, como aportar agilidad,
innovación, un mejor escalado automático, flexibilidad en el desarrollo y una mejor evaluación y
control de los costos. Surgió como una evolución de microservicios corriendo en contenedores e
implementando funciones, por lo cual a veces se lo denomina función como servicio (FaaS) (CNCF,
2018).
En el presente trabajo se evalúa el comportamiento de distintos lenguajes de programación, bajo un
enfoque serverless, en la plataforma Amazon Web Services. Los lenguajes de programación a
considerar son Python, Java y JavaScript, los cuales se encuentran entre los más populares. Debido
a que la comparación de los lenguajes se puede llevar a cabo en diferentes aspectos o tomando
diferentes tipos de métricas, se estimó oportuno realizar las pruebas mediante operaciones CRUD
(Create, Read, Update, Delete).
Las operaciones CRUD son base para muchos software de aplicación empresarial, tal como
sistemas de ventas, de recepción de pedidos, software para hoteles, colegios, de seguridad, entre
otros. Mediante estas operaciones se puede agregar un cliente (alumno, paciente, producto, etc.),
leer datos (leer la tabla completa, una o varias columnas), modificarlos o eliminarlos.
AWS está en permanente crecimiento y facilita el trabajo a muchos desarrolladores. Los
proveedores de la nube ofrecen integrar todas las funciones necesarias requeridas para desarrollar
un sistema, además de tener la capacidad de procesar enormes volúmenes de datos y dispositivos.
Los servicios de AWS a emplear son: Lambda, DynamoDB, CloudWatch, CloudWatch Metric,
Logs y Log Insight. Para seleccionar y evaluar los lenguajes se implementan test con la herramienta
Artillery.
La adopción de plataformas de función como servicio (FaaS) requiere abordar una serie de
interrogantes como: ¿El cold start o arranque en frío, es equivalente en los distintos lenguajes? ¿El
impacto del mismo es relevante cuando la cantidad de solicitudes es elevada? ¿El tamaño de
memoria asignada a una función es relevante? ¿Qué lenguaje tiene mejor escalabilidad? ¿Cuál es el
lenguaje o combinación de lenguajes más conveniente para operaciones CRUD?
Es importante mencionar que el uso del servicio Lambda se debe a que éste permite desarrollar y
gestionar funciones independientes. Estas funciones se definen como pequeñas unidades de código
que se ejecutan en respuesta a un evento.
Colecciones
- Informática [5]
El ítem tiene asociados los siguientes ficheros de licencia: