Saltar al contenido principal

Sin servidores propios, Deno y un solo proveedor: la columna vertebral

Producto y plataforma

En septiembre llegó el momento de elegir tecnología. Es una conversación que en muchos proyectos dura meses; nosotros la quisimos cerrar en una semana. La pregunta no era "¿qué stack es el mejor?" sino "¿qué stack nos permite ir rápido siendo dos personas y dormir tranquilos en producción?".

La respuesta corta: Supabase y nada más para empezar. Sin servidores propios, sin Kubernetes, sin Java. La respuesta larga es esta entrada.

Lo que descartamos a propósito​

Hubo opciones que sobre el papel parecían sensatas y que tachamos sin pestañear:

  • Java + Spring Boot. Es lo que conocemos del trabajo anterior, pero significa servidores que mantener, despliegues lentos y un consumo de memoria desproporcionado para nuestro tamaño.
  • Microservicios. Para un equipo de dos, son una forma elegante de crear problemas que no tienes. Empezamos con un monolito frontend y funciones serverless.
  • Servidores propios en bare metal. Atractivo a largo plazo por costes, pero no para un MVP. Cuando facturemos lo suficiente nos lo replantearemos.

Por qué Supabase​

Supabase nos da en una sola plataforma cuatro cosas que de otra forma serían cuatro contratos distintos:

  1. Postgres gestionado. Una base de datos seria, no una NoSQL exótica. SQL nos da la flexibilidad de hacer reportes, joins, y migraciones predecibles.
  2. RLS (Row Level Security) nativo. Crítico para multi-restaurante: cada workspace solo ve lo suyo, garantizado a nivel de base de datos. No hay "ay, se me olvidó filtrar por restaurant_id".
  3. Auth integrado. Email, password, magic link, recuperación. Todo lo aburrido que tendríamos que reescribir.
  4. Storage. Para fotos de carta, logos, documentos. Sin tener que montar un S3 y firmar URLs a mano.

Edge functions en Deno​

Para la lógica de servidor (webhooks, integraciones, jobs cortos) elegimos las edge functions de Supabase, que corren sobre Deno. Tres motivos:

  • TypeScript directo, sin pipeline de build. Escribes y despliegas. Para integraciones puntuales es ideal.
  • Arrancan en milisegundos. Cero servidores ociosos, cero coste cuando no se llaman.
  • Mismo lenguaje que el frontend. No tener que cambiar el chip mental entre el cliente y el servidor.

Para procesos largos (envíos masivos de email, sincronización inicial con TheFork) las edge functions no van a funcionar. Esos casos los iremos resolviendo según aparezcan, probablemente con colas y workers.

Lo que esto implica​

Esta arquitectura tiene un precio: dependemos mucho de Supabase. Si mañana cambian sus precios o tienen una caída larga, sufrimos. Lo asumimos a cambio de poder ir muy rápido. Y la base es Postgres estándar, así que migrar a otro proveedor gestionado en el futuro es trabajoso pero no traumático.

Próxima entrega: cómo terminamos modelando los datos para que un grupo con tres locales pueda gestionar todo desde una sola cuenta.

ESENCA