Introdução ao Cloud Computing e o posicionamento da Microsoft neste paradigma Por: Nuno Filipe Godinho [email protected] Conteúdos Introdução ...............................................................................................................................2 Modelos de Disponibilização....................................................................................................4 Modelos de Utilização .............................................................................................................5 SaaS – Software as a Service ................................................................................................6 PaaS - Platform as a Service .................................................................................................7 IaaS - Infrastructure as a Service ..........................................................................................8 Questões Principais a colocar aos seus Fornecedores de Cloud? .............................................8 Será o Cloud Computing para mim? .......................................................................................11 Windows Azure e o Cloud Computing ....................................................................................14 Boas Práticas para a ISVs para a criação de SaaS bem sucedidas ...........................................18 Conclusão ...............................................................................................................................18 Introdução Recentemente colocaram-me um desafio para escrever um artigo relativamente ao Cloud Computing e o Windows Azure. Pareceu-me muito interessante e foi assim que apareceu este artigo, onde iremos falar sobre o Cloud Computing relativamente ao seu significado e, também às vantagens que o mesmo fornece aos seus consumidores, dependendo do tipo de Cloud que estão a utilizar. Iremos também ver como a Microsoft se colocou neste espaço e o que a sua oferta Windows Azure Service Platform, Office 365, Office Online, entre outros se posicionam no mercado. Muito se tem falado ultimamente em “Cloud”, “Cloud Computing”, e outras buzz words relacionadas como o SaaS, PaaS, IaaS, mas antes de começarmos a entrar nestas áreas é importante compreender, o que é afinal o cloud computing e aí encontramos diversas definições como por exemplo: Figura 1: Cloud Computing Origem: Blog Infosys “Computação baseada na Internet, onde recursos partilhados, software e informação são fornecidos para computadores e outros dispositivos a pedido, como acontece por exemplo com a electricidade” - Wikipedia “Evolução natural da adopção em massa da Virtualização, Arquitectura baseada em Serviços e do Utility Computing” – Wikipedia “Descreve um novo modelo de consumo e disponibilização para serviços de IT baseados na Internet (…) tipicamente envolve provisionamento dinâmico e escalável e muitas vezes recursos virtualizados via Internet” – Wikipedia Estas são algumas das definições que se podem encontrar no Wikipedia dos quais podemos retirar algumas funcionalidades principais como: Agilidade o Os utilizadores vêem a sua agilidade melhorada com o provisionamento dos recursos da sua infra-estrutura tecnológica de uma forma rápida e inesperada. API o Habitualmente os sistemas Cloud utilizam API’s REST o Esta é uma funcionalidade muito importante pois através dela poderemos não só utilizar a solução da forma como foi criada, mas também criarmos integração com outras soluções. Custo o Redução significativa dos custos sendo o CapEx (Capital Expenditures / Investimento Inicial) substituído pelo OpEx (Operational Expenditures / Custos Operacionais) Independência do Dispositivo e Localização o Possibilidade de o utilizador aceder ao software independentemente do dispositivo que estão a utilizar e da sua localização. o Habitualmente utilizando o Browser. Multi-Tenancy o Partilha dos recursos utilizados o Possibilita a partilha de custos proporcionando: Centralização da Infra-estrutura em locais com custos mais reduzidos Aumento da Capacidade nos Picos de utilização Melhoria da Utilização e Eficiência para sistemas que são habitualmente pouco utilizados. Fiabilidade o Devido à redundância da informação que é intrínseca ao Cloud Computing, conseguimos obter uma maior fiabilidade para os nossos recursos. Escalabilidade o Capacidade de escalar as soluções e os recursos de uma forma simples e rápida. Segurança o Aumento da segurança dos diversos recursos pois, para além de existirem diversos sistemas colocados em funcionamento, a maioria das empresas não têm, ou não têm as competências necessárias para os utilizarem da melhor forma, é-nos fornecido tudo isto como um Serviço, em que nós temos Acordos de Nível de Serviço (SLA’s) que nos permitem ficar mais confiantes na segurança dos nossos dados. Manutenção o Deixa de ser necessária a preocupação com os diversos elementos que fazem parte da manutenção de um sistema, como instalação de patches do sistema operativo, cópias de segurança e até a preocupação com as próprias máquinas. Mensurável o Acima de tudo uma das características muito importantes do Cloud Computing é serem mensurável, pois até para o sistema de pagamento por serviço e com base no que utilizamos é necessário que a mesma contenha diversas métricas para proporcionar um melhor controlo do IT. Modelos de Disponibilização Figura 2: Nuvem Pública vs. Nuvem Privada e Híbrida Origem: Site ESRI Existem diversos modelos de disponibilização de Cloud Computing, como são os seguintes casos: Public Cloud / Nuvem Pública o Descreve o Cloud Computing de uma forma tradicional (como é maioritariamente vista), onde os recursos são provisionados dinamicamente e com enorme detalhe, mas sempre de uma forma autogerida via Internet através de Aplicações ou Serviços Web, um parceiro que que nos cobra a um nível de detalhe na base do utility computing. Private Cloud / Nuvem Privada o Nuvem Privada ou Nuvem Interna foram descritas como novidades, contudo os conceitos são anteriores ao termo cloud em 40 anos. Basicamente é a capacidade de ter todas as capacidades de uma Cloud interna a uma organização. Community Cloud / Nuvem Comunitária o Poderá ser estabelecida entre organizações que tenham requisitos semelhantes e procurem partilhar infra-estrutura. o Exemplos deste tipo de modelo é a nuvem comunitária da Google "Gov Cloud". Hybrid Cloud / Nuvem Híbrida o Este termo tem sido utilizado como significando quer duas nuvens integradas (pública, privada, interna ou externa), quer a combinação de instâncias virtualizadas em conjunto com hardware real. o A definição mais correcta do termo é provavelmente a utilização de hardware físico e virtualizado fornecendo um serviço comum, pois habitualmente duas nuvens integradas é mais correctamente denominada de "combined cloud". Modelos de Utilização Além de todos estes modelos de disponibilização o Cloud Computing poderá também aparecer sobre diversos modelos de utilização, os muitas vezes denominados de “sabores da nuvem”, que são os seguintes: SaaS – Software as a Service PaaS – Platform as a Service IaaS – Infrastructure as a Service Figura 3: Modelos de Disponibilização Origem: SaaS Blog Figura 4 – Diferença entre os modelos de Utilização de Cloud Computing Origem: Windows Azure Training Kit SaaS – Software as a Service Mas afinal o que é o SaaS? “Software que é disponibilizado através da internet e/ou instalado para correr atrás da firewall numa rede local ou computador pessoal” Mas nem todos os softwares que são disponibilizados pela Internet são considerados SaaS, pois existem diversos “pilares” para que se /possa considerar uma solução como SaaS, e eles são: Acesso e Gestão da Solução através da Intenet Multi-Tenant Responsabilidade sobre a Monitorização e Gestão da infraestrutura é apenas do fornecedor Configurável Figura 5: Exemplo de Software como um Serviço E com este tipo de soluções o cliente obtém vantagens como: Pagamento baseado na utilização Acesso de qualquer local e qualquer dispositivo Ajuste do pagamento à medida das necessidades Escalabilidade imediata Segurança Fiabilidade APIs de integração Alguns dos principais fornecedores deste tipo de soluções são: Microsoft Exchange Online Sharepoint Online Office 365 ... o Google Gmail Google Apps ... o SalesForce.com CRM Origem: Soa.com ... o NetSuite NetSuite ERP NetSuite CRM NetSuite eCommerce ... PaaS - Platform as a Service O que é o PaaS? “Facilita a disponibilização de aplicações sem os custos e complexidade de comprar e gerir o hardware e Software de suporte, bem como as capacidades de provisionamento, proporcionando todas as capacidades necessárias para a construção e disponibilização de soluções e serviços inteiramente disponíveis via Internet” - Wikipedia As funcionalidade principais deste tipo de serviços são as seguintes: Disponibilização para Desenvolver, Testar, Disponibilizar, Suportar e Manter soluções tudo dentro do mesmo ambiente Ferramentas para criação disponibilizadas via Internet Arquitecturas Multi-Tenant Integração com Serviços e Bases de Dados Suporte para colaboração das equipas de desenvolvimento Instrumentação Alguns dos principais fornecedores deste tipo de serviços são: Microsoft Windows Azure SQL Azure Azure DataMarket Windows Azure AppFabric ... Google Google App Engine ... Amazon Amazon AWS ... SalesForce.com Force.com Database.com ... IaaS - Infrastructure as a Service O que é o IaaS? “Fornece uma infra-estrutura, tipicamente um ambiente virtualizado, como um serviço. (…) Tipicamente os fornecedores cobram por estes serviços numa base de utility computing e os recursos consumidos tipicamente reflectirão o nível de actividade. IaaS evoluiu das ofertas de servidores virtuais privados” - Wikipedia As funcionalidade principais deste tipo de serviços são as seguintes: Infra-estrutura disponibilizada como um serviço Pagamento na medida da utilização Pagamento ajustado às necessidades Alguns dos principais fornecedores deste tipo de serviços são: Amazon Amazon EC2 ... VMWare vCloud Express ... Microsoft Hyper-V Cloud Questões Principais a colocar aos seus Fornecedores de Cloud? A partir do momento que conhecemos melhor o que significa cloud e os seus diversos “sabores”, uma das questões que imediatamente surgem é “Como é que eu escolho o meu fornecedor?”, e para isso o melhor a fazer é ter um conjunto de questões preparadas para efectuar aos mesmos, sendo as mesmas aplicáveis aos diversos “sabores” de cloud. Questões como: Segurança É necessário ter em consideração que os dados são importantes, e mesmo que por vezes não pareça poderão sê-lo para alguém. Questões: Que tipo de infra-estrutura de segurança está a ser utilizada nos servidores de cloud para garantir a segurança dos meus dados? Que tipo de segurança é utilizado nas comunicações entre o cliente e o sistema? Política de Extracção de Dados É importante que todos compreendam que os dados são efectivamente do cliente, e não de quem os guarda e daí a importância deste aspecto. Questões: Qual a política de extracção de dados da empresa? Posso retirar os meus dados quando quiser? Quais os sistemas que me permitem fazê-lo? Disponibilidade dos Dados e Acordos de Nível de Serviço Um dos aspectos mais importantes das nossas soluções cloud é o facto de estarem permanentemente disponíveis e acessíveis, daí ser importante existirem acordos de nível de serviço para que possamos garantir estes aspectos. Questões: Qual é o uptime? 99,9%, 99,99%? ... Que tipos de acordos de nível de serviço fornecem? Localização dos Dados / Data Centers Embora quando falamos em cloud seja sempre num âmbito global, é importante manter em mente a localização dos dados, por diversas razões como a protecção de dados (não é permito que alguns dados se encontrem fora do país), velocidade de acesso (termos os dados o mais próximo possível), etc. Questões: Onde estão os vossos Data Centers? Posso associar os meus dados apenas a alguns deles? Suporte É sempre necessário saber quem e como contactar em caso de alguma coisa não estar a correr como o previsto. Questões: Quais os horários de suporte? Qual o tipo de suporte? Onde posso encontrar documentação? Existe uma base de dados de conhecimento sobre esta tecnologia/solução? Inovação Contínua Embora os serviços cloud sejam muito inovadores, necessitamos sempre de saber como é que o nosso fornecedor vai disponibilizar essas mesmas novidades. Questões: Qual é o ciclo de disponibilização de novidades? É sempre mantida a retro compatibilidade? Como posso pedir novas funcionalidades? O que acontece ao feedback enviado? Integração Sabendo de antemão que diversos serviços/soluções vão para a nuvem, como são os casos do email, CRM, Serviços de um ESB, etc., é sempre importante ter em mente que alguns continuarão, pelo menos num futuro imediato, dentro de casa (on-premises), e por isso é muito importante saber como poderemos efectuar a integração entre os mesmos. Questões: Quais sãos as APIs disponíveis para integração? Que tipos de protocolos utilizam? HTTP/HTTPS/TCP? Que tipo de comunicação? REST/SOAP? Qual a forma de pagamento deste tipo de integração? Usabilidade Ainda que alguns dos fornecedores de cloud continuem a ter sistemas algo complexos e “em bruto”, pois são criadas maioritariamente por engenheiros e tecnólogos, o fornecedor ideal fará a experiência de utilização muito mais interessante. Quando falamos em termos de usabilidade não será apenas ao nível das características do User Interface, mas também ao nível da usabilidade dos diversos sistemas que são disponibilizados, como serviços por exemplo Questões: Que tipo de painel de controlo é disponibilizado? Como é efectuado o provisionamento? Infra-estrutura Poderá não ser muito fácil de compreender, mas será bastante importante perceber qual a escalabilidade a da infra-estrutura, para verificar se a mesma poderá escalar até às suas necessidades. Questões? Qual é a infra-estrutura utilizada? Qual a capacidade máxima da infra-estrutura? Existem descontos para grandes volumes de informação, utilizadores ou dados? Referências Nada mais interessante para perceber o tipo de fornecedor com que estamos a falar do que falar com alguém que já trabalhe com o mesmo, e verifique quais as referências que os mesmos nos fornecem. A partir desses dados teremos muito melhor informação sobre como o serviço é na realidade. Questões: Quais as referências que já têm? Outras: Funciona sempre bem utilizar as redes sociais como Twitter, LinkedIn, Facebook, Buzz, e outros para perceber o que se vais dizendo sobre os mesmos. Planear os Custos Um dos pontos mais falados quando a abordar o tema de cloud tem a ver com os custos, pois ao mesmo tempo que o pagamento com base na utilização nos ajuda a gastar menos e apenas o que utilizamos, cria ao mesmo tempo uma dificuldade que tem a ver com a previsibilidade dos custos, que tão importante é em termos financeiros, e por isso mesmo este é um elemento importante a ter em conta. Questões: Existe alguma ferramenta para efectuar o planeamento de custos? Existe a possibilidade de testar antes de utilizar? Será o Cloud Computing para mim? Qualquer um de nós poderá tirar partido do Cloud Computing pois existem diversas áreas em que poderá ajudar-nos, mas existem 4 padrões em que o Cloud Computing é a resposta clara, sendo eles os seguintes: “On and Off” o o Situações em que é necessário colocarem algo muito específico em produção e altamente disponíveis. Exemplos são o processamento de uma determinada operação que requer muito poder computacional, mas é limitado no tempo. “Growing Fast” o o Situações em que seja necessário dar suporte a uma disponibilidade e processamento muito elevados e que crescem rapidamente ao longo do tempo. Exemplos deste padrão são as campanhas de Marketing Digital, que efectivamente têm um crescimento muito elevado e que é muito complicado efectuar uma planificação correcta das necessidades “Unpredictable Bursting” o o Situações em que existem picos de utilização que são de difícil previsão. Exemplos desta situação são, os canais de notícias que na altura dos ataques terroristas de 11 de Setembro tiveram uma enorme afluência e, não conseguiram dar suporte a todos os pedidos. “Predictable Bursting” o o Situação em que existam picos de utilização mas que os mesmos são previsíveis, e por isso é necessário que o poder computacionais seja ajustado na medida das necessidades. Exemplos desta situação são por exemplo os sites de compras online durante o período de Natal, em que recebem uma enorme afluência de pedidos que têm de ser respondidos. Windows Azure e o Cloud Computing Figura 6 – Windows Azure Service Platform Origem: Blogs MSDN Agora que sabemos exactamente o que esperar e o que perguntar aos fornecedores, iremos analisar a forma como a Microsoft se encontra a posicionar na área do cloud computing, e neste âmbito o posicionamento tem sido bastante específico nas áreas de SaaS e PaaS, não investindo tanto no imediato no IaaS como nos restantes modelos, pois conforme disse o Microsoft Western Europe DPE Lead, em entrevista, a Microsoft pensa que poderá ser muito mais diferenciadora ao nível do SaaS e PaaS, uma vez que ao nível do IaaS existem muitas empresas a posicionarem-se, em é considerada uma área de “commodity computing”, e não tanto de diferenciação, estando por isso a trabalhar melhor esta oferta para que seja também diferenciadora. Tendo esta estratégia em consideração conseguimos olhar para a oferta da Microsoft em 2 (duas) vertentes diferentes, que são o SaaS e o PaaS, estando o Windows Azure ao nível do PaaS. O Windows Azure tem vindo ao longo dos tempos a evoluir bastante e neste momento podemos contar com ofertas como: Windows Azure Compute ( Computação como um serviço) WebRole Serviço de Hosting Web (ASP.NET, PHP, ...) Hosted IIS 7 Worker Role Serviços que não são hosted na web VM Role Máquina virtual, mas diferente do IaaS, uma vez que esta é uma máquina virtual que não guarda estado, e é apenas uma outra forma de conseguir efectuar o instalação tendo acesso ao nível dos recursos que se encontram instalados na máquina, e não apenas ao nível do que se pode instalar em cima do Windows Azure OS, ou Cloud OS da Microsoft. Windows Azure Storage Storage as a Service que permite suportar Tabelas (NoSQL), Queues, Blobs e Drives Windows Azure AppFabric – Service Bus Serviço que nos permite efectuar 3 (três) tipos de operações, sendo elas: Tunneling Eventing Service Remoting Windows Azure AppFabric – Access Control Service Serviço de Autenticação e Autorização com suporte a Federação de Identidade de Claim-based Identities Suporte actual para federação: Active Directory Federation Services v2.0 Windows Live GoogleId YahooId Facebook Windows Azure AppFabric – Composite App Serviços para automatizar a instalação e gestão de aplicações compostas como uma entidade lógica simples, bem como o suporte para a disponibilização de Serviços Web e Workflows Windows Azure AppFabric – Caching Serviço de Caching em Memória para aplicações (Semelhante ao Windows Server AppFabric Caching) Windows Azure AppFabric – Integration Serviços para a integração de sistemas e outras capacidades de integração como o Business Activity Monitoring (BAM), Regras de Negócio, entre outros. Windows Azure Connect / Windows Azure Virtual Network Mecanismo simples e de fácil manutenção para criar conectividade entre elementos que se encontram na Cloud e On-Premise. Windows Azure CDN (Content Delivery Network) Disponibilização de conteúdos de uma forma altamente disponível Windows Azure Marketplace Windows Azure DataMarket MarketPlace de informação que fornece quer conteúdos públicos, quer informações premium comerciais de fácil consumo, descoberta e compra. Suportado pelo protocolo OData. Windows Azure AppMarket MarketPlace que incluí componentes, formação, serviços e soluções acabadas, desenhados para incorporarem outras soluções desenvolvidas na plataforma Azure Windows Azure Appliance Abordagem da Microsoft ao Private Cloud. Plataforma que poderá ser colocada nos datacenters dos próprios clientes mantendo todas as características actuais da plataforma Azure. Consiste no Windows Azure, SQL Azure e uma configuração específica de rede da Microsoft, storage e hardware de servidor. Em conjunto com as ofertas do Windows Azure a Microsoft também acrescentou as de SQL, como: SQL Azure Database Base de Dados disponibilizada como um serviço. Fácil de provisionar e disponibilizar Altamente Disponível e com tolerância a falhas Preparado para soluções Multi-Tenant Construído para a cloud Mantém a coerência em termos de competências necessárias que os produtos on-premise (SQL Server, ...) SQL Azure Data Sync Serviço de sincronização baseado na cloud construído em cima da Microsoft Sync Framework. Possibilita sincronização de dados bidireccional, bem como funcionalidades de gestão permitindo a fácil partilha de informações entre diversas bases de dados de SQL Azure em Data Centers diferentes. SQL Azure Reporting Permite uma utilização das ferramentas on-premise que já são conhecidas para mais facilmente desenvolver e disponibilizar relatórios na cloud. Disponibiliza: Funcionalidade de relatórios empresariais na Web. Suporte a múltiplas Origens de Dados Capacidade de disponibilização em diversos formatos Suporte a disponibilização de relatórios com os métodos push e pull. Altamente escalável Possibilita a criação de extensões às funcionalidades existentes SQL Azure Appliance Parte do Windows Azure Appliance Com base no que vimos anteriormente sobre o Cloud Computing e sobre aquilo que a Microsoft actualmente disponibiliza, podemos compreender que esta aposta é bastante séria e de elevada qualidade, pois com o Windows Azure Compute a dar suporte a toda a parte computacional, como disponibilização de Soluções Web (Web Role), Serviços (Worker Role) e outro tipo de soluções que tenham requisitos de Sistema Operativo mais específicos ou necessidade de outras soluções instaladas também na plataforma (VM Role), complementados com a oferta de Azure Storage que permite uma capacidade de armazenamento muito elevada e de alta disponibilidade e escalabilidade. Se juntarmos ainda os serviços de middleware do Azure AppFabric que nos permite ter serviços de Autenticação e Autorização (Access Control Service), serviços de disponibilização de conectividade às soluções (Service Bus), como disponibilização de pontos de contacto para serviços internos das empresas, ou serviços de um canal para disponibilização de Eventos, por forma a tornar as soluções Event Driven. E além de tudo isto se juntarmos a oferta de Base de Dados (SQL Azure) altamente escalável e disponível, com tolerância a falhas, etc., então conseguimos facilmente compreender que a maioria das soluções podem tirar um enorme partido do Cloud Computing e do Windows Azure. Boas Práticas para a ISVs para a criação de SaaS bem-sucedidas Por fim parece-me interessante enumerar um conjunto de boas práticas para que possamos criar soluções SaaS mais interessantes. Elas são as seguintes: 1. Adoptar e abraçar novos negócios e novas formas de disponibilizar as soluções. 2. Tirar partido da Web 2.0 para construir soluções melhores, mais apelativas e também colaborativas. 3. Adicionar valor às soluções bem como ao ambiente em redor, utilizando Web Services, APIs e Mashups. 4. Desenvolver uma estratégia para a integração da solução. 5. Disponibilização de novas funcionalidades frequentemente e incrementalmente. 6. Utilização de metodologias ágeis no processo de Investigação e Desenvolvimento. 7. Pensar na segurança logo desde o início do processo (SDLC) Conclusão Em resumo podemos ver então que o Cloud Computing não é apenas mais uma Buzz Word mas sim algo que poderá ajudar-nos bastante já, pois não estamos a falar de coisas que irão aparecer num futuro próximo mas sim algo que já existem e muitos de nós já estamos a utilizar. É sempre importante conhecer bem no que vamos apostar, e foi esse o objectivo deste artigo. E não se esqueçam, não deixem para amanhã quando podem começar a beneficiar hoje.