O documento discute arquitetura multi-tenant no ASP.NET Core 2.0, onde uma única aplicação pode atender vários clientes de forma isolada. Apresenta vantagens do modelo SaaS multi-tenant como redução de custos, atualizações centralizadas e escalabilidade. Uma demonstração mostra implementação prática com pacote SaasKit.Multitenancy no .NET.
5. Globalcode – Open4education
Multi-Tenant ou Multitenancy
Uma única aplicação Web pode responder a diversos clientes de
uma forma que aparenta que eles estão falando com diferentes
aplicações.
Os diferentes interfaces dos aplicativo são chamados de Tenants
(inquilinos), porque conceitualmente eles vivem no mesmo espaço,
no caso a aplicação WEB e podem ser endereçados individualmente.
9. Globalcode – Open4education
Multi-Tenant ou Multitenancy
A ideia principal de uma aplicação Multi-Tenant é garantir o
isolamento de implementação, de dados e de customização.
1. Isolamento dos dados.
2. Ser flexível.
3. Solução escalável.
10. Globalcode – Open4education
SaaS
O SaaS (Software como Serviço) permite aos usuários se
conectar e usar aplicativos baseados em nuvem pela
Internet.
Vantagens:
Obter acesso a aplicativos
sofisticados.
Pague apenas pelo que usar.
Use software cliente gratuito.
Mobilize sua força de trabalho
facilmente.
Acesse dados de aplicativos de
qualquer lugar.
12. Globalcode – Open4education
Saas
Em um modelo SaaS em nuvem, as aplicações podem
ser oferecidas como serviços a muitas organizações.
Para os provedores desses serviços, é imprescindível
que os recursos computacionais a serem oferecidos
sejam o mais amplamente compartilhados.
13. Globalcode – Open4education
Saas – vantagens do
multitenant no saas
Reduz os custos de investimento a longo prazo.
Atualizações simples.
Fácil customização.
Maximização do uso de recursos.
14. Globalcode – Open4education
Saas - vantagens do
multitenant no saas
Infinitos Clientes.
Dependendo da implementação da arquitetura, uma
manutenção serve para todos os clientes.
Escalabilidade
15. Globalcode – Open4education
Saas - desvantagens
Mais Complexo.
Menos Flexível em alguns casos.
Se o servidor cair, todos os
clientes caíram.
Diversos clientes acessando o mesmo host, mas é transparente para o usuário que esta usando o sistema
Isso significa dizer que todas minhas aplicações estaram hospedadas em único e no mesmo servidor, mas cada um terá seu endereço, no caso sua url
A arquitetura já é antiga
Clientes inquilinos
Entregar a aplicação para diversos clientes, utilizando um único host, um único servidor
Fazendo uma analogia, por exemplo uma casa compartilhada em cada morador tem seu quarto, seu espaço, mas todos utilizam os mesmos recursos da casa, como banheiro, cozinha, quintal e etc. porém cada quarto tem seu endereço único, a gente sabe chegar no endereço específico
1 - Usuário não pode ter acesso às informações dos demais, ou seja, cada cliente, quando temos a base seja compartilhada, não pode “invadir” o espaço do outro, as informações tem q ser específicas somente do cliente
2- Por mais complexo que seja, tem q ser possível fazer customizações por exemplo, o cliente A quer o fundo azul com o logo de sua empresa e o cliente B quer um fundo amarelo e o logo de sua empresa
3 – Aplicação deve ser robusto a ponto de atender milhares de requisições por tenant
Esse é o nosso caso, aplicações multitenant vão utilizar os recursos do SaaS
Reduz os cutos - Só preciso de uma assinatura para atender todos os clientes
Facil customização – pode ter um layout para todos os clientes e alterar alguns detalhes como cor de fundo ou logo da empresa
Maximização do recurso, utilizo 100% do recurso ou máximo possível que contratei do provedort
Infinitos clientes – cada cliente novo, vc não tem um trabalho gigantesco para desenvolver a aplicação, é só fazer pequenos ajustes e esta pronto...
Por exemplo, nos casos em que a lógica é a mesma, podemos fazer a manutenção para todos os clientes. Outro exemplo, em caso de lojas virtuais, cada loja, tenho diversos clientes que compartilham o layout, cada um com suas características, mas a forma de pagamento é igual para todos (pagseguro), se tiver que fazer manutenção na forma de pagamento, todos os clientes vão ser ajustados para essa nova manutenção
Escalabilidade – Algumas aplicações são menos acessadas e outras mais, portanto há um equilíbrio no uso do recurso, podento ter uma uma utilização mais correta do servidor, utilizando o máximo do recurso
Mais complexo de implementar
Menos flexível “ah mas não da para colocar um botão só para mim” dependendo da situação isso não é possível
Um dia a casa cai
Resource isolation: A dedicated server is better shielded from failures in other infrastructure components than a shared solution.Cost: Costs are higher when we need to have one physical server per service, application, or customer than with a shared server.Quality of service: You can achieve a higher level of quality and customization if you have separate servers, because you are not concerned with how it might affect different services, applications, or customers.Complexity of customization: We must take extra care in customizing multitenant solutions because we typically don’t want things to apply to all tenants in the same way.Operation and management: “Hard” management, like backups, monitoring, physical allocation, power supplies, cooling, etc., are much easier when we only have one server.