Archive for novembro \29\UTC 2010

Entendendo o modelo Multi-tenancy

novembro 29, 2010

O modelo SaaS vai, no futuro, requerer tecnologias e arquiteturas especificamente desenhadas para operar em nuvem. Entretanto, estas novas arquiteturas e tecnologias vão aparecer no longo prazo, com modelos intermediários e transitórios surgindo no curto e médio prazo, fazendo a ponte entre os modelos computacionais existentes hoje e os futuros modelos em nuvem.

A maioria dos softwares existentes hoje foi desenhada para operar nos data centers das empresas, sujeitos à contratos específicos de licença de uso. As próprias plataformas de aplicação como Java e .Net foram desenhadas para operarem no modelo on-premise.

Em um modelo SaaS em nuvem, as aplicações podem ser oferecidas como serviços à muitas organizações. Para os provedores destes serviços, é imprescindivel que os recursos computacionais a serem oferecidos sejam o mais amplamente compartilhados. Para os usuários, é fundamental que uma falha de um software na operação para um outro usuário não o afete. Além disso, cada usuário gostaria de adaptar, na medida do possível, a aplicação à suas características específicas.

Mas, as arquiteturas de software atuais não atendem a este novo cenário. É necessário um novo modelo arquitetônico de software, chamado de multitenancy ou multi-inquilino.

A proposta do modelo SaaS é ter uma aplicação atendendo a multiplos clientes, chamados de tenants ou inquilinos. Inquilinos não são usuários individuais, mas empresas clientes do software. Uma arquitetura multi-inquilinos (em alguns casos a literatura fala em multi-arrendatário, mas eu prefiro usar o termo multi-inquilino) é uma arquitetura essencial para um ambiente em nuvem pois permite que multiplos inquilinos (empresas clientes) compartilhem os mesmos recursos fisicos como um aplicativo ERP, mas permanecendo logicamente isolados.

Os modelos multi-inquilino são:

a) Inquilino isolado. Neste modelo, cada inquilino tem seu próprio stack de tecnologia, não havendo compartilhamento de recursos. Na prática, embora o usuário sinta a experiência de multi-inquilino, pois a aplicação é oferecida a multiplos clientes, a partir do mesmo data center, este modelo não é multi-inquilino. É similar ao modelo tradicional de hosting (hospedagem), onde cada usuário tem seu próprio conjunto de recursos computacionais e sua própria instância da aplicação. Para a uma oferta SaaS, este modelo carece de agilidade e elasticidade, porque adicionar um novo inquilino requer o provisionamento de sua própria instância de hardware e software. Tambem não permite economia de escala. Os provedores que comercializam softwares no modelo tradicional podem oferecer esta opção, sem alterar sua aplicação. Embora não seja verdadeiramente Computação em Nuvem é um passo nesta direção, oferecendo como atrativo a facilidade de uma rapida oferta para SaaS.
b) Multi-inquilino via hardware compartilhado (virtualização). Neste modelo, cada inquilino tem seu próprio stack de tecnologia, mas o hardware é alocado dinâmicamente a partir de um pool de recursos, via mecanismos de virtualização. Bastante similar ao modelo anterior, mas permitindo elasticidade na camada do hardware. Elasticidade é fundamental ao modelo de Computação em Nuvem, que demanda mecanismos de alocação e liberação de recursos de foma dinâmica. Este modelo permite uma entrada rápida na Computação em Nuvem, principalmente por provedores de aplicações e de infraestrutura, porque não demanda redesenho da aplicação. Entretanto, apresenta limitações, pois a unidade de alocação e liberação de recursos é a maquina virtual onde aplicação vai operar.
c) Multi-inquilino via container. Neste modelo vários inquilinos são executados na mesma instância de um container de aplicação (um servidor de aplicações), mas cada inquilino está associado a uma instância separada do software de banco de dados. O ambiente de execução é compartilhado entre vários inquilinos, mas a plataforma de dados é mesma. A premissa do modelo é que o isolamento do banco de dados garante integridade dos dados dos inquilinos, ao mesmo tempo que o container de execução, por ser compartilhado, oferece as vantagens de elasticidade e customização. Para garantir o isolamento dos inquilinos dentro de uma única instância do container ou servidor de aplicações, este deve ser desenhado com funcionalidade para gerenciar a alocação de recursos aos seus inquilinos.
d) Multi-inquilino via todo o stack de software compartilhado. É uma evolução do modelo anterior, agora com todo o stack de software sendo compartilhado. Neste modelo além do container da aplicação, também uma única instância do banco de dados é compartilhada por todos os inquilinos.

