Estos últimos meses he estado utilizando una arquitectura serverless para gestionar múltiples servicios en la nube.
En lugar de crear un proyecto en Node.js (por ejemplo) y tener que resolver los problemas de express, cors, autenticación, despliegues, etc; reemplacé todo esto por funciones, te cuento un poco sobre estos conceptos.
Estamos viviendo en un mundo dominado por la nube y la demanda de soluciones rápidas y escalables y esta metodología, que se aleja del manejo tradicional de servidores y recursos, ofrece una manera más ágil y eficiente de construir aplicaciones.
Las arquitecturas serverless han sido la evolución natural en respuesta a las necesidades de un mercado que busca constantemente optimizar recursos, reducir costos y acelerar los tiempos de desarrollo.
Pero, ¿qué implica realmente este enfoque y cuáles son sus características fundamentales?
Bueno, esta arquitectura se centra en permitir que los desarrolladores construyan y ejecuten aplicaciones y servicios sin tener que gestionar la infraestructura subyacente.
Dicho en otras palabras, el proveedor de la nube se encarga automáticamente de la asignación de recursos, la escalabilidad y el mantenimiento, liberando a los equipos de desarrollo de estas tareas y permitiéndoles concentrarse en el código y la lógica de negocio.
La arquitectura se centra en el concepto de "Function as a Service" (FaaS), donde las funciones individuales se despliegan en la nube y se ejecutan en respuesta a eventos específicos.
La diferencia con los modelos tradicionales es que las aplicaciones se ejecutan en servidores que deben ser monitoreados, escalados y mantenidos por el equipo de desarrollo, cosa que quita mucho tiempo y dinero.
Algunas ventajas que se me ocurren de esta metodología:
- Escalabilidad Automática: La infraestructura puede ajustarse automáticamente para manejar cargas de trabajo fluctuantes.
- Eficiencia de Costos: Solo se paga por los recursos que se utilizan, lo que puede resultar en ahorros significativos.
- Desarrollo Ágil: Permite a los desarrolladores centrarse más en la creación de código y menos en la gestión de infraestructura.
Pero también tenemos algunos desafíos con los que lidiar:
- Limitaciones de Tiempo de Ejecución: Las funciones tienen un tiempo de ejecución limitado, lo que puede no ser adecuado para tareas de larga duración.
- Problemas de Estado y Latencia: Mantener el estado entre ejecuciones de funciones puede ser complicado, y la latencia puede ser un problema para algunas aplicaciones.
- Dependencia del Proveedor: Al estar ligado a un proveedor de nube específico, puede surgir el problema de la "vendor lock-in".
Yo he estado utilizando Supabase y sus Edge Functions para gestionar estos servicios y estoy simplemente enamorado de lo fácil que ha sido desarrollar esto.
Te muestro un ejemplo:
En este caso esta función simplemente lo que hace es buscar en la base de datos todas las ordenes que tengan el estatus "DELIVERY_IN_TRANSIT".
¿No era más fácil agregar un endpoint en el backend para devolver todas esas ordenes?
Y la respuesta es NO 😂. No tenemos backend y por un solo endpoint no íbamos a crear uno.
Entonces simplemente creamos esta función para que la aplicación móvil pudiera acceder a esos recursos.
Y así de fácil es como creas un endpoint para lo que necesites. En este caso las Edge Functions de Supabase soportan todos los métodos HTTP, entonces puedes utilizar la misma función para hacer un CRUD muy fácil.
Como ves, no hace falta crear todo un proyecto de Node.js desde cero. No hay que reinventar la rueda.
Otra particularidad que tienen estas Edge Functions es que utilizan Deno y Typescript, entonces tienen mejor performance que Node.js 😏 Otra ventaja que tiene hacerlo de esta manera.
Para finalizar
La próxima vez que vayas a crear un proyecto en Node.js te recomiendo estudiar la opción de utilizar Edge Functions o algo similar.
En este caso el chiste de utilizar Edge Functions es que cuando se llama a la función, esta se va a ejecutar desde el servidor que esté más cerca del sitio físico desde donde fue llamado. Es decir que la latencia va a ser MUUY baja.
3 Noticias para ti
- 🤯 Gravity Industries muestra como su Jetpack dispara armas automáticas con la cabeza.
- 🤔 Amazon sorprende con su chatbot especializado para empresas.
- 😲 Stable Difussion lanzó un modelo para generar videos generativos.
Nos vemos en la edición #14
Reinventa tu sistema implementando este tipo de arquitectura!
Recuerda que si quieres hablar de algo en particular puedes sugerir el tema respondiendo este correo.
Hasta pronto 👊🏼
Nicolás Leal.
#13 Conoce sobre la Arquitectura Serverless
Descubre cómo las Arquitecturas Serverless (Sin Servidor) están Revolucionando el Diseño de Sistemas.