Guía para usar Oracle Cloud Functions (serverless) en proyectos Node.js

·

·

Guía para usar Oracle Cloud Functions (serverless) en proyectos Node.js

Introducción

Oracle Cloud Functions es una plataforma serverless basada en Fn Project que permite ejecutar código en la nube sin preocuparse por la infraestructura subyacente. En esta guía detallada aprenderás a configurar tu entorno, crear, probar y desplegar funciones escritas en Node.js, además de aplicar buenas prácticas de seguridad y optimización de costes.

1. Requisitos Previos

  • Cuenta activa en Oracle Cloud.
  • Node.js (versión LTS recomendada) instalado localmente.
  • OCI CLI (documentación).
  • Fn CLI (Fn Project).
  • Conocimientos básicos de JavaScript/Node.js y terminal.

2. Configuración del Entorno

2.1. Instalar y configurar OCI CLI

Descarga e instala la OCI CLI siguiendo las instrucciones oficiales. Luego, configura tu perfil:

oci setup config --profile DEFAULT

Completa los datos de tenancy OCID, user OCID, zona (region) y ruta de la clave privada.

2.2. Instalar y configurar Fn CLI

Instala Fn CLI (requiere Go o descarga binario):

brew install fn  (macOS con Homebrew)

Luego inicializa tu entorno Fn:

fn init --runtime node myfnapp

3. Estructura de un Proyecto Fn en Node.js

Al inicializar un proyecto Fn obtendrás:

  • func.yaml: Definición de la aplicación y funciones.
  • package.json: Dependencias y scripts de Node.js.
  • index.js: Punto de entrada de la función.

Ejemplo de func.yaml

version: 0.0.1
name: myfnapp
triggers:
  http:
    type: http
    source: /hello
functions:
  hello:
    image: openfaas/node10-express:latest
    annotations:
      oracle.com/fn/project: myfnapp
    memory: 128Mi
    timeout: 30s

4. Despliegue en Oracle Cloud

Antes de desplegar, debes crear un compartment y configurar Fn en OCI:

oci fn application create --application-id  --compartment-id  --display-name myfnapp

Ahora, despliega tu aplicación y funciones:

Comando Descripción
fn deploy --app myfnapp Despliega el servicio y funciones en OCI.
fn list apps Lista aplicaciones registradas.

5. Pruebas Locales

Puedes ejecutar tu función localmente con Docker:

fn start --app myfnapp

Luego llama a tu endpoint:

curl -X GET http://localhost:8080/t/myfnapp/hello

6. Buenas Prácticas

  • Variables de entorno: Usa fn config para no incluir credenciales en el código.
  • Manejo de errores: Captura excepciones y devuelve respuestas claras.
  • Modularidad: Separa lógica en módulos para facilitar tests.
  • Optimización de paquete: Incluye solo dependencias necesarias, reduce peso de la imagen.

7. Seguridad y Gestión de Secretos

Utiliza OCI Vault para almacenar API keys o credenciales. Luego inyecta secretos con variables de entorno:

fn config myfnapp hello DB_PASSWORD ltsecret_ocidgt

8. Monitoreo y Logs

Activa Logging y Monitoring en tu compartment y consulta métricas desde Oracle Cloud Monitoring. Para ver logs:

oci logging search-log-events --log-group-id ltLOG_GROUP_OCIDgt --query-text fnapp:myfnapp

9. Optimización de Costes

  • Configura memoria y timeout ajustados a tus necesidades.
  • Utiliza OCI Free Tier si tu carga de trabajo es ligera.
  • Apaga entornos de desarrollo cuando no estén en uso.

10. Ejemplo Completo de Función Hello World

// index.js
module.exports = async function (ctx) {
  try {
    const name = ctx.request.query.name  Mundo
    ctx.status = 200
    ctx.body = { message: ¡Hola, {name}! }
  } catch (err) {
    ctx.status = 500
    ctx.body = { error: Error interno en la función }
  }
}

11. Resolución de Problemas Comunes

Autenticación OCI CLI falla
Verifica que la clave privada tenga permisos 600 y que los OCIDs sean correctos.
Fn deploy da timeout
Aumenta el timeout en func.yaml o revisa conectividad de red.
Error de dependencias en build
Revisa versión de Node.js y compatibilidad de módulos nativos.

Conclusión

Oracle Cloud Functions, basado en Fn Project, ofrece una solución potente y escalable para ejecutar funciones Node.js de forma serverless. Con esta guía dispones de un enfoque completo: desde la configuración del entorno local hasta la optimización en producción. Siguiendo estas recomendaciones podrás desarrollar servicios ágiles, seguros y eficientes en costes.



Leave a Reply

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