O modelo (b), multi-inquilino por compartilhamento de hardware, permite uma transição para SaaS, com baixo custo e baixo impacto. A razão é simples: preservam os modelos de programação e tecnologia já conhecidos.

Os modelos (c) e (d) implementam um nivel bem mais avançado de SaaS e provavelmente serão os modelos dominantes no longo prazo. Mas hoje, é implementado apenas por empresas de software que não possuem legado para sustentar e portanto podem romper com os modelos tradicionais, como por exemplo, a Salesforce. Como são nativos ao modelo em nuvem, oferecem niveis elevados de flexibilidade e elasticidade, mas ao custo de disrupção nos modelos atuais de programação.

Nos próximos anos veremos um intenso debate sobre os prós e contras dos vários modelos de multi-inquilinos, mas no longo prazo os modelos (c) e (d) prevalecerão. Empresas de software que precisam suportar sua imensa base de clientes com sistemas legados, estão optando por uma evolução gradual, adotando inicialmente o modelo (b), mas incentivando uma evolução posterior para os modelos (c) e (d), à medida que o mercado e as tecnologias disponíveis forem amadurecendo o suficiente para suportarem clientes corporativos de grande porte.

Anúncios

Cloud Computing e Open Source: complementares e não concorrentes

novembro 22, 2010

Uma questão que volta e meia me fazem em palestras sobre Cloud Computing e SaaS é se este conceito abala o modelo Open Source. Venho pensando no assunto e gostaria de instigar um debate aqui. Na minha opinião, SaaS e Open Source são complementares e não competidores.

Vamos raciocinar juntos. Olhando a cadeia de valor do negócio software podemos pensar em três perguntas básicas:
a) Quem constrói o software?
b) Quem adiciona valor e o distribui?
c) Quem o utiliza?

Para a primeira pergunta respondemos que o software pode ser criado por uma comunidade ou por empresas, seja para uso próprio ou para comercialização. O modelo Open Source se encaixa neste caso. É basicamente um modelo de criação e desenvolvimento de software. Por ser um modelo colaborativo, ele permite criar novos modelos de negócio, alternativos ao modelo tradicional de vendas de licenças. A receita geralmente vem de serviços adicionados em torno do software em si.

Já SaaS é um modelo de distribuição e consumo de software. Uma empresa ou um usuário adquire um serviço que utiliza determinado software. Por exemplo, um usuário adquire o direito de usar um serviço de email como o Gmail, gratuitamente como usuário final ou pagando um fee como empresa.

Analisando a cadeia de valor do software vemos então que Open Source se encaixa na questão “quem constrói o software?”, sendo portanto um modelo de desenvolvimento, não importando se o software será distribuído via modelo on-premise ou via SaaS.

Vamos ver alguns exemplos na prática. O Linux é um sistema operacional desenvolvido pela comunidade e um dos ícones do movimento Open Source. A própria comunidade e algumas empresas adicionam valor a ele, em forma de componentes e utilitários adjacentes, como as distribuidoras, e o disponibilizam, de forma gratuita ou sob contrato de serviços como remuneração pelo valor agregado. No modelo atual, on-premise, quem se encarrega de baixar o sistema nos servidores e customizá-lo é a própria empresa usuária, por conta própria ou contratando serviços de terceiros. Mas ele pode ser usado como SaaS? Sim, aliás, muitas das ofertas de Cloud Computing públicas e SaaS existentes hoje utilizam Linux e outros softwares Open Source como base, adicionando softwares de código fechado às suas ofertas. Dois exemplos bem conhecidos são o EC2 da Amazon e o Google AppEngine, que são suportados por servidores Linux e softwares de virtualização e gerenciamento Open Source, como o Xen.

