Gerson Freire15-Apr-15 16:19
Gerson Freire 15-Apr-15 16:19
Wonderful article! I would like to offer freely a Brazilian portuguese translation. I need the authorization? Whoi would like this? Please send me a message here or an email.
Well, I have a MS-Word document copy, although, I decided to publish here. Following is the translation:
Bhaskardeep Khaund, 30 de dezembro de 2009 CPOL
Introdução à computação em nuvem - SaaS.
A computação em nuvem é o assunto atual da moda. Este artigo começa por perguntar o que exatamente é a computação em nuvem. Vamos dar uma olhada de alto nível na forma como a computação em nuvem funciona e como é que isso vai causar um impacto para o nosso ambiente de trabalho atual. Na parte final do artigo, vamos dar uma olhada mais profunda em uma das categorias de computação em nuvem, SaaS (software como serviço). Mas, para começar, vamos entender os conceitos básicos de computação em nuvem.
A computação em nuvem, como o nome sugere, é um estilo de computação onde os recursos dinamicamente escaláveis e muitas vezes visualizados são fornecidos como um serviço através da internet. Esses serviços podem ser consumidos por qualquer utilizador através de uma conexão HTTP padrão. O usuário não precisa ter conhecimento, perícia, ou controle sobre a infraestrutura de tecnologia na "nuvem" que os suporta. O nome computação em nuvem foi inspirado no símbolo da nuvem que é muitas vezes usado para representar a Internet em diagramas de rede e fluxogramas. As nuvens denotam a abstração da infraestrutura complexa que se esconde na Internet.
O diagrama abaixo mostra o layout básico de alto nível da computação em nuvem, em que o prestador de serviços cria a sua solução (software, infraestrutura, ou plataforma) na internet, onde um ou mais usuários podem consumir esse serviço "on demand".
A computação em nuvem pode ser categorizada em três grupos:
1. Platform As A Service - Plataforma como Serviço (PaaS)
2. Infrastructure As A Service - Infraestrutura como Serviço (IaaS)
3. Software as a Service – Software como Serviço (SaaS)
Neste trabalho, vamos dar uma olhada em profundidade no Software como uma categoria de Serviço (SaaS) da computação em nuvem.
A nuvem pode ser pública ou privada. Uma nuvem pública vende serviços para qualquer pessoa na Internet. Uma nuvem privada é uma rede de propriedade particular de uma empresa ou um centro de dados que fornece serviços de hospedagem a um número limitado de pessoas. Quando um provedor de serviços usa recursos de nuvem pública para criar a sua nuvem privada, o resultado é chamado de nuvem privada virtual. Privado ou público, o objetivo da computação em nuvem é fornecer acesso fácil, escalável para recursos de computação e serviços de TI.
Todas as grandes empresas cresceram através da criação dos seus próprios frameworks (conjunto de bibliotecas de software) para computação em nuvem, baseados em código fonte ou não. Alguns dos frameworks baseados em código fonte mais importantes são:
1. Java Google Web Toolkit (Google App Engine).
2. Python Django (Google App Engine)
4. Microsoft .NET (Plataforma de Serviços Azure)
Existem inúmeros ISVs (Independent Software Vendors), como por exemplo, Mosso, que fornecem uma plataforma para hospedar soluções baseadas em nuvem.
Onde o SaaS se encaixa
SaaS é uma das metodologias de Cloud Computing que se baseia em um modelo "one-to-many" (um-para-muitos), pela qual um aplicativo é compartilhado entre vários clientes. A definição exata de software como serviço (SaaS) ainda está aberta ao debate, e perguntando-se a pessoas diferentes, provavelmente resultará em diferentes definições. Todo mundo acredita que SaaS vai ter um grande impacto na indústria de software, porque o software como um serviço vai mudar a maneira de construir, vender, comprar e usar software. Para que isso aconteça, no entanto, os fornecedores de software precisam de recursos e informações sobre como desenvolver aplicativos SaaS eficazmente. Ainda assim, a maioria dos especialistas provavelmente concordaria em alguns princípios fundamentais que distinguem SaaS de software empacotado tradicional, por um lado, e sites simples, por outro. Falando mais simplesmente, software como um serviço pode ser caracterizado como "Software implantado como um serviço hospedado e acessado através da Internet".
Software como um serviço (SaaS) também é uma maneira de entregar aplicativos através da Internet como um serviço. Em vez de instalar e contratar manutenção no software, basta acessá-lo através da Internet, libertando-se de software complexo e do gerenciamento de hardware. Aplicações SaaS são às vezes chamadas de software baseado na Web, software on-demand, ou software hospedado. Seja qual for o nome, aplicativos SaaS são executados em servidores de um provedor de SaaS. O provedor gerencia o acesso ao aplicativo, incluindo a segurança, disponibilidade e desempenho. Clientes de SaaS não precisam de nenhum hardware ou software para comprar, instalar, manter ou atualizar. O acesso a aplicativos é fácil: você só precisa de uma conexão com a Internet. Este tipo de computação em nuvem oferece um único aplicativo através do navegador para milhares de clientes, e usa uma arquitetura multi-tenant (multi-inquilino ou multi-empresa). No lado do cliente, isso significa nenhum investimento inicial em servidores ou licenças de software; no lado do fornecedor, com apenas um aplicativo para manter, os custos são baixos em comparação com hospedagem convencional.
Salesforce.com é de longe o exemplo mais conhecido entre os aplicativos corporativos que fornecem soluções de CRM como SaaS, mas SaaS também é comum para aplicativos de RH, e já abriu seu caminho até a cadeia alimentar dos ERPs, através de fabricantes de software como a Workday. Além destes, alguns dos aplicativos de produtividade pessoal como o Google Apps e Zoho Office deixaram a sua marca no mercado.
Olhando no fundo do poço: SaaS
Vamos dar uma olhada mais profunda dos princípios básicos do SaaS, ou seja, o software implementado como um serviço hospedado e acessado através da Internet. Nós podemos chegar a duas categorias principais de SaaS:
1. Serviços de linha de negócios, ou seja, corporativos, oferecidos a empresas e organizações de todos os tamanhos. Serviços de linha de negócios são muitas vezes soluções de negócios grandes, customizáveis, destinadas a facilitar os processos de negócios, tais como finanças, gestão da cadeia de suprimentos, e relações com clientes. Estes serviços são normalmente vendidos aos clientes com base em assinaturas.
2. Serviços orientados para o consumidor, oferecidos ao público em geral. Serviços orientados para o consumidor, às vezes, são vendidos com base em uma assinatura, mas são muitas vezes fornecidos aos consumidores, sem nenhum custo, e são sustentados por publicidade.
Passar de oferecer software on-premise (instalado na empresa), para oferecer software como um serviço requer que os fornecedores de software mudem o seu pensamento em três áreas inter-relacionadas: modelo de negócio, arquitetura de aplicações, e estrutura operacional.
A maioria dos softwares continua a ser vendido da mesma forma como foi vendido por décadas. O cliente compra uma licença para usar o software e instalá-lo em hardware que possua, ou esteja sob o seu controle, com o fornecedor prestando apoio, como ditado pelos termos da licença, ou de um contrato de suporte. Em um sentido franco e honesto, a noção de uma "licença" pode parecer algo muito técnico: legalmente, o cliente está comprando apenas o direito de usar uma cópia do software, mas para efeitos práticos, é como se o cliente fosse o "dono" do software e pudesse usá-lo muitas vezes e durante o tempo que desejar. Já o modelo SaaS traz um novo conceito que é bem definido, ou seja, em vez de "possuir" software a título definitivo, os clientes são informados de que eles podem pagar por uma assinatura de software rodando em servidores de outra pessoa, ou seja, o software "vai embora", se parar de subscrever.
Vamos olhar para ele a partir de um ângulo diferente. Basicamente falando, existem três tipos de componentes na infraestrutura de TI em uma empresa:
3. O serviço profissional.
Destes, a partir de uma perspectiva de organização, o software é o aspecto mais importante, uma vez que o software é o principal componente, que ajuda a completar o objetivo da organização. Considerando que hardware e serviço profissional permitem que o software funcione e produza o resultado necessário para a organização. Em outras palavras, uma organização estaria feliz em adicionar um novo software ou a funcionalidade de um software já existente, sem qualquer adição ao hardware, se o hardware existente permitisse que o novo software / funcionalidade funcionasse de forma eficaz, mas nenhuma organização gostaria de acrescentar um novo hardware, se não houver necessidade prevista de um novo software.
Mas com a situação atual, maior parte do orçamento é gasto com o hardware e o profissional para executar o software. Isso deixa uma minoria do orçamento para o software, que irá se envolver mais diretamente na gestão da informação, que é o objetivo final de qualquer organização de TI.
Em oposição a isso, se a organização pode consumir este software a partir de um local remoto, que está a sendo gerido por um terceiro, fornecedor de SaaS, ela só tem de pagar a assinatura desse software; assim, um enorme pedaço do seu orçamento pode ser salvo de hardware e serviços profissionais, uma vez que o hardware e os serviços profissionais serão geridos pelo terceiro, fornecedor de SaaS. Isso lhes permitiria passar a maior parte do orçamento para serviços de software, o que teria impacto direto sobre o cumprimento do objetivo de sua organização. Além disso, aplicativos entregues através da Web ou através de clientes inteligentes colocam significativamente menor demanda em um computador desktop de aplicativos tradicionais, instalados localmente, o que permite ao cliente para estender o ciclo de vida da tecnologia de desktop de forma significativa.
De uma perspectiva do fornecedor de SaaS, nas aplicações SaaS que são construídas bem-dimensionadas, o custo operacional para cada cliente continuará a cair à medida que mais clientes são adicionados. Como isso está acontecendo, o provedor irá desenvolver multi-tenancy como uma competência essencial, levando a oferta de alta qualidade a um custo menor. Portanto, mesmo incorrendo em custos de hardware e de serviços profissionais embutidos pelos fornecedores de SaaS, os clientes podem ainda obter significativamente maior funcionalidade do software, para o mesmo orçamento de TI.
Uma pequena pergunta, isso não é um conto de fadas, como a subscrição do serviço de software incluiria também a gestão do servidor e o serviço profissional?
A resposta é não, e a mágica por trás é "Economia de Escala". Um fornecedor de SaaS com "x" número de clientes que subscrevem a um único, de serviço de software hospedado centralmente, permite que ao fornecedor atender a todos os seus clientes em um ambiente consolidado. Por exemplo, um aplicativo SaaS "line-of-business" (corporativo), instalado em um grupo de cinco servidores com balanceamento de carga, pode ser capaz de suportar 50 clientes de médio porte, o que significa que cada cliente só seria responsável por um décimo do custo de um servidor. Uma estrutura semelhante instalada localmente pode exigir de cada cliente dedicar um servidor inteiro para o aplicativo - talvez mais do que um, se o balanceamento de carga e alta disponibilidade forem preocupações.
É evidente que há um monte de benefícios para o consumidor (usuários finais), bem como para os prestadores de serviços. Podemos consolidar alguns dos pontos centrais como tais como os mencionados abaixo:
Perceber os benefícios do SaaS requer mudanças no pensamento por parte tanto do prestador como do cliente, e cabe ao provedor ajudar o cliente a fazer essa mudança.
Soa muito bem? Mas, como é que as aplicações vão ser feitas para que os usuários finais e os prestadores possam tirar o máximo benefício disso?
Muito parecido com qualquer outro software, SaaS também pode tirar proveito de Arquitetura Orientada a Serviços para permitir que aplicativos de software se comuniquem uns com os outros. Cada serviço de software pode agir como um prestador de serviços, expondo a sua funcionalidade para outras aplicações via "corretores" (brokers) públicos, e também pode atuar como um solicitante do serviço, incorporando dados e funcionalidades de outros serviços.
É importante entender que a metodologia SaaS requer que a arquitetura do sistema seja capaz de suportar as demandas de pico de uso, e a capacidade de processar um grande número de transações em um ambiente seguro e confiável. O software terá de cumprir certos critérios para trabalhar em um modelo como este. O aplicativo precisa ser bem projetado, para manter e prover escalabilidade e facilidade de uso semelhante a aplicativos desktop tradicionais.
Existem três pontos fundamentais que diferenciam um aplicativo Web SaaS (software vendido como serviço) bem sucedido, de um malsucedido:
Escalabilidade: Escala da aplicação significa maximizar a simultaneidade e usar recursos de aplicativos de forma mais eficiente; por exemplo, otimizando a duração de bloqueios a dados, independência de estado de sessão web, compartilhamento de recursos críticos, tais como threads e conexões de rede, dados de armazenamento em cache e particionamento de grandes bases de dados.
Eficiência em Multi-tenant (multi-inquilino ou multi-organizações): Multi-tenancy pode ser a mudança de paradigma mais significativa que um arquiteto acostumado a projetar aplicações isoladas, single-tenant tenha que fazer. Por exemplo, quando um usuário em uma empresa acessa as informações do cliente, usando um serviço de aplicação de CRM, a instância do aplicativo que o usuário se conecta pode acomodar dezenas, ou mesmo centenas, de usuários de outras empresas - tudo completamente abstraído a qualquer um dos usuários. Isso exige uma arquitetura que maximize a partilha de recursos entre os inquilinos, mas que ainda é capaz de diferenciar os dados pertencentes a diferentes clientes.
Configurável: se uma única instância da aplicação roda em um único servidor para acomodar os usuários de várias empresas diferentes ao mesmo tempo, você não pode simplesmente escrever código fonte para personalizar a experiência do usuário final - qualquer coisa que você faz para personalizar o aplicativo para um cliente vai muda-lo para outros clientes também. Em vez de personalizar o aplicativo no sentido tradicional, cada cliente usa metadados (dados que definem dados, páginas e relatórios em tempo de execução), para configurar a forma como a aplicação parece e se comporta para seus usuários. O desafio para o arquiteto SaaS é garantir que a tarefa de configuração de aplicativos seja simples e fácil para os clientes, sem incorrer em custos de desenvolvimento ou operação extra para cada configuração
Podem haver quatro maneiras de hospedagem uma aplicação na arquitetura SaaS. Estes são também chamados como os modelos de maturidade SaaS:
• Ad hoc / Custom: É semelhante ao modelo de provedor de serviços de aplicação tradicional (ASP) de entrega de software, que remonta à década de 1990. Cada cliente tem sua própria versão personalizada do aplicativo hospedado, e gerencia sua própria instância do aplicativo em servidores do provedor de hospedagem.
• Configurável: o fornecedor hospeda uma instância separada do aplicativo Web de cada cliente (ou inquilino). Ao contrário do anterior, cada instância é personalizada individualmente para o inquilino; a este nível, todas as instâncias usam o mesmo código fonte de implementação, e o fornecedor atende às necessidades dos clientes, fornecendo opções de configuração detalhadas, que permitem que o cliente mude a forma como a aplicação parece e se comporta, para os seus usuários. Apesar de serem idênticas umas às outras no nível do código, cada instância continua totalmente isolada de todos os outras.
• Configurável, multi-tenant-eficiente: o fornecedor executa uma única instância, que serve a cada cliente, com metadados configuráveis, proporcionando ao usuário uma experiência única e conjunto de recursos individualizados para cada um. Políticas de autorização e segurança garantem que os dados de cada cliente são mantidos separados do de outros clientes; e, do ponto de vista do usuário final, não há nenhuma indicação de que a instância do aplicativo está sendo compartilhada entre vários inquilinos. Esta abordagem elimina a necessidade de proporcionar tanto espaço de servidor quanto maior for o número de clientes, permitindo um uso mais eficiente dos recursos de computação do que o segundo modelo, o que se traduz diretamente em custos mais baixos. Uma desvantagem significativa desta abordagem é que a escalabilidade da aplicação é limitada.
• Escalável, configurável, multi-tenant-eficiente: o fornecedor hospeda vários clientes em uma "fazenda" ou farm, em inglês, (grupo redundante de servidores), com balanceamento de carga, de instâncias idênticas da aplicação web, com os dados de cada cliente mantidos separados, e com metadados configuráveis, proporcionando ao usuário uma experiência única e conjunto de recursos personalizados para cada cliente.
O segredo por trás das vantagens econômicas para SaaS é uma arquitetura que utiliza "personalização através de configuração" e particionamento de dados inteligente. Sem esses dois elementos, você provavelmente não será capaz de mover-se após o primeiro nível de maturidade (Ad hoc / Custom) e reconhecer os ganhos de eficiência de multi-tenancy.
A arquitetura básica de SaaS é bastante semelhante a qualquer aplicação baseada em SOA (Service Oriented Architecture). Provavelmente, algumas dos acréscimos necessários serão apenas duas camadas extras:
1. Serviços de metadados: O serviço de metadados oferece aos clientes o principal meio de personalizar e configurar o aplicativo para atender suas necessidades. Normalmente, isso pode ser categorizado em grandes áreas: interface com o usuário e identidade visual (branding), fluxo de trabalho e regras de negócios, além de extensões para controle de acesso ao modelo de dados.
2. Serviços de Segurança: O provedor de SaaS normalmente delega a cada inquilino a responsabilidade de criar e manter as suas próprias contas de usuário, um processo conhecido como a administração delegada. A administração delegada cria uma situação em que o cliente é responsável por criar contas de usuários individuais, mas o provedor tem de autenticá-los. Normalmente, o acesso a recursos e funções de negócio em um aplicativo SaaS é gerenciado por meio das funções que mapeiam funções (papéis) de trabalho específicas dentro de uma organização. A cada função é dada uma ou mais permissões, que permitem aos usuários atribuídos à função executarem ações de acordo com as regras de negócio relevantes.
Software empresarial de grande escala destina-se a ser utilizado por milhares de pessoas simultaneamente. Se você tem experiência em construção de aplicações corporativas deste tipo, você chegou a conhecer em primeira mão os desafios de criar uma arquitetura escalável. Para uma aplicação SaaS, a escalabilidade é ainda mais importante: você vai ter que suportar a base média de usuários de um único cliente, multiplicado pelo número total de clientes que você tem. Os aplicativos podem ser ampliados (movendo o aplicativo para um servidor maior, mais potente) ou escalado para fora (executando o aplicativo em mais servidores). Algumas das melhores práticas comuns para a concepção de aplicações SaaS, às quais os peritos costumam aderir são:
• Projete o aplicativo para ser executado de uma forma "sem estado" (stateless), com todos os dados de usuário e de sessão necessários armazenados, ou no lado do cliente, ou em um armazenamento distribuído, que é acessível a qualquer instância do aplicativo. Stateless significa que cada transação pode ser tratada por uma determinada instância tanto como por qualquer outra; um usuário pode transacionar com dezenas de instâncias diferentes durante uma única sessão, sem nunca saber.
• Projete o aplicativo para realizar operações I / O de forma assíncrona, para que o aplicativo possa realizar um trabalho útil enquanto espera pela finalização da entrada e saída.
• Reúna e compartilhe recursos, tais como threads, conexões de rede e conexões de banco de dados; isso ajuda a maximizar seus recursos de computação, e melhora a sua capacidade de prever o uso de recursos.
• Escreva suas operações de banco de dados de modo a maximizar a concorrência e minimizar o bloqueio exclusivo. Por exemplo, não bloqueie registros ao executar operações somente leitura.
Com base no modelo de maturidade escolhido para a aplicação SaaS, o esquema de banco de dados seria diferente. Mantendo tenancy em mente, o esquema de banco de dados pode ser:
Banco de dados compartilhado (Shared Schema) (para Ad Hoc/customizável e modelo de maturidade de Configuração)
Banco de Dados Particionado, esquema separado (para modelo de maturidade de Configuração e multi-tenant eficiente)
Bancos de dados separados para cada inquilino/cliente (para modelo de maturidade escalável e configurável, multi-tenant).
Cloud Computing e SaaS definitivamente vão ter um impacto enorme para a nossa atual forma de trabalhar. Consumir e expor todos os serviços de software através da rede HTTP permitiria à infraestrutura da organização de TI a depender inteiramente do meio Internet. Houve críticas e contra críticas para tal dependência. Se SaaS tornar-se totalmente funcional, ela provavelmente poderia resolver uma das principais preocupações da indústria de software, que está fazendo as empresas de desenvolvimento de aplicativos perder bilhões de dólares a cada ano, e que é a pirataria ilegal de software. Só o tempo vai dizer.
Este artigo, juntamente com qualquer código-fonte associado e arquivos, está licenciado sob a licença de código Projeto Open (CPOL)
Nenhuma biografia fornecida
Artigo Copyright 2009 by Bhaskardeep Khaund
Tudo o resto Copyright © CodeProject, 1999-2015
Bhaskardeep Khaund13-May-15 12:57
Bhaskardeep Khaund 13-May-15 12:57
Yes, you can go ahead and do that !!!
Mahsa Hassankashi23-Oct-14 8:43
Mahsa Hassankashi 23-Oct-14 8:43
Sandeep Ramani29-Mar-12 1:49
Sandeep Ramani 29-Mar-12 1:49
pashad28-Dec-11 20:31
pashad 28-Dec-11 20:31
sweep11123-Aug-11 23:24
sweep111 23-Aug-11 23:24
The Security of information sent over the internet is not mature enough to cope with this dependence on internet applications. This may be a major disadvantage.