Ser multitenancy ou não ser multitenancy: eis a questão.

Recentemente almocei com um executivo de uma empresa que produz e comercializa softwares aplicativos. O assunto foi SaaS e se ele deveria redesenhar seu produto para funcionar no modelo multitenancy. Como quase todos os aplicativos atuais ele opera no modelo on-premise, ou seja, comercializa uma cópia que é instalada nos servidores dos seus clientes.

A dificuldade de evoluir para multitenancy com uma única instância lógica compartilhada por centenas ou milhares de empresas clientes (tenants) é obviamente o custo, embora, seja claro, que este modelo traz consigo diversas vantagens como economia de escala, menor custo operacional e gerenciamento de upgrades. Upgrade é um bom exemplo. No mundo SaaS muitas vezes ocorrem 3 ou 4 upgrades por ano, com mudanças incrementais sendo incorporadas logo que estejam disponiveis. No modelo tradicional, estas mudanças tem que ser agrupadas e disponibilizadas em conjunto em um novo release, que é então distribuído ao clientes. As empresas clientes não podem perder tempo fazendo upgrades periódicos. Tem que cuidar do seu negócio!

Já com SaaS, o upgrade é feito nos servidores da nuvem que opera o aplicativo e todos os clientes tem acesso a estas novas funcionalidades, ao mesmo tempo. O que não acontece no modelo tradicional, onde os upgrades são efetuados de acordo com as prioridades de cada empresa. É comum vermos então, dezenas de versões, cada uma com recursos de funcionalidades diferentes. É sem duvida, um tormento para o suporte técnico do provedor do aplicativo.

Por outro lado, existe um caminho alternativo que é usar provedores de nuvens IaaS e instalar neles seu aplicativo, com uma máquina virtual para cada cliente. Para o cliente, o efeito é SaaS, embora para o provedor os custos sejam mais elevados que multitenancy, pois cada máquina virtual tem uma cópia do aplicativo, que deve ser gerenciada por si. Mas pode ser uma etapa intermediária antes de se chegar a um “full multitenancy”. Este modelo pode ser chamado de multitenancy via shared hardware, pois o servidor é compartilhado por varias maquinas virtuais, cada uma com sua propria instância do aplicativo. Não permite de forma automática a elasticidade total pois para isso seria necessário alterar o código do aplicativo ou do servidor de aplicações que o rodeia, para entender as APIs da nuvem onde ele reside, para que seja possivel explorar a escalabilidade horizontal. Escalabilidade horizontal é aumentar ou diminuir o numero de maquinas virtuais alocadas a uma única instância. Neste modelo a unidade de provisionamento e alocação é a máquina virtual. Um exemplo é o Amazon Auto Scaling Service. Claro que a aplicação também tem que ter sido projetada para aproveitar mais maquinas virtuais. Se ela tiver sido desenhada para rodar um um único servidor, sem nenhuma capacidade de paralelismo, alocar mais maquinas virtuais não trará beneficio nenhum.

Qualquer que seja a estratégia SaaS, é importante que o cliente se sinta seguro e que os demais clientes que compartilham a infraestrutura não interfiram em sua operação. Por exemplo: se um determinado cliente está no seu momento de maior utilização, gerando muita demanda computacional, este fato não pode afetar a performance dos demais clientes. Portanto, ir para SaaS demanda que a infraestrutura em nuvem do provedor consiga manter o isolamento entre as varias instâncias compartilhadas.

O modelo “full multitenancy” deverá aos poucos se disseminar, e provavelmente começaremos a ver as novas aplicações sendo escritas para rodar em ambiente de nuvem (SaaS) explorando este modelo. Demanda, obviamente, skills que não são muito comuns hoje em dia… Hoje um exemplo clássico de full multitenancy é o salesforce. Um documento que recomendo como apoio ao entendimento do conceito multitenncy e seu uso prático é o “The force.com multitenant architecture”, acessivel em http://tinyurl.com/cat7hb . Outro paper muito legal é “Best practices for cloud computing multitenancy” disponivel em http://www.ibm.com/developerworks/cloud/library/cl-multitenantcloud/index.html . Aliás, acessando a comunidade developerWorks (https://www.ibm.com/developerworks/ ) e pesquisando pela keyword multitenancy você obterão excelentes papers que os ajudarão a entender melhor o conceito. Vale a pena o esforço.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: