Serverless en AWS y Firebase

Ismael Liberal
Biko2
Published in
4 min readAug 17, 2017

Mi objetivo es compartir la base que he seguido yo para comprender y probar serverless en AWS y Firebase.

Qué es serverless

Últimamente me ha picado el gusanillo del serverless, cada vez picaba más fuerte, y he tenido la suerte de poder investigarlo con más calma estos días.

Empecemos por qué es serverless, no os voy a engañar, a mí se me hace difícil definirlo, pero siempre puedo buscar alguien que ya lo haya hecho antes =):

Serverless es un tipo de arquitectura donde los servidores (físicos o en la nube) dejan de existir para el desarrollador y en cambio el código corre en “ambientes de ejecución” que administran proveedores como Amazon, Google, IBM, etc.

Si queréis una definición algo más extensa, con FaaS, BaaS y más palabros y tecnicismos siempre podéis recurrir a un post en la web de nuestro gran amigo Martin Fowler:

Una vez que tenemos más claro el concepto, lo que yo entiendo es que tenemos un nuevo paradigma de programación, una nueva forma de programar, lo que haces es programar una serie de minifunciones (lambda) que se ejecutan cuando se activan distintos disparadores en los servicios de alojamientos/gateway/ basedatos/storage multimedia.

Ej: Queremos añadir una nueva nota a nuestra aplicación de notas online, cuando le damos al botón de guardar, esto lanza un petición a https://loquesea.com/guardar . Cuando accedemos a esa url, nosotros le hemos dicho al servicio de gateway que nos lance la lambda de guardar, que va coger la información de la petición y la va meter en nuestra BD.

AWS + lambda

El ejemplo anterior en el caso de AWS se hace con la ayuda del servicio API gateway + lambda. Lo que haces es decirle que cada vez que llegue una petición de un tipo al gateway, te dispare la lambda que tu tengas asociada, y haga lo que tú quieres con las información que le pases por la petición

Ejemplo de API gateway + lambda

Lo bueno de esto es que se está alojando en los servidores de Amazon, y al ser una lambda esta va escalar y se le van a asignar los recursos que necesite dependiendo del número de peticiones que tenga etc, sin que el desarrollador tenga que preocuparse de tener un servidor preparado para los picos de visitas.

Una vez que tenemos esto algo más claro, lo que yo quería era ya algo de salseo, divagando por Internet encontré este mega tutorial, en el que te enseña cómo crear un backend serverless + frontend react y alojar todo esto en AWS con sus servicios correspondientes.

Es bastante extenso, pero está todo muy bien contado, para mí es un 10!

Firebase + functions!

Hablando con @patxangas me comentó que Firebase acababa de añadir una funcionalidad nueva, las functions.

Esta en versión beta por el momento.

Las functions son básicamente lo mismo que las lambdas, se disparan cuando haces cosas en alguno de los servicios de Firebase.

Habiendo visto algo AWS he decidido probar Firebase para poder comparar.

Los tutoriales que he seguido:

Rápido, sencillo y para toda la familia!

AWS vs Firebase

Para terminar, lo que intenté es hacer la misma webapp tanto en Firebase como en AWS, no pasó mucho tiempo hasta que me di cuenta que con Firebase puedes montar una app serverless sin la necesidad de functions ya que tienes la librería que te permite guardar directamente en la base de datos de Firebase, sin tener que hacer ninguna configuración extra.

La duda que tengo es si será igual de escalable que una lambda de AWS =/

Lo que tengo claro es que si quieres hacer algo sencillo, tienes Firebase, vas a tener que invertir ¼ del tiempo que invertirias en configurar todo en AWS.

Lo del tiempo de configuración es sin exagerar, puede ser algo bastante tedioso si no sabes lo que estás haciendo.

Por otro lado, tenemos que tener en cuenta la escalabilidad que te da AWS (DynamoDB, lambda) además del resto de servicios…

Servicios de AWS

Con lo poco que he probado de cada uno, yo lo definiría como un fácil y simple vs complejo y flexible.

--

--