Arquitectura totalmente escalable con API Serverless
Imagínate si la API de tu backend no tuviera infraestructura. Esta semana Chiyana nos anima a hablar sobre el concepto ‘less’, lo que significa que no hay un servidor permanente, todo es SaaS. Suena un poco sombrío, ¿no? Como resultado, los backends API serverless, sin servidor, podrían ser la próxima piedra angular para implementar una arquitectura cloud totalmente escalable, tal como Headless CMS.
¿Qué es "serverless"?
En los modelos de hosting tradicional o cloud, existen ubicaciones físicas precisas y recurrentes en las que se alojan los datos y se procesan las funciones. Los servicios ‘serverless’, sin servidor, son un concepto estratégico que establece una configuración basada en eventos, sin infraestructura fija. Esto no significa que los servidores no formen parte del servicio, sino que los servidores se crean automáticamente según las necesidades para adaptarse a las demandas de tus servicios.
Para un equipo de desarrollo, lo que realmente significa ‘serverless’ es una disminución de tiempo en gestiones de sistema, ya que no te debes preocupar del mantenimiento tradicional del servidor.
Beneficios de una infraestructura ‘serverless’
- Evita problemas de espacio.
- Los servidores utilizados son totalmente auto-escalados.
- El modelo de pago es por consumo, no por tiempo, así que no pagas por el tiempo de inactividad.
- Disponibilidad garantizada con múltiples localizaciones.
- No requiere configurar ningún balanceador de carga.
API serverless
Para comprender las sutilezas entre los enfoques de un API backend tradicional y una API serverless, hay que entender un concepto básico:
Cada solicitud API corresponde a un servidor propio. Una vez que el servidor procesa la función, se destruye inmediatamente. Sorprendentemente, todo esto ocurre en menos de 30 milisegundos :)
Entonces, ¿cuáles son las ventajas de generar tantos servidores? La razón principal es la escalabilidad. Dado que una sola solicitud equivale a la creación de un solo servidor, esta relación se puede escalar indefinidamente, a diferencia del modelo de API tradicional que puede generar cuellos de botella en caso de mucho tráfico si la API no está balanceada correctamente.
El otro punto destacable es el ahorro de costes. Estos servicios no se pagan por hora de servidor, sino que se paga por milisegundos de procesamiento. Esto significa que solo pagarás por el procesamiento real del servidor. AWS Lambda cobra alrededor de $0,0000002 por solicitud y ofrece 1 millón de solicitudes gratuitas por mes, esto significa que podría ser gratuito para tus pequeños proyectos.
¿Cómo implementar un API serverless?
Deberás empezar con un framework serverless como Zappa, Serverless Framework, Apex, AWS Amplify, entre muchos otros. Los cuatro se basan en AWS Lambda, el servicio de Amazon, aunque también hay otros proveedores de serverless relevantes como Microsoft Azure Functions, Google Cloud Functions o IBM Bluemix OpenWhisk.
¿Cómo desarrollar un API Serverless?
Dentro del entorno ‘serverless’, el elemento de desarrollo principal es que el código se ejecutará solo en respuesta a Eventos o Listener (WebHooks). Un evento puede estar relacionado a acciones de archivos, por ejemplo, un usuario carga una imagen y la aplicación re-dimensiona la imagen pesada a una miniatura. Usando una arquitectura serverless podrías disponer de un servicio de miniaturas ejecutando una respuesta de forma asíncrona y sin bloqueo simplemente con un hook que verifique si existe un nuevo fichero.
Las notificaciones, como recibir un mensaje de correo electrónico o un mensaje en Facebook, también se pueden interpretar como eventos. En lugar de verificar nuevos correos electrónicos, se puede ejecutar una acción específicamente en respuesta a estos.
Una base de datos también se puede utilizar como un desencadenador de eventos. Un cambio en la fila de una tabla podría desencadenar una acción, por ejemplo.
El principal objetivo de estas respuestas a eventos es dedicar los recursos del servidor en respuesta a acciones y no verificando constantemente entre la información en busca de cambios para lanzar acciones.
Ejemplo de API Serverless
Entonces, ¿cómo construir una API segura, sin latencia, económica y sea infinitamente escalable, sin tener que preocuparte por la gestión del servidor? Veamos un ejemplo de implementación serverless en acción:
Kickflip es un SDK que ofrece transmisión de video en tiempo real para aplicaciones móviles. Una "transmisión en tiempo real" es básicamente una combinación de archivos de video (MP4) separados, junto con un archivo que determina el orden de los videos. Dado que un servicio de transmisión de video en tiempo real no necesitaría la información a posteriori. Es una aplicación ideal para un entorno serverless.
Para hacer todo esto, Kickflip usa una combinación de servicios: API Gateway, como Kong para la seguridad y autentificación, una API construida con Lambda, Zappa y Flask, almacenando los archivos en AWS S3 y CloudFront para la entrega de contenido global CDN.
Como ves, con una combinación estratégica de tecnologías, se puede desarrollar un servicio de transmisión de video serverless con unas pocas líneas de código que orquestan los servicios.
Conclusión
Una API Serverless representa un profundo cambio de paradigma en el desarrollo de API’s y los beneficios son inmejorables. Los costes y la infinita escalabilidad hace que la infraestructura serverless, sin servidor, sea una bendición tanto para proyectos pequeños, microservicios, APIs, proyectos IoT o chatbots.
¿Y tú, te animas a desplegar tu API como Serverless? ¿Estás utilizando API serverless en tus proyectos? ¿Qué tal la experiencia?
Photo by Joel Filipe on Unsplash
Referencias: