segunda-feira, 1 de outubro de 2012

Aplicações Multi-tenant

Buenas!

Comemoração de 2 posts no mesmo ano! Ueba!

Vamos falar sobre aplicações multi-tenant, sim, geralmente utilizada em aplicações SaaS, onde você tem diversos clientes utilizando a mesma aplicação com dados separados, seja por banco (one schema or database per tenant) ou por filtros nos modelos.

Na última aplicação que desenvolvi ainda não conheci muito bem essas arquiteturas e fiz o mais complicado: re-inventar a roda.



Ou seja, em todas as consultas fiz o filtro, nas validações coloquei um escopo e algumas artimanhas a mais para garantir que cada cliente tenha seus dados bem guardados e consistentes.

Sim, um trabalho sujo e cruel para uma equipe de apenas um desenvolvedor!

Particularmente gosto da idéia de deixar a lógica no código e não criar particionamentos da base por cliente. Além do que o Heroku (meu PaaS de coração) não colabora muito nesse aspecto.

Para a próxima aplicação estou estudando dois gems para me ajudar a encontrar o equilibrio correto entre customização e produtividade.

São eles:

multitenant (https://github.com/wireframe/multitenant)

  • esse é o clássico, já tem uma longa estrada mas acho que está faltando alguns recursos úteis para o meu caso.

acts_as_tenant (https://github.com/ErwinM/acts_as_tenant)

  • esse foi lançado faz pouco tempo e gostei mais das funcionalidades. Foi extraido de um SaaS chamado RollCallApp
Para conhecer mais sobre esse assunto recomendo:
Para saber mais: