Quais os melhores frameworks python para aplicação SaaS multi-tenant?

299 views
Skip to first unread message

Allan Freitas

unread,
Feb 6, 2015, 6:52:12 PM2/6/15
to python...@googlegroups.com, henr...@bastos.net
Galera boa noite, essa é minha primeira pergunta aqui no grupo.
Me chamo Allan Freitas, sou desenvolvedor PHP há 7 anos, já experimentei 2 anos trabalhando com RubyOnRails,
já fiz alguns scripts em python, até já fiz alterações em um site em django faz uns 2 anos.

Mas hoje vejo uma oportunidade, tenho uma ideia em mente e gostaria de desenvolvê-la em python
pois sempre admirei a linguagem, e gostei muito do que vi quando dei uma olhada no django.

Quais os melhores frameworks python( na opiniao de vocês ) para o seguinte caso:

Front-end Angularjs, e API em python (validacao de dados, 1 db para cada cliente) 
Terei 1 banco de dados central com os clientes/log de acesso/faturas do cliente(entre outros),
e quando a conta do cliente for ativada após o pagamento, a aplicação irá criar um banco de dados para esse cliente, 
e aplicar as migrations necessárias.

https://meusistema.dev/login (autenticacao, registro, esqueci minha senha) servidos pelo framework

"https://meusistema.dev/" após autenticacao o framework serve apenas a página com a aplicação em angularjs para o usuário autenticado.

https://meusistema.dev/api (API para a aplicação angularjs)

Lembrando que após autenticado, 
         o cliente tem um token que será usado para carregar o nome do banco de dados dele, 
         para a API responder corretamente com os dados dele.

Grato por qualquer ajuda.

Allan Freitas


Paul Eipper

unread,
Feb 7, 2015, 2:26:58 PM2/7/15
to python...@googlegroups.com, henr...@bastos.net
Você já tem um esboço da arquitetura de como vai distribuir os serviços? Cada cliente tem um cluster/maquina separada? Ou é simplesmente uma divisão lógica no mesmo servidor? Se for lógica, acredito que é mais simples a modelagem do banco suportar isso do que criar/remover um database completo.

Os diferentes endpoints podem ser servidos de uma unica instancia, ou entao separados em serviços. Se for uma instancia só, o framework tem que oferecer url mapping, templating, rest, websockets (dependendo da aplicação), controle de acesso, validação, orm. Se for separar em serviços, pode usar frameworks mais especializados para cada parte.

Outro fator que vai influenciar é a carga esperada, que vai ditar se é possivel escalar verticalmente, utilizando servidor maior, ou horizontalmente, adicionando mais maquinas, ou alguma combinação dos dois. O framework deve suportar escalar horizontalmente se for o caso.

O interesse é tecnologico ou comercial? Se for comercial valide a ideia primeiro da forma mais rapida possivel, algo como google appengine ou outros serviços que oferencem infra completa para deploy rapido.

Se for tecnologico e quer conhecer o que existe no mundo python, django é um bom começo. Recomendo especificar a arquitetura e pesquisar cada ponto para ver como django atende e quais são as alternativas.

Quando tiver levantado os pontos e tecnologias que achou interessante, pode trazer à discussão aqui.
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--

--
Paul Eipper

Allan Freitas

unread,
Feb 7, 2015, 5:20:08 PM2/7/15
to python...@googlegroups.com, henr...@bastos.net
Olá,

1) Objetivo Comercial(é um sistema de gerenciamento pra um ramo especifico).

2) A divisão inicialmente é lógica, mas decidi trabalhar assim,
para poder também dar a opção para o cliente contratar
um ambiente isolado dos outros

Estrutura de servers inicial:
- 1 maquina com o Nginx na frente como loadbalancer para,
- 2(inicialmente) maquinas para a aplicacao
- 1 maquina banco de dados

Todos os serviços serão via a API, exceto a parte de "login/registro".

--
--
Allan Freitas

