El resultado final deseado es un sistema de mayor rendimiento con una menor utilización de recursos. Quiero conectar una base de datos sql a las funciones de la nube y alojar un conjunto de pf api.
Aquí hay dos alternativas...
Alternativa: alojamos cada API como una función de nube separada.
const functions = require('firebase-functions'); exports.helloFunc1 = functions.https.onRequest(function (request, response){ response.send("Hello from Func1!"); }); exports.helloFunc2 = functions.https.onRequest(function (request, response){ response.send("Hello from Func2!"); });Alternativa dos: alojamos una sola función de nube con enrutamiento interno.
const functions = require('firebase-functions'); const express = require('express'); const router = new express.Router(); var app = express(); var helloFunc1 = function (request, response){ // After some DB OPS response.send("Hello from Func1!"); }; var helloFunc2 = function (request, response){ // After some DB OPS response.send("Hello from Func2!"); }; router.get('/helloFunc1',helloFunc1); router.get('/helloFunc2',helloFunc2); exports.root = functions.https.onRequest(router);Ayúdame a comprender las compensaciones entre los enfoques y las ventajas/desventajas de cualquiera de los diseños.
Además, considere la agrupación de conexiones de la base de datos como parte del análisis. Esto no será un factor determinante si usamos firebase o datastore, pero para las bases de datos SQL nativas, asumo que muchas conexiones afectarán el rendimiento cuando esto se escala automáticamente.
EDITAR #1
Este es un ejemplo rudimentario, pero en realidad las implicaciones pueden ser mucho mayores. ¿Trabajar con un marco que proporciona funcionalidad adicional como ORM y modelos compartidos, Middleware para AUTH, convención general sobre el enfoque de configuración es una opción real en un entorno sin servidor? Porque sabemos que estos marcos están diseñados para ejecutarse en un servidor siempre activo. ¿Cómo lidiarán los ORM y los marcos en general con la preferencia y cómo afectará el rendimiento?
PD. Soy nuevo en Node y Express.
Por el momento, probablemente recomendaría implementar una aplicación Express, principalmente para obtener la ventaja de la reducción del arranque en frío. Sin embargo, si algunos de sus puntos finales tienen un perfil de memoria/cpu muy diferente, podría tener sentido separarlos en su propia Cloud Function (especialmente una vez que sea más fácil modificar el perfil de cpu/memoria de las funciones implementadas a través de Firebase).