Ejecutar y probar¶
Estado verificado al 28 de marzo de 2026. Nota de runtime: FastFN resuelve dependencias y build por función según el runtime: Python usa
requirements.txt, Node usapackage.json, PHP instala desdecomposer.jsoncuando existe, y Rust compila handlers concargo. Enfastfn dev --nativenecesitas runtimes y herramientas del host;fastfn devdepende de un daemon de Docker activo.
Vista rápida¶
- Complejidad: Intermedia
- Tiempo tipico: 20-40 minutos
- Úsala cuando: necesitas validar la plataforma completa en local o CI
- Resultado: salud, ruteo, OpenAPI y tests quedan verificados
Esta guia define un flujo de validacion real para usar FastFN como plataforma FaaS en serio.
Esta ordenada por etapas para que puedas usarla igual en local y en CI.
Alcance de validacion¶
Este flujo valida:
- arranque de runtimes y salud
- discovery de rutas y manejo de requests
- paridad OpenAPI con rutas descubiertas
- comportamiento ante conflictos de rutas
- suites de regresion (unit + integracion)
Contexto tecnico:
Requisitos¶
Base:
./bin/fastfndisponiblecurl,jq
Segun modo:
- modo Docker (
fastfn dev): Docker CLI + daemon activo - modo Native (
fastfn dev --native): OpenResty en PATH y runtimes que vayas a usar
Etapa 1: build y arranque¶
Build:
Arranque en Docker:
Arranque en Native:
Criterio de aceptacion:
- proceso inicia sin errores fatales
/_fn/healthllega a HTTP200
Etapa 2: salud y endpoints base¶
Salud:
Smoke de rutas publicas:
Criterio de aceptacion:
- health reporta runtimes habilitados en
up=true - endpoints responden HTTP
200
Etapa 3: paridad OpenAPI y mapa de rutas¶
Rutas OpenAPI:
Catalogo y conflictos:
Criterio de aceptacion:
- las rutas publicas esperadas existen en OpenAPI
mapped_route_conflictsvacio en operacion normal
Referencias:
Etapa 4: validar politica de conflictos¶
FastFN no debe sobrescribir rutas mapeadas en silencio por default.
Validar:
- crear dos funciones que reclamen la misma ruta
- revisar catalogo y conflicto detectado
- confirmar comportamiento determinista de error
Politica:
invoke.force-urlpor funcionFN_FORCE_URLglobal
Detalles:
Etapa 5: suites de regresion¶
Pipeline completo:
Suites focalizadas:
bash tests/integration/test-openapi-system.sh
bash tests/integration/test-openapi-native.sh
bash tests/integration/test-api.sh
bash tests/integration/test-home-routing.sh
bash tests/integration/test-auto-install-inference.sh
bash tests/integration/test-platform-equivalents.sh
Criterio de aceptacion:
- sin
skipen checks obligatorios de CI - paridad OpenAPI OK en docker y native (si aplica)
Etapa 6: checklist de seguimiento antes de merge/release¶
- [ ]
/_fn/healthresponde 200 y runtimes en up - [ ] rutas publicas representativas responden status/body esperado
- [ ]
/_fn/openapi.jsoncontiene rutas publicas mapeadas - [ ]
mapped_route_conflictsvacio (o conflicto documentado) - [ ]
test-openapi-system.shen verde - [ ]
test-openapi-native.shen verde (o justificado fuera de entorno native) - [ ]
test-home-routing.shen verde (override de/+ home por carpeta víafn.config.json) - [ ]
test-auto-install-inference.shen verde (inferencia strict + metadata visible) - [ ]
test-platform-equivalents.shen verde (ejemplos avanzados de auth/webhook/jobs/orders) - [ ] docs y links internos actualizados con el cambio
Siguiente paso para hardening:
- Desplegar a produccion
- Checklist de seguridad
- Depuracion y solucion de problemas
- Patrones de acceso a datos
- Estructura app grande
Diagrama de Flujo¶
flowchart LR
A["Request del cliente"] --> B["Discovery de rutas"]
B --> C["Validación de políticas y método"]
C --> D["Ejecución del handler runtime"]
D --> E["Respuesta HTTP + paridad OpenAPI"]
Objetivo¶
Alcance claro, resultado esperado y público al que aplica esta guía.
Prerrequisitos¶
- CLI de FastFN disponible
- Dependencias por modo verificadas (Docker para
fastfn dev, OpenResty+runtimes parafastfn dev --native)
Checklist de Validación¶
- Los comandos de ejemplo devuelven estados esperados
- Las rutas aparecen en OpenAPI cuando aplica
- Las referencias del final son navegables
Solución de Problemas¶
- Si un runtime cae, valida dependencias de host y endpoint de health
- Si faltan rutas, vuelve a ejecutar discovery y revisa layout de carpetas
Ver también¶
Recetas rapidas de unit e integracion¶
Usa unit para logica de funcion e integracion para paridad routing/runtime.
Seams y estrategia de mocking¶
Preferir seams en:
- clientes HTTP externos
- adaptadores de base de datos
- proveedor de reloj/tiempo
- limites de proceso/seniales en modo native
Checklist de debug¶
- confirmar salida de discovery
- confirmar estado en
/_fn/health - probar endpoint con curl verbose (
-i -v) - inspeccionar logs runtime por lenguaje
- aislar funcion minima reproducible
Leer salida de debug del handler¶
Para una funcion como:
usa estas reglas:
- terminal de
fastfn dev:stdout/stderrcompletos, con prefijo por funcion X-Fn-Stdout/X-Fn-Stderr: utiles desde clientes externos, pero truncados/_fn/invoke:stdout/stderrcompletos en JSON para flujos de consola/adminfastfn logs --native --file runtime: stream local completo de logs runtime en modo native/_fn/logs?file=runtime...: stream completo filtrado para clientes admin/internos
Ejemplo de linea en logs:
Tail local en native:
Desde otra app o una herramienta admin, lee el endpoint interno de logs con token admin:
curl -sS 'http://127.0.0.1:8080/_fn/logs?file=runtime&format=json&runtime=python&fn=hello&version=default&stream=stdout&lines=50' \
-H 'x-fn-admin-token: my-secret-token'
Usa headers para una vista rapida y los logs runtime para la salida completa.
Siguiente paso¶
Continúa con Desplegar a producción cuando este checklist esté en verde de forma consistente en local y CI.
Enlaces relacionados¶
- Desplegar a producción
- Checklist de seguridad
- Zero-config routing
- Plomería runtime/plataforma
- Referencia API HTTP
- Especificación de funciones
- Arquitectura
- Obtener ayuda