Alguns de vocês que usaram serviços da Web da Amazon se questionaram sobre a função de SaaS na computação em nuvem. A boa notícia é que é possível desenvolver SaaS sensível para Web, fácil e simples para a nuvem com base nesses serviços da Web. É possível vender o SaaS para uma base de clientes grande, como consultores ou engenheiros de produto, e reduzir as despesas iniciais de compra de software, oferecendo precificação menos dispendiosa on demand. Outra vantagem é que SaaS fornece atualizações em um local centralizado, eliminando a necessidade de fazer o download de correções e upgrades frequentes.
Neste artigo, mostrarei as semelhanças e as diferenças entre SaaS e computação em nuvem. Vou explorar a função que SaaS tem na computação em nuvem e como é diferente de outras formas de computação em nuvem, como computação utilitária e Plataforma como Serviço (PaaS). Também fornecerei categorizações de serviços e exemplos de aplicativos e falarei sobre a combinação de multilocação com virtualização. Em seguida, cobrirei problemas de recursos não utilizados e interoperabilidade e oferecerei algumas soluções para eles. Por fim, observarei os critérios necessários para testar o desempenho de SaaS na computação em nuvem e alguns problemas de segurança com SaaS.
SaaS está maduro e deve ser considerado como parte de um mashup ou como um plug-in para produtos PaaS ou serviços baseados na Internet. Fornece um aplicativo completo pronto, como para gerenciamento de recursos corporativos ou para gerenciamento de engenharia de fábrica, que é possível acessar a partir de um navegador da Web, independentemente de onde esteja localizado.
A maturidade do serviço de SaaS é atribuída ao software de plataforma virtual em servidores e discos. Os dois próximos níveis de maturidade de serviço inferiores são PaaS e Infraestrutura como Serviço (IaaS). O nível de maturidade de serviço mais inferior é serviço baseados na Internet. PaaS executa APIs e software de plataforma virtual em discos, enquanto que IaaS entrega uma infraestrutura de computadores completa por meio da Internet e fornece somente virtualização de servidor para usuários da Amazon EC2 e da IBM Blue Cloud, por exemplo. Exemplos de serviços baseados na Internet incluem Amazon S3, Amazon Simple DB e Google Base.
Exemplo 1: Gerenciamento de engenharia de fábrica
É possível desenvolver um SaaS maduro que uma empresa de engenharia de fábrica poderia usar para melhorar os ciclos operacionais de fabricação e proteger compra de mercadorias, vendas e transações contábeis. O SaaS poderia ajudar a determinar os processos de negócios a serem usados para planejamento de capacidade em fabricação de subcontrato. A base de clientes variaria do gerente da fábrica e do ente de qualidade até os controladores de linha e o COO e o CFO.
SaaS não é útil somente para que executivos acessem dados no ambiente de assinatura de pagamento on demand. Executivos podem tomar decisões críticas sobre finanças, engenharia de fábrica, ciclos operacionais de fabricação, gerenciamento de fornecimento e planejamento de capital de recursos humanos. SaaS pode ser usado como uma ferramenta de inteligência de negócios operacional para tomadores de decisões em uma planta. Por exemplo, ferramentas fornecidas por meio de SaaS poderiam equipar tomadores de decisões com conhecimento sobre quais objetivos de métricas devem ser atingidos para tempo de manipulação de material, ciclo operacional e tempo de mudança. As ferramentas também poderiam renderizar análise e oferecer diagnóstico das ações que tomadores de decisões devem realizar se uma métrica não estiver atingindo o alvo.
Exemplo 2: Ensino a distância e mais
É possível desenvolver um programa de treinamento como um SaaS. O modelo de SaaS da DigitalChalk tem como alvo universidades e clientes corporativos para entregar o conteúdo de treinamento dos mesmos (inclusive ensino a distância) por meio de seu Web site. Para desenvolver o SaaS, criou suas próprias Amazon Machine Images (AMIs) e usou Amazon S3, EC2 e SQS, em vez de um datacenter.
Para desenvolver outros serviços de SaaS, é possível usar IBM AMIs que EC2 executará. Elas incluem IBM DB2, IBM Informix, IBM Websphere Smash e IBM Lotus Web Content. Para expandir seu repositório de AMIs, é possível usar modelos de AMI pré-configurados ou criar uma AMI que contém seus aplicativos, bibliotecas, dados e configurações associadas.
A Microsoft® divide SaaS em duas categorias: serviços de linha de negócios e serviços orientados ao consumidor. Ambos são vendidos com base em assinatura. Os serviços de linha de negócios são soluções de negócios customizadas grandes para finanças, gerenciamento de cadeia de fornecimento e relações com clientes em um ambiente de assinatura de pagamento on demand (por exemplo, gerenciamento de engenharia de fábrica). Os serviços orientados ao consumidor têm como alvo consumidores sem custo nenhum e são suportados por propaganda.
Como essas categorias parecem ser limitadas, eu incluo mais duas categorias: serviços de recursos compartilhados e serviços de terceirização. Serviços de recursos compartilhados distribuem serviços entre um conjunto de usuários e servidores permitem que grandes empresas tenham capacidade de carga de pico a custos mais baixos, reduzindo a necessidade de datacenters internos maiores. Os serviços de terceirização permitem que negócios de pequeno e médio portes forneçam serviços com base em assinatura exteriorizando completamente sua infraestrutura de datacenter (por exemplo, ensino a distância).
Exceto para os serviços orientados ao consumidor, a lucratividade é obtida somente quando os negócios entregam serviços a uma base de clientes grande. Deve cobrir de forma adequada os altos custos de infraestrutura com uma pequena margem com assinatura de pagamento on demand barata — diferentemente de computação utilitária que cobra taxas de pagamento por uso. Além das assinaturas, o modelo de receita inclui taxas de indicação, taxas de transação, precificação baseada em consumo, precificação baseada em desempenho, margem de revendedor e compartilhamento de receita.
Sintonizar para desempenho ideal
Cada exemplo mostra que SaaS tem três atributos: capacidade de configuração, escalabilidade e eficiência com multilocação. Se o SaaS não tiver um ou mais desses atributos, é menos maduro. É possível combinar o melhor de multilocação e virtualização para maior flexibilidade para ajuste do sistema para desempenho ideal.
Multilocação refere-se à arquitetura de software em que uma única instância do software é executada como um SaaS, atendendo a diversas organizações clientes (arrendatários). Com uma arquitetura com diversos arrendatários, dados e configurações são virtualmente particionados para permitirem que cada organização cliente trabalhe com uma instância do aplicativo virtual. Ao consolidar recursos de TI em uma única operação, a multilocação permite economias de custo sobre as economias básicas de escala.
Uma desvantagem de multilocação é que pode incorrer memória e processamento de aplicativos substancial quando a base de clientes for pequena. Quando a base de clientes for grande, multilocação supera essa desvantagem reduzindo esse gasto adicional. Isso é realizado amortizando-o pelos clientes. Outro ponto negativo é que programação adicional pode ser necessária para construir um aplicativo eficiente para diversos arrendatários, aumentando o tamanho do gasto adicional.
Virtualização de servidores nas arquiteturas SaaS é mais do que particionar dados virtualmente e configuração em multilocação. Um benefício da visualização é que pode aumentar a capacidade do sistema para atender a demanda (como aumento de compras em dezembro), ajustando dinamicamente o número de servidores reais e o tamanho lógico de recursos, inclusive recursos de armazenamento e de banco de dados. Um ponto negativo é que servidores virtualizados não podem ser transferidos de um fornecedor para outro devido a problemas de interoperabilidade do software de virtualização.
Problema 1: Recursos não utilizados
SaaS em execução sobre serviços da Web tira proveito da Arquitetura Orientada a Serviços (SOA) para permitir que aplicativos de software se comuniquem uns com os outros. Cada serviço de software pode agir como um provedor ou solicitante de serviços. Um provedor de serviços de SaaS expõe sua funcionalidade a outros aplicativos por meio de brokers públicos. Um solicitante de serviço de SaaS incorpora dados e funcionalidade de outros serviços. Ambos aproveitam economias de escala na implementação e no gerenciamento de serviços de SaaS.
Os serviços da Web são normalmente fracamente acoplados, seja o recurso difícil de obter ou não. Para assegurar que recursos para provedores e solicitantes de serviços não sejam desperdiçados quando a capacidade aumenta ou diminui on demand, crie um serviço da Web com um comutador de acoplamento para suplementar aplicativos SaaS. Esse comutador inverteria para tight coupling de loose coupling quando o serviço da Web recebesse um alerta de que seu recurso correspondente atingiu determinados níveis de desperdício.
Problema 2: Problemas de interoperabilidade
Se seu SaaS for ciente da Web e fácil e simples para a nuvem, a empresa pode achar difícil executar o mesmo aplicativo SaaS com diferentes fornecedores que podem ter, por exemplo, diferentes formatos para importar e exportar dados. Considere este cenário: Há dois aplicativos SaaS para os quais deseja efetuar mashup. Um usa APIs padrão de mercado em execução no ambiente de computação em nuvem de um fornecedor. O outro está executando APIs proprietárias no ambiente de computação em nuvem de outro fornecedor. Esse mashup não funcionará sem alguma reengenharia.
Primeiro, você deve abordar a portabilidade entre os dois fornecedores de computação em nuvem. Eles já permitem comunicação entre os ambientes ou precisam organizar os dados entre eles? Os formatos e lógica dos dados são compatíveis entre os dois tipos de APIs ou é necessário reformatar dados ou alterar a lógica entre os dois aplicativos? Atualmente, não há nenhum padrão para APIs para importar e exportar dados. No entanto, a IBM e a Amazon estão trabalhando juntas para tornar a interoperabilidade e os mashups resultantes mais fáceis de projetar e gerenciar.
Testar faz parte de qualquer desenvolvimento de software para assegurar que a computação em nuvem e SaaS sejam aprovados. É necessário realizar testes de serviços e aplicativos SaaS para melhorar a qualidade dos serviços. Para iniciar os testes, simule o ambiente do usuário final, como diversos navegadores da Web, sistemas operacionais e conectividades de rede. Caso contrário, você começará mal. Por exemplo, um navegador da Web pode ter recursos que outro não tem. A falta de recurso pode afetar a maneira que um usuário acessa os serviços SaaS na computação em nuvem ou a maneira como os recursos não utilizados são protegidos.
Em seguida, teste as vulnerabilidades de multilocação, como se o usuário A pode personificar o usuário B devido a defeito de software. teste as vulnerabilidades de virtualização, como se o servidor A pode personificar o servidor B. Outras áreas que devem ser testadas são até que ponto um usuário pode escalar o uso sem sobrecarregar o sistema, qual é a melhor maneira de gerenciar chaves privadas em um ambiente de pagamento à medida que você segue e como grandes quantias de dados na nuvem devem ter backup efetuado e devem ser restaurados. Apesar de controle de versão e gerenciamento de mudanças não serem atividades do cliente no modelo SaaS, devem ser testados para assegurar que possam ser verificados de forma adequada. Também é importante se SaaS atende as necessidades verticais, já que SaaS é um aplicativo horizontal.
Lembre-se de que um produto SaaS na nuvem tem condições de implementação de uso diferentes de um produto implementado em um ambiente típico de datacenter. Portanto, os requisitos de teste para o aplicativo baseado em nuvem será diferente também. Por exemplo, produtos SaaS podem ser alterados sem que o cliente saiba. Releases em modelos de implementação de SaaS tendem a ser mais frequentes do que em outros modelos, pois o gerenciamento centralizado torna as atualizações menores mais fáceis; portanto, problemas de suporte ao cliente para produtos SaaS tendem a ter um ciclo mais curto. Ainda assim, esse ciclo de release curto também pode causar muito impacto para o cliente se as mudanças ocorrerem ao acaso sem testes suficientes.
É caro comprar, manter e operar a infraestrutura de teste. Não é barato configurar testes funcionais, de regressão, de desempenho e de tensão enquanto a infraestrutura de SaaS cresce. Antes de cada release final de um produto SaaS, será necessário configurar ambientes de teste Alfa e Beta para obter feedback de clientes em potencial. Portanto, é importante planejar e obter uma grande participação no mercado para obter lucros de assinaturas baratas, enquanto os altos custos de teste são absorvidos.
Atividades de recuperação de desastre, gerenciamento de chave privada e divulgação de controles são interesses de segurança no ambiente de SaaS na infraestrutura de pagamento on demand. Sem planejamento e implementação apropriados, os custos de garantias de segurança podem superar muito as vantagens econômicas de SaaS e de computação em nuvem.
Planejar para uma recuperação de desastre tornou-se um problema muito importante após a S3 e EC2 da Amazon terem sofrido uma indisponibilidade de três horas no início de 2008. Durante a indisponibilidade, os clientes perderam oportunidades de vendas e executivos não podiam acessar informações críticas para os negócios. Esses impactos superam muito a recuperação de dados e os créditos de serviço fornecidos por um SLA.
Em vez de esperar que uma indisponibilidade ocorra, os clientes devem realizar testes de segurança por conta própria para verificar com que eficiência o provedor de serviços de SaaS pode recuperar dados. O teste é simples: Apenas envie um e-mail ao provedor para obter seus dados armazenados e verifique quanto tempo leva até o provedor recuperá-los. Se levar muito tempo para recuperá-los, pergunte ao provedor a razão e questione quanto você obteria em crédito de serviço em diferentes cenários. Se levar um tempo muito curto para recuperar mesmo para uma enorme quantia de dados, você verifica então se os checksums podem corresponder aos dados originais. Pode ser necessário testar a recuperação durante os horários de pico e fora de pico.
Uma área de teste de segurança que deve ser realizado é testar um algoritmo confiável para criptografar os dados em seu computador local que está observando e, em seguida, tentar acessar dados em um servidor remoto que é possível ver na nuvem usando as chaves de decriptografia. Se não for possível ler os dados quando tiver acessado os mesmos, as chaves de decriptografia estão corrompidas ou o servidor os rejeita porque o fornecedor está usando seu próprio algoritmo de criptografia. Pergunte ao fornecedor qual algoritmo de criptografia ele está usando.
Outro problema é os problemas em potencial com dados na nuvem. Para proteger os dados, você pode querer gerenciar suas próprias chaves privadas. Verifique com o fornecedor sobre gerenciamento de chaves privadas. A Amazon fornecerá o certificado se você se inscrever para ele.
Divulgação de atividades de controle
Nem todos os provedores estão dispostos a divulgar com que eficiência eles gerenciam as atividades de controle no ambiente de SaaS. Alguns podem ter uma política de auditoria de suas atividades de controle.
Pergunte a seu provedor se ele está certificado com SAS 70 Tipo II com relação à divulgação de atividades de controle e processos para clientes. Essa certificação assegura documentação abrangente de gerenciamento de mudanças, requisitos de backup e recuperação, requisitos de recuperação de desastre e requisitos de segurança no nível físico do datacenter, incluindo acesso e datacenters espelhados na computação em nuvem. Se ele não for certificado, então, pergunte ao provedor como é possível obter as informações sobre como ele gerencia as atividades de controle, se possível. A certificação não é obrigatória se for possível ficar satisfeito com a qualidade dos procedimentos de seu provedor. A Amazon postou seus processos de segurança em um artigo que é possível localizar na seção Recursos abaixo.
Este artigo ajuda a planejar o desenvolvimento e gerenciamento de SaaS na computação em nuvem. As demandas de usuários em potencial por serviço com assinaturas baratas na infraestrutura de pagamento on demand apresentam um desafio para desenvolvedores e outros membros de uma equipe de projeto. Estar ciente e resolver os problemas de desenvolvimento e gerenciamento de SaaS, inclusive problemas de segurança em potencial, pode tornar as experiências de sua equipe livre de problemas. É possível realizar isso usando o IBM Rational Web Developer WebSphere Software e o IBM Rational ClearQuest para rastreamento de defeito e aplicativo de SaaS que está sendo desenvolvido com IBM AIMs (consulte Recursos para obter informações adicionais).
Aprender
- Leia sobre processos de segurança da Amazon.
- "Work with Web services in enterprise-wide SOA series" por Judith M.
Myerson oferece informações sobre como trabalhar com serviços da Web em SOAs corporativas.
- Navegue pela séria da Judith, Use SLAs in a Web services context, para obter detalhes sobre acordos de nível de serviço.
- Quer informações adicionais sobre ferramentas Ajax?
Leia sobre elas em "Survey of Ajax tools and techniques" (Gal Shachor, Yoav Rubin, Shmulik
London, Shmuel Kallner, developerWorks, julho de 2007).
- Leia "Tight coupling Web services in the SOA" (developerWorks, jan 2008).
- Leia The Complete Book of Middleware da Judith, que foca os princípios e prioridades essenciais de design de sistema e enfatiza os novos requisitos surgidos pelo crescimento de sistemas de e-commerce e integrados distribuídos.
- Adquira o insight de negócios e o know-how técnico para assegurar integração bem sucedida de sistemas lendo Enterprise Systems Integration, Second Edition.
- Leve sua organização para o futuro com RFID in the Supply Chain, que explica os processos de negócios, problemas operacionais e de implementação, riscos, vulnerabilidades e segurança e privacidade.
- A área de conteúdo de SOA e serviços da Web do developerWorks
oferece uma visão geral de SOA e como a IBM pode ajudá-lo a chegar lá.
- Fique atualizado com os eventos técnicos e webcasts do developerWorks.
Obter produtos e tecnologias
- Veja como o IBM
Rational Web Developer for WebSphere Software para gerenciamento de arquitetura, o
IBM Rational ClearQuest para gerenciamento de mudanças e releases e o IBM Rational Functional Tester Plus para gerenciamento de qualidade podem ajudar no desenvolvimento de aplicativos Ajax e outros.
Essas ferramentas da IBM ajudam a aumentar sua produtividade, reduzindo o tempo de teste e os custos de laboratórios de teste em sua empresa.
-
Produtos de avaliação da IBM para download: Desenvolva seu próximo projeto de desenvolvimento com software de avaliação da IBM, disponível para download diretamente do developerWorks.
Discutir
-
Blogs do developerWorks:
Envolva-se na comunidade do developerWorks.
Judith M. Myerson é engenheira e arquiteta de sistemas. Suas áreas de interesse incluem sistemas corporativos, tecnologias de middleware, tecnologias de banco de dados, computação em nuvem, políticas de limites, segmentos de mercado, gerenciamento de redes, segurança, tecnologias RFID, gerenciamento de apresentação e gerenciamento de projeto.