Glenn Johnson – Senior Vice President – Magic Software Americas
Recentemente me perguntaram: Multitenancy (Multilocação) é fundamental para cloud computing ou SaaS ou para ambos? Depende de como multitenancy está definido em seu dicionário.
Na computação, o termo multitenancy descreve uma abordagem compartilhada de recursos. Numa definição bem superficial, tanto cloud computing, e é claro SaaS, envolvem compartilhamento de recursos. Mas nem todos os tipos de multitenancy são os mesmos, com respeito à suas abordagens para compartilhamento de recursos.
Gartner nos oferece seis modelos de multitenancy: nada-compartilhado; hardware compartilhado; processamento compartilhado; banco de dados compartilhado; tudo-compartilhado e multitenancy personalizado.
A abordagem nada-compartilhado é a menos multitenancy por natureza e os usuários podem ter mais nada em comum do que uma url compartilhada, sistema de billing (faturamento), linha de suporte ou arquivos executáveis duplicados. Isto estende a definição de multitenancy tão longe a ponto de ser essencialmente fora dos limites, em minha visão, e é provavelmente mais respeitada por aqueles que pretendem seguir o efeito bandwagon do SaaS e a nuvem. Pense no IBM WebSphere ou Oracle Application Server rodando no Amazon EC2.
A abordagem hardware-compartilhado para multitenancy não é muito interessante para alguns tipos de software. Neste modelo, os tenants (inquilinos) compartilham um conjunto comum de hardware geralmente através de virtualização. Mas cada tenant tem sua própria camada dedicada de software (plataforma de aplicações, middleware, aplicações, bancos de dados, etc). Não deveria ser surpresa que este é o método utilizado com o Microsoft Azure .NET porque querem maximizar as vendas de software e licenças e a maneira mais fácil de fazer isso é exigir várias instâncias.
O que o Gartner chama multitenancy de banco de dados compartilhado trata-sede um único banco de dados para todos os tenants. Os tenants não compartilham os dados um do outro (e não podem vê-los), mas eles estão armazenados dentro do mesmo banco de dados. Todavia, uma instância separada dentro do recipiente de uma aplicação é utilizada para processar a aplicação.
Somente quando o Gartner começa a falar sobre multitenancy processamento compartilhado alguns defensores da nuvem começam a acenar as cabeças. Neste modelo, uma plataforma de aplicações multi filas separa o uso do processador de cada tenant, mas cada tenant terá provavelmente uma instância única de banco de dados. Gartner diz: “A maioria dos recursos de execução de processos são compartilhados, permitindo uma elasticidade de fina granularidade. A plataforma de aplicações tem características multitenancy responsáveis pelo isolamento do tenant e por direcionar todas as trocas de dados para as corretas instâncias do DBMS.” O Gartner menciona a plataforma uniPaaS como exemplo neste modelo.
No modelo de multitenancy tudo compartilhado, o compartilhamento do processamento e do banco de dados estão presentes. Como o Gartner sugere, isto fornece máxima elasticidade teórica. Entretanto, vários fatores como a eficiência e o design do gateway do banco de dados e a integridade operacional e escalabilidade bidirecional do mecanismo de processamento podem inibir um ótimo desempenho de processamento em abordagem tais como Force.com. Outras conseqüências incluem exposição pública de metadados não específicos do tenant (estatísticas sobre o uso global das aplicações ou plataforma podem se ternar conhecidos aos concorretes) bem como questões relacionadas à perda do código da aplicação em uma plataforma cloud ou aplicação SaaS totalmente proprietária.
Por fim, o Gartner iria identificar multitenancy personalizada como um tipo de arquitetura multitenant programada manualmente. É evidente que a sobrecarga de programação é gigantesca em tais abordagens e uma preocupação sobre a perda da capacidade de uma organização testar suficientemente esta abordagem de forma que possa garantir integridade e confiabilidade operacional.
Escolher o nível correto de multitenancy é uma decisão importante. Mas não é a única decisão na escolha de uma plataforma de aplicações cloud-enabled. É preciso considerar também o ambiente do Client e os desafios do desenvolvimento para os lados Client e Server de uma aplicação. Então, para responder a questão do início, sim, tanto a computação em nuvem quanto o SaaS exigem algum modelo de multitenancy. Se não está compartilhado, não está na nuvem.