APIs Arquitectura de Software Innovación Technology

Durante los últimos años se está intentando separar cada vez más la infraestructura del código. En este aspecto las soluciones serverless cada año van ganando más popularidad.

Introducción a AWS Serverless

Las principales ventajas que se obtienen al hacer uso de esta arquitectura son:

  • No hay que gestionar la infraestructura sobre la que se ejecuta el código. No hace falta configurar servidores, contenedores, etc.

  • El escalado es automático y solo se paga por lo que se usa.

  • Automáticamente existe una alta disponibilidad.

Como principal desventaja cabe destacar que actualmente la tecnología serverless está altamente relacionada con el proveedor que se desea utilizar, debido a este motivo una vez desarrollada una aplicación en un proveedor determinado si queremos migrarla a otro deberemos de realizar cambios.

Serverless en AWS

AWS nos permite desarrollar aplicaciones serverless gracias a su servicio Lambda.
Este está altamente integrado con la mayoría de los eventos que gestiona la plataforma.

Los principales componentes a tener en cuenta al trabajar con Lambda son:

– Api Gateway: Permite publicar APIs REST y enlazar los endpoints con las funciones Lambda. Entre las funcionalidades que ofrece cabe destacar que soporta multi-tenancy.

– Step Functions: Permite definir flujos de trabajo complejos a partir de definir cómo deben de interactuar diferentes funciones lambda. Además ofrecen otras funcionalidades avanzadas como los callback (esperar una respuesta externa a una llamada) o anidar flujos.

Arquitectura

La arquitectura de las funciones Lambda es bastante simple. Por un lado estas están suscritas a un conjunto de eventos concretos que son generados por alguno de los servicios de AWS. Estás pueden realizar acciones muy diversas dependiendo de los datos de cada evento.

Por ejemplo podemos procesar los archivos que se vayan guardando en un S3 y dependiendo de sus metadatos almacenar cierta información en DynamoDB.

Para realizar el siguiente tutorial vamos a necesitar tener una cuenta en AWS.

Demo

Crear una función Lambda es muy sencillo. Simplemente tenemos que acceder al servicio Lambda desde nuestra consola de AWS. Cuando vayamos a crear una función se nos preguntará qué procedimiento queremos utilizar para crearla, por motivos de simplicidad elegiremos la opción de “Crear desde cero”.

 A continuación debemos de indicar el nombre que identificará nuestra función y en qué lenguaje queremos implementarla. En este caso hemos elegido Node ya que es de los más sencillos para hacer pruebas.

Una vez que ya esté creada, en su panel principal se mostrará un esquema con el diseño de nuestra función Lambda. Este mostrará todos los servicios de AWS que se utilizan como input o output en nuestra función. Dado que acabamos de crear la función no se ha integrado con ningún otro servicio.
Si hacemos scroll hacia abajo podemos ver un editor embebido. Este nos permite editar el código de nuestra función. Por el momento vamos a mantener ese código.

exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify(‘Hello from Lambda!’),
    };
    return response;
};

Podemos probar las funciones directamente desde la interfaz de usuario. Para ello debemos clicar en el botón de probar función. Dado que las funciones consumen eventos tenemos que elegir qué evento de prueba queremos utilizar. Como hemos creado la función aún no tenemos ningún evento de prueba definido por lo que definimos uno. Un evento de prueba simplemente es un JSON con la estructura que recibirá nuestra función.

Una vez definido el evento y lanzada la prueba podemos ver en el apartado en verde el resultado de esta. Donde podemos validar que la función ha realizado lo que esperábamos. Las funciones Lambda soportan versiones y etiquetas. Cuando se realiza una versión, el código de esa versión ya no es modificable. Un alias se puede entender como si fuera un puntero a una o varias versiones.

Conclusiones

Hemos podido ver que tanto Lambda como API Gateway son dos servicios muy fáciles de utilizar. Las soluciones serverless pueden ofrecernos grandes ventajas a la hora de implementar, escalar y reducir los costes de nuestras aplicaciones, pero a cambio cedemos la parte de independencia de nuestro código.

Cabe destacar que los mostrado anteriormente no es production ready. En un proyecto real tendríamos las funciones en uno o varios repositorios además de todos los elementos necesarios para poder realizar testing en local. Finalmente tanto la publicación de las funciones y actualización de las APIs se realizarán de forma automática mediante herramientas de integración continua.

// Si quieres saber más sobre AWS Serverless

¡Habla con nuestros expertos!

Author

Sandra Ciruelos

Leave a comment

Tu dirección de correo electrónico no será publicada.