Alterando o webapp design / arch para facilitar a manutenção (escalável)

5

Digamos que eu criei um webapp que desejo torná-lo mais escalável.

Como isso funcionaria agora

Se eu quiser "vender" o aplicativo da Web, preciso fazer o seguinte:

  • Alugue uma nova hospedagem
  • Copie o código para a hospedagem
  • Crie um banco de dados e as tabelas e altere os nomes no banco de dados

A tabela de usuários será usada para verificar o usuário que deseja efetuar login e as outras tabelas de dados apenas armazenam dados e trabalham juntas (junções e assim por diante)

Isto não é realmente escalável ... você tem que fazer um monte de coisas manuais para configurar

Como eu quero que funcione

Uma plataforma (portanto, automatize a maior parte da configuração). Isso tornará mais fácil manter o código (base de código centralizado) e não há problemas com a criação de tabelas / banco de dados.

Aqui é onde eu carece de visão geral / conhecimento ...

  • Eu gero novas tabelas para cada cliente que os usuários desse cliente usará?
  • Ou eu gero novos DBs a cada vez com as mesmas tabelas de nomes? Mas se algum usuário faz o login então eu tenho que mudar para outro banco de dados. (como eu verifique isso)
  • Ou posso copiar tudo em 1 db e as mesmas tabelas e criar um extra coluna para referenciar qual empresa eles pertencem? O problema com isso pode ter problemas de desempenho ao longo do tempo. Conte cerca de 7800 linhas para cada cliente, a cada ano .....

Tbh Eu não espero obter all-out, mas eu estava sempre muito interessado em como fazer plataformas escaláveis em vez de copiar / colar código para outros hosts. (o que geralmente faço)

A questão é como fazer isso? Não é uma discussão qual é o melhor caminho, mas sim como você pode fazer isso ou como a maioria das empresas faz isso

    
por MichaelAngelo 22.11.2016 / 10:10
fonte

1 resposta

2

Eu acho que o termo que você está procurando é 'inquilino único' vs 'multitenant'

ie. uma instalação do seu aplicativo suporta vários clientes ou você instala uma instância (incluindo o banco de dados, etc.) por cliente.

Isso não é o que geralmente se entende por escalável, você pode automatizar a implantação de uma nova instância com bastante facilidade e a separação entre clientes pode ser útil.

As soluções gerais de multilocação são consideradas mais fáceis de manter e mais flexíveis. especialmente se você tiver muitos clientes pequenos.Depois de tudo, não há nada que o impeça de ter várias instâncias de um aplicativo multilocatário e, essencialmente, executá-lo no modo de inquilino único

    
por 22.11.2016 / 10:17
fonte