Hace 12 años, un alto porcentaje de las aplicaciones o software se hospedaban en los servidores que comparaban y mantenían las empresas. En estos años los grandes proveedores de software y de servicios que usan millones de usuarios, vieron que podrían brindar como servicio la infraestructura que tenían y con ello las buenas prácticas y tácticas con las que ofrecen servicios de alta calidad, escalables y con gran disponibilidad. Estos servicios de infraestructura se podrían adquirir de una forma sencilla y rápida y por el cual se puede pagar por demanda, esto dio inicio a lo que es la computación en la nube o cloud computing. Y desde ahí este paradigma no ha parado de crecer y tenemos cientos de servicios disponibles en la nube al día de hoy, desde almacenamiento, máquinas virtuales, aplicaciones, bases de datos, hasta máquinas para entrenar modelos de machine learning.
También se ha proliferado una nueva tendencia como son las APIs, que exponen funcionalidades o productos de estos proveedores como servicios para ser usados en otras aplicaciones. Por ejemplo vemos APIs de Google Maps, Chats, para procesamiento de imagen, para registro de “logs”, para envío de mensajes o de mails y muchos más. Además se fueron creando SDKs para los diferentes lenguajes de programación, que por medio de envoltorios o fachadas ocultan la “complejidad” del llamado de a las APIs, con el propósito que el uso o consumo de estos servicios sean más fácil desde las aplicaciones. Estos SDKs nos permiten consumir servicios que normalmente desarrollamos cuando construimos una aplicación, como es la creación y autenticación de usuarios, almacenamiento, analiticas, registro de errores, uso de bases de datos, notificaciones entre otros. Estos servicios se les llama BaaS (Backend as a Service). Además podemos crear lógica de negocio dividida en microservicios y a su vez en funciones específicas, que desarrollamos y desplegamos a un proveedor de la nube el cual se encargará de proveer la infraestructura necesaria para atender a la cantidad de usuarios que tengamos en cualquier momento de forma automática y brindar una alta disponibilidad que al final nos reduce la administración y mantenimiento de servidores. Esto es conocido como FaaS (Functions as a Service). Crear aplicaciones donde su arquitectura usa BaaS y FaaS se le conoce como serverless.
Serverless significa literalmente “sin servidor” y es crear aplicaciones usando un conjunto de servicios de backend y entornos de ejecución con escalamiento automático en el cual podemos alojar la lógica de negocio de las aplicaciones. Esto permite desarrollar una aplicación reduciendo tiempos y posiblemente costos operativos.
Firebase es un BaaS (Backend as a Service) el cual nos brinda los servicios más comunes al crear una aplicación móvil o web, servicios como creación y autenticación de usuarios, base de datos, almacenamiento, analiticas, gestión de errores, notificaciones, entre otros. Nos brinda más de 15 servicios con las mejores prácticas, la cual nos reduce el tiempo de desarrollo de una forma considerable.
Firebase también nos brinda una capacidad de cómputo que no mantenemos, entornos donde desplegamos nuestra lógica de negocio o componentes divididos o representados como funciones (Faas), que se pueden ejecutar con una petición HTTP o por eventos de otros servicios, ejemplo cuando se sube un archivo al almacenamiento o cuando se agrega un nuevo documento a una colección en la base de datos o cuando se crea un usuario entre otros. Este servicio se llama “firebase cloud functions”, la cual nos brinda las siguientes ventajas:
Sin mantenimiento: solo desarrollamos en Javascript o Typescript y subimos el código por medio de comandos a entornos de ejecución en Firebase y este se encargará de forma automática de proveer los recursos de procesamiento según los patrones de uso de los usuarios. No tendremos que preocuparnos de nada.
Seguridad: El codigo estara de forma segura, aislada totalmente del cliente.
Integrada con los servicios de firebase: es posible ejecutar una función a partir de eventos que son generados por servicios de firebase y google cloud.
Fácil desarrollo: firebase nos brinda todo un conjunto de herramientas, librerías para desarrollar de una forma rápida las funciones y con sus respectivas pruebas.
Hay que aprender muy bien cómo se comportan las “cloud functions” y realizar un seguimiento adecuado para no tener altos costos. Las arquitecturas serverless son las más adecuadas al momento de construir aplicaciones que deseamos agreguen valor al usuario en corto tiempo. Es por ello que te invito a realizar el curso de “Firebase Cloud Functions” si deseas conocer mas de como construir y probar una cloud function de manera práctica y alineado al mundo real.