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:








sexta-feira, 13 de julho de 2012

Validação Regular Expression novo número sao paulo 9

Buenas!

Eis que um dia...

A Anatel inventou de mudar o formato do número de celular somente para São Paulo e isso obviamente vai causar muitos tickets para nós ( nerds, programadores, ticket-killer e afins ).

Para resolver essa pequena questão o ideal é usar uma regular expression. Se você não sabe o que é (link) (link).

Para você querido leitor fantasma que já é PHD em regex, pode ir descansar que isso é básico.

Para você que é o meu semelhante e um mero utilizador de regex.

Aqui vai o código para Java e para Ruby.

 Java
"0{0,2}(55)?(?:(11)(9[0-9]{4})|([1-9]{2})([0-9]{4}))([0-9]{4})"
Ruby
"(^55)(([1-9]{2})([0-9]{4})|(11)(9[0-9]{4}))([0-9]{4}$)"

Valide antes de usar :)
Usando o ruby online

Abs e até mais.