Saltar al contenido

Tecnología

Cómo construimos y por qué se construye así

Esta página trata de decisiones de ingeniería, no de una lista de frameworks. Las herramientas cambian por proyecto; estos principios no.

Principios de ingeniería

Cinco cosas que mantenemos

Cada una tiene un coste. Lo aceptamos porque la alternativa suele aparecer más tarde, en producción, en un peor momento.

Fiable por diseño

El manejo de errores, la validación de entradas, la supervisión y la recuperación se diseñan con la funcionalidad, no se añaden después del primer incidente. Un sistema que falla debe fallar de forma visible y predecible.

API-first

Todo lo que otro sistema necesita alcanzar se expone mediante una interfaz explícita con un contrato definido, de modo que las integraciones no dependan de detalles internos de implementación.

Consciente de la seguridad

Los secrets, la autenticación, la autorización y la validación pertenecen al servidor. El código del cliente se trata como público y los permisos se conceden con el alcance más estrecho que funcione.

Mantenible

Menos piezas móviles, patrones convencionales y código legible. La complejidad se añade solo cuando el problema lo exige, porque otra persona mantendrá esto más adelante.

Medible

Los sistemas que importan operativamente llevan registro, analítica y comprobaciones de estado, de modo que las preguntas sobre comportamiento y coste se puedan responder con datos y no con supuestos.

Arquitectura

Principios de arquitectura

Valores por defecto de los que partimos. Desviarse está bien cuando hay un motivo, y ese motivo se deja por escrito.

  1. 01 Estático cuando es posible
  2. 02 Serverless cuando es práctico
  3. 03 Límites de API claros
  4. 04 Secrets con privilegio mínimo
  5. 05 Datos estructurados
  6. 06 Servicios observables

Aplicado a este sitio web

El sitio que está leyendo sigue las mismas reglas. Las páginas son HTML estático prerenderizado, servido desde la red edge de Cloudflare, de modo que una visita no implica renderizado en el servidor ni consulta a una base de datos. El único código que se ejecuta ante una petición es el conjunto reducido de funciones de API en /api : una comprobación de estado, el catálogo de servicios, el endpoint de contacto y los endpoints de pago reservados para uso futuro.

  • Frontend HTML y CSS estáticos, con JavaScript solo donde una interacción lo requiere
  • API Funciones serverless con validación en el servidor y formas JSON coherentes
  • Almacenamiento Envíos de contacto en una base de datos SQL gestionada, sin servicio de formularios de terceros
  • Secrets Con alcance por entorno, nunca presentes en el paquete del cliente ni en el repositorio

Puede comprobar el endpoint de estado usted mismo: /api/health.

Áreas de capacidad

Alcance técnico

Las áreas en las que trabajamos día a día. Si algo queda fuera de este alcance, lo decimos en lugar de aprenderlo a su costa.

Integración de AI / LLM

Uso de modelos para tareas concretas, con validación, respaldos y visibilidad del coste.

APIs

Interfaces HTTP versionadas, webhooks y límites de servicio autenticados.

Automatización

Trabajos programados y activados por eventos, con reintentos, registro y colas de excepciones.

Procesamiento de datos

Normalización, validación y conversión de datos estructurados y de texto.

Infraestructura cloud

Despliegue serverless y en el edge, separación de entornos, secrets gestionados.

Aplicaciones web

Interfaces accesibles y adaptables, con validación en el servidor en todo el recorrido.

Integración de sistemas

Conexiones entre sistemas de operaciones, con titularidad explícita de cada campo.

Analítica

Informes operativos y medición construidos sobre los mismos datos que usa el sistema.

Herramientas que usamos

Lenguajes
TypeScript, Python, SQL
Interfaces
REST APIs, Webhooks, Renderizado en el servidor
Datos
Bases de datos relacionales, Almacenamiento de objetos, Registro estructurado
Plataforma
Cloudflare, Runtimes serverless, Despliegue basado en CI
AI
APIs de AI alojadas, Versionado de prompts, Validación de resultados

¿Tiene un sistema existente que revisar?

Si ya tiene software en marcha, una evaluación suele ser más útil que una reconstrucción. Podemos revisar la implementación actual y decirle qué conviene conservar.