Meu filho está trabalhando num projeto muito legal e comentou que está utilizando o Supabase como backend. Fiquei curioso e na primeira pesquisada eu vi que o Supabase é uma casca ao redor do Postgres e fiquei mais curioso ainda pois sou fã do Postgres desde o começo dos anos 90.
Estudei mais um bocado e vi que a proposta do Supabase é ser realmente um backend completo com o Postgres fornecendo, além do banco, as restrições de integridade e outras regras de negócio através de triggers e funções. Pode-se também usar Typescript nas 'edge functions' mas eu percebi claramente que o uso é complementar em APIs e coisas do tipo, o forte mesmo é colocar tudo no banco de dados com a linguagem SQL estendida que ele permite.
Primeiro eu senti um cheirinho de mofo, mas logo em seguida eu vi um recurso super interessante, o Row Level Security (RLS) que permite o tratamento multi-tenant de uma forma muito elegante, econômica e, principalmente, segura.
Virei a chave e abri a mente, o cheirinho de mofo deu lugar para uma nostalgia boa da facilidade de escrever aplicações cliente-servidor em Delphi.
O fato é que essa arquitetura simples foi o motor que impulsionou o grande boom das aplicações para computadores pessoais. Antes da arquitetura cliente-servidor (ou duas camadas), as aplicações em PCs funcionavam principalmente com arquivos locais ou compartilhados em rede (e o inferno dos locks).
Primeiro o mofo, depois a nostalgia e em seguida a reflexão: porque uma arquitetura que ficou relegada a segundo plano por tanto tempo se tornou relevante novamente?
Antes de mais nada: porque foi relegada a segundo plano, lá no passado?
O fato é que não existiam SaaS e as aplicações corporativas precisavam rodar na rede da empresa, então era importante que as aplicações suportassem vários bancos de dados para não limitar seu mercado. Uma vez que cada banco tem sua variação do SQL (e isso era muito pior naquela época do que é hoje, já que o próprio SQL padrão era limitadíssimo) o ideal era que as regras não ficassem no banco de dados para não haver necessidade de existirem vários fontes com as mesmas regras mas em linguagens SQL-like diferentes. Claro que existiam as aplicações grande (ERPs) que exigiam o banco XPTO e o cliente se adaptava a isso, mas a grande maioria dos pequenos e médios desenvolvedores precisava suportar mais de um banco de dados para conseguir vender. A necessidade do isolamento das regras de negócio em relação tanto ao frontend quando ao banco de dados deu origem à arquitetura em três camadas, criando uma camada de aplicação 'no meio' para conter essas regras de negócio.
Aí ficou fácil entender o ressurgimento do cliente-servidor: aplicações SaaS não precisam se preocupar em ser multi banco e, se você puder evitar uma ou mais camadas na sua aplicação, consequentemente simplificando segurança, deploy, etc. é só alegria...
Claro, ainda fica a questão da dependência do fornecedor, se você escreve suas regras para um banco específico, você fica 'grudado' nele, e isso deve ser levado em conta caso a caso. O Supabase têm a vantagem de ser open source, ou seja: pode perfeitamente ser fornecido por várias empresas concorrentes no mercado BaaS ou até mesmo internalizado pelo desenvolvedor da aplicação.
No frigir dos ovos, entendo que esse tipo de abordagem tem muitas vantagens para aplicações de todos os portes e, mesmo que a dependência do fornecedor seja um problema real, o custo de 'desgrudar' pode ser compensador no médio/longo prazo.
Antes que eu me esqueça, o projeto muito legal que meu filho está trabalhando é parte do PCD Hub e, quando digo que é muito legal não me refiro somente ao aspecto técnico ;-)