Existem também diversos projetos Open Source que permitem criar infraestrutura de nuvens privadas baseadas em Linux, como os projetos Eucalyptus (http://open.eucalyptus.com/) e Nimbus (http://www.nimbusproject.org/). Uma outra iniciativa bem interessante é o projeto Bitnami (http://bitnami.org/) que permite implementar ambientes operacionais Open Source na nuvem EC2 da Amazon. O stack de software Bitnami inclui aplicações e softwares Open Source que podem operar como uma AMI (Amazon Machine Image).

O usuário de nuvens públicas ou de ofertas SaaS, seja ele uma pessoa ou uma empresa, quer usufruir do serviço ou das funcionalidades que a nuvem vai prover, e não do código fonte. Ele quer se abstrair das atividades relacionadas com implementar e manter os recursos computacionais. Aliás, para ser lucrativo o provedor de um software SaaS precisa de basear em três pilares: ambiente virtualizado e multi-tenancy, padronização e automação. Ora, um ambiente padronizado impede que cada usuário customize o software ou altere o código a seu prazer. É diferente do modelo on-premise onde a responsabilidade pelo bom ou mau uso do software é da empresa usuária. No SaaS o provedor é o responsavel pelo nivel de serviço e não poderá oferecer versões individualizadas sob pena de não ter a economia de escala suficiente para ser lucrativo. Construir e manter operacional uma infraestrutura de nuvem pública (SaaS é um modelo de nuvem pública) demanda alto investimento.

Por outro lado, o provedor de uma nuvem pública ou de uma oferta SaaS pode abrir o código fonte do seu software para conseguir colaboração da comunidade e acelerar o processo de inovação. Mas o software disponibilizado como SaaS não será aberto. Os usuários devem ter acesso à mesma versão do software e para isso o provedor tem que fechar a versão disponibilizada na nuvem.

Claro que se o software for Open Source sempre poderemos copiá-lo e criarmos nossas próprias nuvens públicas. Para criar diferenciação no serviço, cada provedor acabará tendo que criar funcionalidades específicas e diferenciadoras, inclusive usando alguns componentes de software fechados. O resultado final é o aumento da concorrência, que será salutar para o mercado como um todo.

Assim, o se o usuário quiser modificar um determinado software Open Source para executar em nuvem uma funcionalidade que interesse especificamente a ele, terá como opção usar este software em uma nuvem IaaS, assumindo a responsabilidade pelo seu uso. Um provedor de IaaS como a Amazon provê apenas servidores virtuais com seus sistemas operacionais, como Linux. O uso dos aplicativos é de responsabilidade do usuário do serviço e não da Amazon. Diferente do modelo SaaS, onde o provedor é responsavel pela qualidade do nivel de serviço oferecido.

Na minha percepção, o uso de Open Source atuando de forma sinérgica com softwares fechados pode abrir oportunidades para criação de ofertas de Cloud e SaaS mais rapidamente e mais baratas. São complementares e não concorrentes. Qual opinião de vocês?

Cloud em 2011: alguns pensamentos

novembro 16, 2010

Estamos em novembro e como participei de inumeras reuniões e eventos onde o tema Cloud Computing foi debatido, acredito que um pequeno resumo do que foi 2010 e como eu estimo será 2011 poderá ser um bom tema para este post.
Para mim ficou muito claro que 2010 foi um ano onde a maioria dos executivos com quem falei estavam interessados em conhecer um pouco mais de cloud para suportar suas decisões de adotar ou não conceito já em 2011. Ano que vem veremos, na minha opinião, muitos projetos piloto, os famosos POC (proof-of-concept) sendo colocados em prática. Alguns projetos POC que os executivos se mostram mais interessados são cloud no ambiente de desenvolvimento e teste, bem como experimentações em email e colaboração. Interessante que muitas análises feitas globalmente mostram claramente que as grandes empresas optam por dar seus primeiros passos em direção a cloud via private clouds e as pequenas e médias tem a tendência de irem direto para nuvens públicas.

Mas tenho plena convicção que o mercado de cloud tende a se acelerar. Cloud é um novo modelo computacional, plenamente sustentável, que irá aos poucos substituir o atual paradigma, o modelo client-server. À medida que ele for melhor compreendido, veremos que cloud vai mudar de forma significativa a maneira como a tecnologia é adquirida e consumida. Vai criar novos modelos de engajamento entre provedores de tecnologias e seus clientes.

Um recente relatório do IDC aponta nesta direção. Segundo esta análise, em 2009 o mercado de nuvens publicas correspondeu apenas a 4% ou 1/25 do total gasto em produtos comparáveis, pelo modelo tradicional. Em 2014 este valor já será de 12% ou 1/8 do gasto no modelo tradicional. Estamos falando de um crescimento de 27% ano a ano!

Mas o desafio é grande. Para provedores de tecnologia está ficando claro que cloud, pelo menos por enquanto, não é uma nova fonte de receita, mas uma possível canibalização de parte substancial das suas vendas de hardware e software. Em resumo, ao invés de adquirir um novo servidor, as empresas que adotam cloud utilizam servidores disponíveis em nuvens públicas, ou “cloudificam” suas próprias máquinas, já instaladas nos data centers internos. No longo prazo, cloud vai transformar por completo o atual modelo de vendas de hardware e software.

Vamos ver os potenciais impactos no longo prazo: o modelo de cloud IaaS poderá substituir a aquisição de servidores e storage. PaaS poderá substituir os atuais softwares de middleware comercializados on-premise o modelo SaaS poderá substituir o modelo de vendas de pacotes aplicativos como ERP que não precisarão mais ser adquiridos e instalados nos servidores internos.

O impacto na cadeia de valor da indústria de TI será significativo. Empresas que só vendem hardware terão que evoluir para serem empresas de serviços, pois o hardware passará, ele próprio, a ser serviço. Aliás, IT como um todo será IT-as-a-service. Já vemos empresas que só fabricavam hardware adquirindo empresas de serviços e software, dando seus primeiros passos para entender e desenvolver novos modelos de negócio. Os intermediários, as empresas que são simples “box-move” ou sejam, compram mais barato do fabricante e revendem, terão que redesenhar seu futuro. Talvez daqui a cinco ou dez anos o negócio de vender hardware como conhecemos hoje não exista mais.

Os drivers para adoção de cloud são vários. Um destes drivers que acredito vão impulsionar a adoção de cloud será o mais rápido “time-to-value”, quando os CFOs reconhecerem que suas empresas poderão usufruir de novos sistemas e tecnologias sem investimentos em capital, como no modelo atual. É uma troca do modelo de capex por opex. À medida que se troca os custos fixos por variáveis, libera-se mais capital para investimentos em outras áreas de negócio, além de permitir que as empresas ajustem dinamicamente suas despesas com TI com as demandas do negócio. Um CFO fica sensibilizado quando compreende que pode redirecionar seus investimentos na aquisição de ativos de TI, para atividades que geram receita diretamente.
Outro impulsionador é a melhor flexibilidade do negócio, quando a empresa puder lançar um novo produto ou serviço muito mais rapidamente, sem esperar pelos longos tempo de espera pela aquisição e instalação de novos ativos de hardware e software.

Mas, este cenário não vai ocorrer de uma dia para o outro. Ainda vemos muita desinformação circulando no mercado. Hoje o rótulo de cloud é usado por qualquer produto de hardware e software ou provedor de data center, mesmo que não tenha absolutamente nada dos conceitos basicos de cloud, como já discutimos exaustivamente aqui no blog. O desconhecimento do que é cloud por parte de profissionais e executivos também atua como barreira. Outro dia este desconhecimento ficou muito claro quando um CIO me disse que já tem private cloud, pois virtualizou grande parte de seus servidores. Ora, virtualização é apenas o primeiro passo. Criar uma infraestrutura elástica, padronizada e automatizada, acessada de forma self-service é que caracteriza um data center atuando como nuvem privada.

Cloud não é uma panacéia universal e sua adoção não é tão simples assim. Demanda expertise e um planejamento adequado. Aliás, cloud não se compra, mas se constrói. O que se compra são serviços e tecnologias que formam a base tecnológica que permite criar um ambiente virtualizado, padronizado e automatizado, pilares do modelo cloud. Sugiro acessar o endereço http://www.ibm.com/ibm/cloud/, onde vocês verão a estratégia da IBM para implementar cloud em seus clientes, baseada em três pilares: plan, build e deliver. Lá vocês poderão acessar também o Cloud Adoption Advisor, um self-assessment gratuito que orienta onde iniciar as ações de cloud na empresa. É auto-explicativo, feito online, com resultados bem interessantes e orienta quais primeiros passos devem ser dados.

No longo prazo a indústria de TI terá outra característica, diferente da atual. Para termos uma melhor idéia do que poderá ser este cenário, vamos dividir cloud em uma taxonomia já relativamente bem aceita, que é IaaS, PaaS e SaaS, além de nuvens privadas, publicas ou híbridas. Cada um das variantes de cloud tem dinâmica de evolução diferentes, tanto em termos tecnológicos, como em ritmo de adoção pelo mercdo. Colocar tudo no mesmo saco torna as coisas muito enevoadas.

Por exemplo SaaS já vem sendo adotado há algum tempo e muitos cases de sucesso já existem no mundo inteiro. A empresa Salesforce é um exemplo bem sucedido deste modelo. Este modelo demanda que o provedor SaaS não customize seus produtos, mas ofereça-os de forma altamente pardronizada. Para entender melhor o que é uma empresa SaaS, recomendo a leitura do excelente livro “Behind the Cloud” do fundador e CEO da Salesforce, Marc Benioff, onde ele descreve a criação e evolução de uma empresa 100% SaaS, que é a própria Salesforce. Este livro é realmente é um guia de como criar e manter uma empresa de software no modelo SaaS. Imperdível para todos empresários da indústria de software.

Falando em SaaS, este modelo deve impactar as consultorias que vivem basicamente de implementar e customizar aplicativos como ERP. Como o SaaS é altamente padronizado, os serviços de implementação são mais rapidos e menos onerosos. Voltando ao exmplo do SaaS, o livro do Marc Benioff explica que a salesforce não customiza o software para os clientes, mas cria uma plataforma aberta onde os clientes, ISVs e consultores podem construir novos aplicativos, que interajam com seu produto de CRM. Por outro lado, cresce a demanda por integração entre aplicativos SaaS e on-premise.

As nuvens públicas do modelo IaaS tem sua própria dinâmica. É um serviço de massa, altamente padronizado, que demanda por parte de seus provedores uma escala significativa para poderem oferecer serviços com uma relação custo-beneficio superiores ao modelo de hosting atual. De maneira geral as margens são baixas e portanto necessitam ter grande numero de usuários. Hoje o melhor exemplo de oferta de nuvem pública é o da Amazon. Dados não oficiais estimam que a receita da Amazon com seus serviços de IaaS já alcançam o patamar dos 500 milhões de US$.

Quando falamos em private cloud, temos um cenário diferente. Uma empresa que se propõe a construir uma private cloud transforma o modelo de relacionamento entre sua própria TI e seus usuários. TI deixa de ser um centro de custos e passa a ser um “service-provider” financiado pela contribuição para os seus custos operacionais por parte de seus usuários. Para os provedores de tecnologia abre-se um bom espaço para venda de tecnologias e consultorias que operacionalizem a nuvem privada.

Cloud computing significa um risco e um desafio para provedores e consumidores de tecnologia. Para os provedores uma nova oportunidade, desde que estejm preparados para surfar neste novo modelo. A disrupção no modelo de entega e consumo de produtos e serviços de TI implica em novo modelos de negócio e profundas mudanças nos modelos atuais.

Nos próximos anos, na minha opinião, veremos uma crescente adoção de TI-as-a-Service, com o modelo on-premise sendo substituido aos poucos pelo modelo cloud. A industria como um todo passará por transformações e acredito que de “product-cenric” passará ao modelo “service-centric”. O dinheiro que vai girar a industria de TI vai deixar de ser para produzir bens de capital para prestação de serviços continuados. O modelo cultural e de governança, de vendas transacionais e seus incentivos passará de recompensas por vendas one-time para criação e consolidação de relacionamentos duradouros com os clientes. Serão realmente tempos desafiadores para todos nós, profissionais de TI.

Uma pequena pausa…

novembro 8, 2010

Meus amigos, nas proximas duas semanas estarei envolvido com algumas atividades profissionais que não me deixarão escrever novos posts. Mas voltarei a eles logo na terceira semana de novembro.
Enquanto isso, sugiro uma visita aos posts anteriores (são pelo menos 80 posts levantados desde o ano passado) e visitem o site https://www.ibm.com/developerworks/cloud/ que contém muitas informações interessantes.
Até breve