Renzo Nuccitelli

unread,
Feb 8, 2015, 7:10:57 AM2/8/15
to python...@googlegroups.com, henr...@bastos.net
Acho que mais do que apenas tecnologia, é interessante tb se fazer análise de custos.

Por exemplo, quanto custaria dar manutenção e o custo da maior complexidade em se dar opção de ambiente isolado? É relevante a parcela do mercado que deixará de usar o sistema sem essa opção? Muitas vezes os clientes são numerosos o suficiente para vc focar em um nicho, de forma que num primeiro momento não precise introduzir custos e complexidade adicional.

Em tempo, eu gosto muito da API de namespaces do App Engine. Acompanhei discussão anterior sobre aplicações multitentes no DJango e achei muito complicado. Com ela, vc simplesmente precisa fazer um middleware para setar um valor de namespace de acordo com a requisição. O namespace separa lógicamente banco, tarefas e memcache, de forma enquanto a aplicação é única. Assim vc tem apenas um ambiente de produção para dar manutenção:


Vou tomar vergonha na cara e formalizar no Tekton isso, pois já fiz uma vez em dois projetos:


Abs, 

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Márcio Sancho

unread,
Feb 8, 2015, 9:06:43 AM2/8/15
to python...@googlegroups.com

Não me crucifiquem, mas está dentro do assunto o que vou falar. Vou desenvolver um sistema escolar. Para pequenas e médias escolas da minha região. Digamos que umas 15. Qual seria a abordagem mais prática? Um banco pra todo mundo? Um pra cada? Colocar o sistema numa Digital Ocean da vida, ou um Google App Engine? O que vocês acham?
Por falar nisso sinto falta de algum curso, livro que fale sobre essa questão de aplicações online para muitos clientes. Digo isso no contexto de um desenvolvedor iniciante como eu. Obrigado.



---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Renzo Nuccitelli

unread,
Feb 8, 2015, 9:46:24 AM2/8/15
to python...@googlegroups.com
Olá Márcio,

Acho seu assunto pertinente. E mesmo que não fosse, não costuma ocorrer crucificação nessa lista, o pessoal é bem receptivo e educado ;)

Tomei vergonha na cara e fiz aqui um código simplificado para resolver a questão:


Para explicar, fiz esse vídeo de improviso:





Renzo Nuccitelli

unread,
Feb 8, 2015, 9:50:46 AM2/8/15
to python...@googlegroups.com
Olá Márcio,

Acho seu assunto pertinente. E mesmo que não fosse, não costuma ocorrer crucificação nessa lista, o pessoal é bem receptivo e educado ;)

Tomei vergonha na cara e fiz aqui um código simplificado para resolver a questão:


Para explicar, fiz esse vídeo de improviso:


Estou conversando com uma editora sobre a versão impressa do meu livro. Provavelmente ela terá 1 ou 2 capítulos exclusivos. Justamente o que pensei para um deles foi esse assunto:


Quanto à ferramenta, difiícil definir melhor. Depende do contexto e do conhecimento da equipe técnica. O que eu posso dizer é que a solução que apresentei funciona, inclusive ela está rodando há mais de 4 anos para meus clientes.

Abs,

Márcio Sancho

unread,
Feb 8, 2015, 9:51:34 AM2/8/15
to python...@googlegroups.com

Obrigado pelo retorno Renzo. Venho estudando e fazendo meus projetos com PHP. Mas acompanho seu conteúdo sobre GAE sempre. E ainda este ano vou pegar no Python. Abraço.

Allan Freitas

unread,
Feb 8, 2015, 11:10:11 AM2/8/15
to python...@googlegroups.com
Obrigado a todos que responderam.

Começei a a fazer uma aplicação piloto em django e verificar se irá me atender.
Qualquer atualização posto aqui, pra deixar como conhecimento para a comunidade.

  
Allan Freitas
Desenvolvedor / Analista Web
www.allanfreitas.com.br
+55(27)99776-3501 (whatsapp/viber/telegram)
 
"O Senhor te abençoe e te guarde; 
o Senhor faça resplandecer o seu rosto sobre ti, e tenha misericórdia de ti; 
o Senhor levante sobre ti o seu rosto, e te dê a paz." Nm 6:24-26

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/Bjj1cr1Hx2Q/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

José Ricardo Borba

unread,
Feb 8, 2015, 1:03:36 PM2/8/15
to python-brasil
@Renzo,
Parabéns. Achei muito legal a sua perspectiva sobre o assunto e a solucão.

@Allan,
Não creio que exista um framework "específico" ou melhor (parafraseando o Renzo) para Multitenant, mas sim abordagens para resolver a questão. E esta do Renzo é muito interessante. As mais utilizadas são:

- Mesmo DB e tabelas, com registros individualizados por uma identificacão da empresa;
- Mesmo DB e tabelas com nomes prefixados para cada cliente;
- Um DB para cada cliente;

Não vou comentar sobre os prós e contras (isso daria um artigo inteiro!) mas você pode encontrar bastante material discutindo isto com uma procura no google.

Abraco!



José Ricardo Borba

Fabio C. Barrionuevo da Luz

unread,
Feb 8, 2015, 2:00:57 PM2/8/15
to python...@googlegroups.com
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Geovani de Souza

unread,
Feb 9, 2015, 6:29:29 AM2/9/15
to python...@googlegroups.com, henr...@bastos.net

Allan Freitas

unread,
Feb 9, 2015, 6:39:16 AM2/9/15
to python...@googlegroups.com
Obrigado Geovani,

vou estudar esse link agora.

  
Allan Freitas
Desenvolvedor / Analista Web
www.allanfreitas.com.br
+55(27)99776-3501 (whatsapp/viber/telegram)
 
"O Senhor te abençoe e te guarde; 
o Senhor faça resplandecer o seu rosto sobre ti, e tenha misericórdia de ti; 
o Senhor levante sobre ti o seu rosto, e te dê a paz." Nm 6:24-26

Em 9 de fevereiro de 2015 09:29, Geovani de Souza <geovani...@gmail.com> escreveu:

--

Otavio Augusto

unread,
Feb 9, 2015, 8:19:11 AM2/9/15
to python...@googlegroups.com

Acredito que o app engine cai bem para eeu projeto.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Renzo Nuccitelli

unread,
Feb 9, 2015, 8:21:00 AM2/9/15
to python...@googlegroups.com
Qualquer coisa baixe o projeto e veja o que acha durante uma semana de desenv. Se tiver dúvidas sobre o projeto, só enviar par ao fórum:


Abs,

Ovidio Marinho

unread,
Feb 9, 2015, 11:33:04 AM2/9/15
to python...@googlegroups.com
Mult-Tenant é nativo em Web2py.

conheça http://web2py.com



                   http://itjp.net.br
                    http://itjp.net.br
          Ovidio Marinho Falcao Neto
                ovid...@gmail.com

          Diretoria de Desenvolvimento
               João Pessoa- Paraiba
                         Brasil
              Fone: +55(83) 8826-9088

Maxwell Morais

unread,
Feb 9, 2015, 12:41:29 PM2/9/15
to python-brasil
Galera, existe sim, um framework python, que trabalha com Multi-tenant.

O nome dele é frappe (https://github.com/frappe/frappe)
É a base do ERPNext (erpnext.com)

Ele vem evoluindo desde 2005 e é aberto a comunidade desde 2008, eu o utilizo desde 2010.

Nele você consegue manter multi-tenant com nginx por padrão

Ele já possui uma interface web, feita em bootstrap, mas não é nada complicado acoplar uma nova interface, é totalmente possivel fazer isto através de seus apps.


Best Regards.

Maxwell Morais
Python Developer powered by Webnotes framework <3
Reply all
Reply to author
Forward
0 new messages