Instituto de Inovação com TIC Cloud Computing: Quando a infra-estrutura se torna programável Rodrigo Assad [email protected] [email protected] tiwitter.com/rassad Roteiro WTF is Cloud Computing? Tipos de nuvens Tecnologias habilitadoras Onde estão os problemas Atividades proposta Como assim: infra-estrutura programável? ? WTF IS CLOUD COMPUTING? WTF is Cloud Computing? Cloud computing é um modelo que permite acesso ubíquo, conveniente, sobre demanda, para a rede ou a um pool de recursos computacionais (rede, storage, servidor, aplicações, serviços) que podem ser rapidamente provisionados e disponibilizados com um esforço mínimo de gerenciamento do provedor de serviços. http://csrc.nist.gov/groups/SNS/cloud-computing/ WTF is Cloud Computing? SaaS PaaS IaaS WTF is Cloud Computing? (SaaS): O consumidor usa a aplicação, mas não controla o sistema operacional, hardware e infra-estrutura de rede na qual esta funcionando. WTF is Cloud Computing? (PaaS): O consumidor usa o ambiente do hosting para as suas aplicações. O usuário controla a aplicação que roda no ambiente (e possivelmente tem algum controle sobre o ambiente), mas não controla o sistema operacional, hardware e rede. Tipicamente a plataforma vira um framework. WTF is Cloud Computing? (IaaS): O consumidor usa “os recusros fundamentais da computação” como consumo de processamento, storage, componentes de rede e middleware. O consumidor controla o sistema operacional, storage, deploy de aplicações, ….. – Mas não controla a infra-estrutura que controla a nuvem. TIPOS DE NUVENS Tipos de nuvens Public Cloud: em termos simples, uma nuvem publica é caracterizada por disponibilizar aos clientes um serviço através da infra-estrutura de um terceiro: – O termo “public” não significa gratis ou livre – Os dados dos usuários não estão públicos ou visíveis. – Fornecedores proveem um mecanismo de controle de acesso. – Nuvems publicas provem um custo escalável, efetivo para o deploy da aplicação. Tipos de nuvens Private Cloud: Em uma serviço privado, os dados e processos são gerenciados pela organização sem a restrição de banda, segurança, leis/regras que o usuários esta sujeito em uma clous publica Tipos de nuvens Community Cloud: uma cloud comunitária é controlada e utilizada por um grupo de organizações que tenham interesses comuns, como os requisitos de segurança ou funcionalidades.Os membros da nuvem compartilham informações e aplicações. Tipos de nuvens Hybrid Cloud: Em uma nuvem Hybrida temos a combinação de nuvens privadas e publicas.Normalmente utilizada para vender serviços de uma nuvem privada sub-utilizada. Ao mesmo tempo que mantém a as informações críticas disponíveis. Tipos de nuvens Essential Characteristics – – – – – Rapid Elasticity Measured Service On-Demand Self-Service Ubiquitous Network Access Resource Pooling Tipos de nuvens: Termos Interoperability Portability: Integration Service Level Agreement (SLA) Federation: Broker: Multi-Tenancy Cloud bursting Policy: Governance: Virtual Machine (VM): Application Programming Interface (API): TECNOLOGIAS HABILITADORAS API específica Hypervisor e software de virtualização Protocolos, plataformas e SO Hardware específico Tecnologias habilitadoras Servidores BLADE WebService, REST RPC P2P – JXTA, .... Filas e assimetria Tecnologias habilitadoras GRIDS – Open Grid Services Architecture WG (OGSA-WG) – OGF Open Cloud Computing Interface Working Group – OGF Document Series Tecnologias habilitadoras Hypervisors - virtual machine monitor (VMM) – XEN – Windows Azure – VM-WARE Tecnologias habilitadoras Google (GOOG) - Apps Engine Amazon.com (AMZN) - EC2 Microsoft (MSFT) - Windows Live Terremark Worldwide (TMRK) - The Enterprise Cloud Salesforce.com (CRM) - Force.com NetSuite (N) - Suiteflex Rackspace Cloud - cloudservers, cloudsites, cloudfiles Metrisoft - Metrisoft SaaS Platform ONDE ESTÃO OS PROBLEMAS Onde estão os problemas Arquitetura de software – A recomendação “era”: decomponha sua aplicação em pedaços e faça o deploy destes pedaços em servidores separados facilitando os requisitos nãofuncionais como escalabilidade, gerenciamento, disponibilidade, segurança, ... Onde estão os problemas E agora nas nuvens? Ficou mais fácil – Mantemos tudo separado e fazemos o deploy virtualizado e rápido – Se esta “metodologia” não poder ser aplicada então a aplicação não esta pronta para ir para as nuvens Onde estão os problemas Devido aos problemas e limitações da quantidade de processadores e memórias em sistemas X86 as aplicações tiveram que ser projetadas para funcionar em mais de uma CPU Onde estão os problemas E agora nas nuvens? High-performance computing Database management systems CPU-intensive processing Onde estão os problemas E agora nas nuvens? Scalability. Availability. Reliability. Security. Flexibility and agility. Serviceability. Efficiency. Os objetivos continuam os mesmos !!!! Onde estão os problemas A maioria das aplicações tem características comuns em relação a infra-estrutura. A regra dos 80-20 se aplica aqui. Onde estão os problemas E agora nas nuvens? Nas nuvens tudo passa a ser visto como um componente de uma solução. Sistemas Operacionais, Servidores de BD e etc passam a interagir com o sistema através de API´s. Onde estão os problemas E agora nas nuvens? O importante é o modelo não a imagem Diminuição de custo Definir API´s e GUI´s Ambientes customizados e preprontos para funcionar. Onde estão os problemas E agora nas nuvens? Deploy Suporte ao refatoramento e reutilização de ambientes Onde estão os problemas Crescimento horizontal Paralelização Onde estão os problemas E agora nas nuvens? Projetistas das nuvens precisam se preocupar com latência de redes de e tamanho dos pipes Projetistas precisam saber onde colocar cada componente Storages Otimizações Onde estão os problemas E agora nas nuvens? Utilze wrapers e pointers REST SOAP Onde estão os problemas E agora nas nuvens? Encriptação Autenticação Autorização Auditoria Domínios de segurança Controle de tráfego Onde estão os problemas Onde estão os problemas Billing Segurança Escalabilidade – São os atuais Multi-tenancy Segmentação,isolamento, governança, niveis de serviço, billing Segurança Primeiro precisamos entender riscos !! – Quais são? Segurança - governança Governança e riscos Legislação e propriedade da informação Gerenciamento do ciclo de vida de segurança Portabilidade e interoperabilidade Governança Governança Governança Governança Operacionais Operacionais Segurança - operações Segurança - operações Segurança tradicional Operação de datacenter Respostas a incidentes Segurança de aplicações Criptografia Identidades e gerenciamento de acesso virtualização Criando nuvens escaláveis Use o Hadoop (Map/Reduce) ou similares para realizar testes de performance em uma aplicação de armazenamento de dados Escalabilidade Facilidade de deploy Testes do CESAR para a Amazon Amazon para Amazon Armazenamento na amazon Como aplicar estes conceitos !!! IaaS Modelo mais simples Defina uma maquina virtual base Instale nelas os diversos ambientes que você deseja Proveja uma maneira de fazer um setup inicial eficiente Modelo mais simples Defina um modelo de mensuração para cobrar – Uso dedicado – Uso compartilhado – Uso sobre demanda Segurança Como fica? Quem irá garantir o ambiente? Como fica os softwares? Gerenciamento Este é o lado que salva o provedor Garantia dos SLA´s acertados Definição dos parâmetros de gerenciamento – Quais seriam? Como funciona Segurança VM VM VM VM Hypervisor Hardware VM Gerenciamento SLA Backup VM Billing Pool VM PaaS Solução PStorage A solução usto.re consiste de uma plataforma para cloud storage de baixo custo que permite a montagem de sistemas de armazenamento de massa, utilizando ou não a recursos já existentes permitindo a criação de nuvens públicas ou privadas. Visão geral A ferramenta usto.re pode ser vista como um conjunto de peers agrupados de acordo com o seu papel. – Este agrupamento dinâmico permite a criação de sistemas escaláveis – A garantia da disponibilidade e replicação dos dados é ofertada pelo sistema. Visão geral Super Peer Rendezou Relay Super Peer Rendezou Relay Super Peer Rendezou Relay Troca de Mensagens Server Server Proxy No-SQL Database Proxy SQL Database Troca de Mensagens Peer Peer Peer Peer Peer Peer Peer Peer Peer Visão arquitetural Acesso ao sistema TOMCAT Estrutura Tomcat-Base conf server.xml logs webapps bin ROOT myApp1 myApp2 work common lib Tomcat-users.xml JAR files WEB-INF web.xml lib JAR Files classes Clusters As soluções são implementadas em Hardware ou Software – Hardware • http://www.f5.com/products/availability.html • http://www.cisco.com/en/US/products/hw/switches/ps708/ind ex.html Clusters – Software • Microsoft NLB http://www.microsoft.com/technet/prodtechnol/windows2000s erv/deploy/confeat/nlbovw.mspx • Linux LVS http://www.linuxvirtualserver.org/ • Linux HA http://linux-ha.org/ Clusters Mas e aplicações WEB? Quais os problemas? – – – – O protocolo HTTP não tem sessão Usamos Cookies para isso Mas as sessões estão em um servidor Elas precisão ser replicadas • Banco de dados • Arquivos • Multicasting Clusters Implementando Alta Disponibilidade com o Tomcat – Replicação de sessão – Balanceamento de carga Bilhetagem Quanto custa a infra de TIC? • Definir uma estratégia para calcular a infraestrutura de TIC – Data bases – Servidores – Separação de custos Contigência Como usar cloud para contingência Programar para nuvens para montar infraestruturas redundantes e seguras para nuvens – Custo reduzido – Planejamento a solução – Valor entre 20% e 30% Gerenciamento Desafios para BD • Como escalar os sistemas de banco de dados a baixo custo? • Sistemas Multi-tenant? • Como tratar o (¨%¨&$%¨#$) do mapeamento objeto relacional? • Quando usar Bancos de Dados No-SQL e SQL? Escalabilidade com baixo custo • Redistribuir e crescer sistemas de banco de dados dinamicamente sem a necessidade de alteração no código da aplicação. • Diminuição da carga no SGBD’s • Crescimento elástico Escalabilidade com baixo custo • Sistema de provisionamento baseado nos princípios de cloud computing • Identificação da unidade de segmentação do SGBD • Fornecedor? Produto? Cliente? Escalabilidade com baixo custo Sistemas Multi-tenant APP APP APP APP APP Sistemas multi-tenant • Como escalar ? • Será que pensamos em sistema para funcionar em 100 maquinas ? • Como implementar ? • Será que posso utilizar o mesmo código desenvolvido? Multi-tenant Futuro APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP APP Multi-tenant – Como torna-lo em um serviço Segurança VM VM VM VM Hypervisor Hardware VM Gerenciamento SLA Backup VM Billing Pool VM Como tratar o mapeamento objeto-relacional • As chaves estrangeiras sumiram !! • Será mesmo? • Porque? • Quem disse para não utiliza-las? Quando utilizar No-SQL e SQL • Regra do 80-20 • Coloque as informações “valiosas” para o seu negócio no BD relacional, as demais, no no-sql • Bancos de dados no-sql escalam mais facilmente, porém a que custo? • Bancos de dados relacionais são mais custoso para escalabilidade, porém mais confiáveis. Certo? TUDO ISSO JUNTO Arquitetura Preliminar DATABASE - Uso de bancos de dados diferentes para tarefas diferentes, de forma que se possa utilizar o banco de dados mais adequado para determinada tarefa. MySQL para dados transacionais, utilizado por fornecer garantia de transações. Apache HBase, um mecaniso de armazenamento de grandes tabelas com alta taxa capacidade de atualização de linhas, em grande massa de dados. Utilizado em aplicações que armazenam grande quantidade de dados e que precisam de resposta em tempo real. Apache Cassandra, devido a sua capacidade de indexar grande quantidade de dados, é utilizado para buscas por dados em mensagens; Haystack para o armazenamento de fotos e anexos de emails; Arquitetura Preliminar CACHE - Criação de camadas de cache para tornar o acesso a dados repetitivos mais rápido. As camadas de cache irão se aplicar ao acesso a dados e ao acesso às páginas web; Memcached (memcached.org) - sistema de cache distribuído de memória. Usado para armazenar dados e aliviar a carga das consultas no banco de dados; Varnish Cache (varnish-cache.org) - sistema de cache para otimizar requisições de páginas, reduzindo a quantidade de acessos as servidor quando a mesma página é requisitada; DataWarehouse - Processamento e geração de dados consolidados multidimensionais. Os dados são processados previamente, tornando possível obter dados consolidados com um baixo tempo de resposta. Um exemplo do uso destas informações é indicações de amigos a serem adicionados a rede de amizade de um usuário; Arquitetura Preliminar WEBSERVER - Utilização de servidores separados para gerenciar conteúdo estático e dinâmico, em conjunto com soluções de cache e otimizações para geração das páginas. Servidores web de conteúdo estático serão separados dos servidores web de conteúdo dinâmico, com isto é possível isolar e otimizar cada tipo de servidor para o seu propósico, como também segmentar a rede; Utilização do Tornado Web Server nas funcionalidades que precisam de respostas em tempo real, como os feeds. Utilização de HipHop for PHP e seu web server para fornecer a maioria do conteúdo we. O HipHop é utilizado na transformação de páginas PHP em C++, podendo aumentar o desempenho na geração de páginas e reduzir o uso de CPU no web server em média 50%, a depender da página; Arquitetura Preliminar Apache Thrift para permitir a comunicação entre software construídos com linguagens heterogêneas, sejam estas aplicações locais ou remotas; Scriber para gerenciamento dos logs de diferentes origens; Utilização de Hadoop para o acesso a grande quantidade de dados distribuidos; Uma solução de gerenciamento de execução de tarefas, que podem ser distribuidas de acordo com a disponibilidade dos trabalhadores(workers). A proposta é utilizarmos o Gearman ou outra solução semelhante; Social Computing Environment Self-Deployable Application Factory Business Domain Creator Plugins Repository DSL Creation Groovy Interface Template Business Plugins Framewor ks Grails Templates Infrastruc. Plugins Self-Deployable Execution Platform Execution Environment Billing Monitoring Cloud App Deployment Security Provisioni ng Data Cloud Platform Business Manag. Não esquecer !!! Passo-a-passo ATIVIDADE PROPOSTA Atividade proposta Instale o XEN, Windows Azure ou VM-WARE Monte uma VM Linux ou Windows com o SGBD a sua escolha Escreva uma serie de scripts/programas que quando esta VM for colocada no ar ele procure um servidor e faca a configuração de rede Atividade proposta Utilizando a tecnologia qualquer tecnologia que seja implemente um gerenciador que permita a inclusão de 20 BD em paralelo como serviço. Atividade proposta Consiga repetir este procedimento no mínimo três vezes. Cloud Computing: Quando a infra-estrutura se torna programável Rodrigo Assad [email protected] [email protected] tiwitter.com/rassad Rodrigo Assad [email protected] 55 81 3425.4700 @rassad