Tutorial de uso de Firebase Hosting y Cloud Functions en GCP

·

·

Tutorial de uso de Firebase Hosting y Cloud Functions en GCP

Este artículo ofrece una guía detallada y profunda para implementar Firebase Hosting y Cloud Functions en Google Cloud Platform (GCP). Aprenderás desde la configuración inicial hasta las mejores prácticas de despliegue, emulación local, seguridad y monitoreo.

1. Visión general

Firebase Hosting es un servicio de alojamiento estático con contenido dinámico a través de Cloud Functions. Ofrece:

  • Despliegue rápido: Integración con Firebase CLI.
  • HTTPS y SSL automático: Certificados gestionados.
  • Rewrites y redirecciones: Para Single Page Apps y funciones.
  • Escalabilidad: Soporta miles de peticiones concurrentes.

Cloud Functions, por su parte, permite ejecutar código backend en respuesta a eventos en Firebase, HTTP o servicios de Google Cloud, sin preocuparte por servidores.

2. Requisitos previos

  • Cuenta de Firebase y GCP.
  • Node.js (versión LTS) instalado.
  • Firebase CLI instalado: npm install -g firebase-tools.
  • Proyecto de Firebase creado y configurado en la consola.
  • Roles adecuados: Firebase Admin o Editor de Cloud Functions.

3. Configuración inicial del proyecto

  1. Autenticar Firebase CLI:
    firebase login
  2. Inicializar el proyecto:
    firebase init

    Selecciona Hosting y Functions, después asocia tu proyecto.

  3. Carpetas generadas:
    • public/ para archivos estáticos.
    • functions/ para código de Cloud Functions.

4. Firebase Hosting

4.1 Estructura de archivos

Dentro de public/ coloca:

  • index.html
  • Carpeta assets/ para CSS, JS e imágenes.
  • 404.html (opcional) para error de página no encontrada.

4.2 Configuración de rewrites

En firebase.json añade:

hosting: {
  public: public,
  ignore: [firebase.json, /., /node_modules/],
  rewrites: [
    { source: /api/, function: api },
    { source: ,    destination: /index.html }
  ]
}
      

4.3 Despliegue

Ejecuta:

firebase deploy --only hosting

Recibirás la URL pública de tu sitio.

5. Cloud Functions

5.1 Instalación de dependencias

En la carpeta functions/, instala módulos:

npm install firebase-admin firebase-functions express cors

5.2 Estructura básica

const functions = require(firebase-functions)
const admin = require(firebase-admin)
const express = require(express)
const cors = require(cors)
admin.initializeApp()
const app = express()
app.use(cors({ origin: true }))

app.get(/hello, (req, res) =gt {
  res.json({ message: ¡Hola desde Cloud Functions! })
})

exports.api = functions.https.onRequest(app)
      

5.3 Despliegue de funciones

Ejecuta:

firebase deploy --only functions

Obtendrás la URL base de tu función api.

6. Integración Hosting Functions

Gracias a los rewrites, todas las llamadas a /api/ son redirigidas a la función api. Así se crea un backend API junto al front.

Ruta Destino Tipo
/ /index.html Estático
/api/hello Function api Dinámico

7. Emulación local

Para probar sin desplegar:

firebase emulators:start
  • Hosting en http://localhost:5000.
  • Functions en http://localhost:5001.

8. Seguridad y permisos

Controla el acceso a tus funciones y datos con:

  • Reglas de Firestore / Realtime Database: Configura quién puede leer o escribir datos.
  • Identidad de llamadas a funciones: Verifica context.auth en tus Cloud Functions.
  • Roles IAM: Asigna Cloud Functions Invoker a servicios o usuarios concretos.

9. Monitoreo y logs

  • Logs de Functions: En consola de GCP gt Cloud Functions gt Ver registros.
  • Hosting metrics: Uso de ancho de banda, estado de SSL y visitas.
  • Stackdriver / Cloud Monitoring: Configura alertas y dashboards personalizados.

10. Buenas prácticas

  • Modulariza Functions: Separa lógicas en archivos separados para escalabilidad.
  • Evita dependencias innecesarias: Reduce el tamaño del despliegue y el cold start.
  • Versiona tu front: Usa public/version-1.0/ para rollback sencillo.
  • Pruebas unitarias: Emplea mocha, jest o firebase-functions-test.
  • Cacheo: Configura headers de caché en firebase.json para recursos estáticos.

11. Recursos adicionales

12. Conclusión

Combinar Firebase Hosting con Cloud Functions en GCP ofrece una solución robusta, escalable y de rápida implementación para aplicaciones web modernas. Siguiendo este tutorial, podrás lanzar tu sitio estático con funcionalidades dinámicas, mantener un entorno seguro y tener control total sobre el ciclo de vida de tu aplicación.

¡Empieza hoy mismo y lleva tu proyecto al siguiente nivel!



Leave a Reply

Your email address will not be published. Required fields are marked *