>_Cloud Computing – SaaS, PaaS e IaaS

Software as a Service (SaaS)

Compartilhamento do mesmo software, exemplo:

Uma empresa possui uma instalação de um WordPress, um sistema de gerenciamento de páginas ou blog. Por isso, ela precisa dar manutenção em uma máquina Linux e manter tanto o sistema operacional como os softwares necessários e o WordPress. Seguindo o modelo de SaaS, em vez de comprar uma máquina, configurar a rede, me preocupar com todos os tipos de ataques e atualizações, contratar pessoal técnico para manutenção etc., eu poderia dar um clique e ter uma instalação de WordPress pronta para uso!

O mesmo pode se dizer de diversos outros softwares, como sistemas de planejamento de projetos, atendimento online via chat, via tickets. Até mesmo softwares tradicionalmente desktop – como um editor de textos ou de apresentações – podem ser utilizados online, como através do Google Docs.

A idéia de vender o software como um serviço instalado remotamente, onde o cliente não se preocupa com nada, é chamado de Software as a Service (ou SaaS) e é uma das ideias comumente chamadas de Cloud Computing. Em geral, a licença é paga por um determinado período de tempo, dando mais liberdade para testes e permitindo a curto prazo um valor mais baixo do que a compra de uma licença eterna – como era no modelo de software mais tradicional.

Platform as a Service (PaaS)

Porém, em muitas situações, possuímos uma aplicação customizada em nossa empresa. Nesses casos, não faz sentido vendê-la como um serviço, afinal ela atende apenas ao problema daquela empresa específica. Para fazer o deploy dela em uma máquina, precisamos adquirir o hardware, configurar e manter toda a infraestrutura. O que poderíamos minimizar? Note que diversas partes de um software customizado são comuns entre diversos projetos: muitos usam um determinado tipo de banco de dados e uma linguagem específica.

Tomemos um caso comum como exemplo: Java com JPA ou Rails com MySql. Algumas empresas perceberam esse fator comum e disponibilizaram uma infraestrutura que permite ao desenvolvedor enviar sua aplicação para um hardware pré-configurado para tal uso. Uma aplicação escrita em Java com JPA (com determinadas limitações) pode ser instalada na plataforma do Google chamada Google App Engine, onde será rodada em diversos servidores Jetty, compatíveis com a Servlet API. Com isso, o desenvolvedor se preocupa menos com diversos fatores, como até mesmo a escalabilidade.

O Google App Engine pode levantar novas instâncias do servidor no momento que for necessário, e a empresa que contratou o serviço paga somente pelas instâncias do servidor que foram necessárias pelo tempo utilizado. Quando o pico de acesso passa, o GAE derruba automaticamente os servidores para não gastarmos dinheiro. Todo o processo de balancear a carga entre os servidores que estão rodando (load balancing) é feito pelo serviço que a plataforma do GAE nos disponibiliza.

Além disso, em situações como essas, onde a plataforma é dada como um serviço, Platform as a Service ou PAAS, ela pode nos fornecer plugins que permitam – de maneira gratuita ou paga – melhorar a experiência de nossa aplicação.

Uma grande vantagem é não nos preocuparmos com hardware e poder adquirir plugins através de um marketplace que adicionam valor ao nosso software. Tudo isso fazendo um único deploy.

Infrastructure as a Service (IaaS)

Mas nem sempre a pilha de software que utilizamos é algo comoditizado ou fácil de encontrar. Algumas vezes queremos ter um maior controle sobre as configurações de nosso hardware. Nesses casos é bem comum alugar máquinas por determinado tempo. Enquanto antigamente o serviço de hosting era mensal, hoje em dia podemos alugar a infraestrutura de um servidor por hora, pagando o mínimo possível, dependendo de como utilizamos ela: quantos bytes entram e saem, quantos ciclos de processamento são consumidos etc.

Em outros momentos queremos utilizar o máximo de máquinas possíveis por um período curto de tempo: uma tarefa de processamento de muitas imagens pode ser rodado em 100 máquinas paralelas e dividir por 100 o tempo, pagando o mesmo que 1 máquina custaria em 100 vezes o tempo.

Alugamos não somente um servidor com Linux ou Windows instalado, como é no caso do Amazon Web Services, mas podemos alugar também load balancers para controlar e automatizar a escalabilidade de nossos servidores, alugar máquinas otimizadas para bancos relacionais, servidores que facilitem a distribuição de conteúdo e sua aplicação através do mundo todo, visando diminuir a latência final. A Amazon provê seus serviços web através desse modelo, onde a infraestrutura é disponibilizada como serviço – Infrastructure as a Service ou IaaS.

Além disso, podemos manter nosso software disponível em duas regiões distintas do globo, diminuindo o problema da disponibilidade: mesmo que um desastre aconteça em uma região, outra ficará provavelmente intacta, mantendo nosso serviço no ar.

Cloud Computing

De modo geral, costumamos chamar de Cloud Computing qualquer um dos três modelos vistos anteriormente.

Cabe ao desenvolvedor/administrador escolher o modelo que se adequa melhor à sua empresa, entendendo as vantagens e desvantagens de cada modelo.

>_Cloud Computing – SaaS, PaaS e IaaS
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: