Universidade Federal do Ceará Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios Flávio R. C. Sousa Leonardo O. Moreira Javam C. Machado ERCEMAPI 2009 Agenda Introdução Conceitos Definição e Modelos Tecnologias Aplicações Desafios Conclusão Computação em nuvem Billing Storage Utility Computing Web 2.0 Uhm, I am not quite clear…Yet another buzzword..? Computação em nuvem Serviços básicos e essenciais que são todos entregues de uma forma completamente transparente Serviços de utilidade pública Água, gás, eletricidade e telefone Modelo de pagamento baseado no uso Cobrança de acordo com as diferentes políticas para o usuário final Computação em nuvem A mesma idéia de utilidade tem sido aplicada no contexto da informática Cloud Computing ou Computação em Nuvem Computação em nuvem Uma tendência recente de tecnologia Proporcionar serviços de TI sob demanda com pagamento baseado no uso Tendências anteriores à computação em nuvem foram limitadas: A uma determinada classe de usuários Focadas em tornar disponível uma demanda específica de recursos de TI, principalmente de informática Computação em nuvem Pretende ser global e prover serviços para as massas Usuário final que hospeda seus documentos pessoais na Internet Empresas que terceirizarão toda a parte de TI para outras empresas Nunca uma abordagem para a utilização real foi tão global e completa Não apenas recursos de computação e armazenamento são entregues sob demanda Mas toda a pilha de computação pode ser aproveitada na nuvem Computação em nuvem Nuvem É uma metáfora para a Internet ou infra- estrutura de comunicação entre os componentes arquiteturais, baseada em uma abstração que oculta a complexidade de infra-estrutura Cada parte desta infra-estrutura é provida como um serviço Estes serviços são normalmente alocados em datacenters, utilizando hardware compartilhado para computação e armazenamento. Computação em nuvem SLAs Web Services Virtualization Computação em nuvem Para utilizarem os serviços, os usuários necessitam: Um navegador e acesso a Internet Os recursos estão disponíveis na Internet As máquinas dos usuários não necessitam ter altos recursos computacionais Todo hardware pode ser utilizado para realizar alguma tarefa que seja adequada ao seu poder de processamento Novos recursos podem ser adicionados a fim de aumentar o poder de processamento e cooperar com os recursos existentes CONCEITOS Computação em nuvem Evolução dos serviços e produtos de TI sob demanda Utility Computing Objetivo da Utility Computing Fornecer os componentes básicos como: armazenamento, CPUs e largura de banda de uma rede como uma mercadoria através de provedores especializados com um baixo custo unitário Utility Computing Os usuários não precisam se preocupar: Escalabilidade A capacidade fornecida é praticamente infinita Disponibilidade Acesso a qualquer momento Desempenho Tempos de resposta são quase constantes Backups Responsabilidade do provedor Utility Computing Pagamento pela utilização Sem investimentos iniciais em TI O custo cresce de forma linear e previsível com o uso Dependendo do modelo do negócio O provedor de serviços pode repassar o custo de armazenagem, computação e de rede para os usuários finais Já que é realizado a contabilização do uso Utility Computing Suponha que você tenha um requisito para operar 100 servidores por três anos Opções: alugar ou comprar? Alugar 0.40 dólares por instância/horas Cálculo: 100 servidores * $ 0.40 por instância/horas * 3 anos * 8760 horas/ano = $ 1.051.200 Utility Computing Comprar Custo para comprar cada servidor: $ 750 dólares Dois funcionários para administrar os servidores pagando 100.000 dólares por ano. Os servidores exigem 150 watts cada e o custo da eletricidade é de 0.10 por quilowatt-hora O custo anual para operar os 100 servidores é de 13.140 dólares Utility Computing Comprar e “administrar”: Cálculo 100 servidores * $ 750 + 3 anos * $ 13.140 eletricidade/ano + 3 anos * 2 funcionários * $ 100.000 salários/ano = $ 714.420 Comparativo Alugar: $ 1.051.200 Comprar: $ 714.420 Utility Computing Comparativo Se a utilização for de 100% Melhor comprar Se a utilização for de 68% ou menor Melhor alugar Mesmo considerando que Os números apresentados são apenas estimativas Nem todos os custos foram considerados Pode-se verificar que modelo de Utility Computing é preferível em muitos casos Computação em nuvem O NIST (National Institute of Standards and Technology) define computação em nuvem como um paradigma em evolução Definições, casos de uso, tecnologias, problemas, riscos e benefícios sobre nuvem serão redefinidos e evoluirão com o tempo Modelo de nuvem do NIST é composto: Cinco características essenciais Três modelos de serviço Quatro modelos de implantação Computação em nuvem Definição (NIST) Computação em nuvem é um modelo que possibilita acesso, de modo conveniente e sob demanda, a um conjunto de recursos computacionais configuráveis que podem ser rapidamente adquiridos e liberados com mínimo esforço gerencial ou interação com o provedor de serviços Definição (Berkeley) A computação em nuvem é um conjunto de serviços de rede ativados, proporcionando escalabilidade, qualidade de serviço, infra-estrutura barata de computação sob demanda e que pode ser acessada de uma forma simples e pervasiva Modelos de Serviços SaaS O modelo de SaaS proporciona softwares com propósitos específicos que são disponíveis para os usuários através da Internet Os softwares são acessíveis a partir de vários dispositivos do usuário por meio de uma interface thin client como um navegador Web SaaS O usuário não administra ou controla a infra-estrutura subjacente Rede, servidores, sistemas operacionais, armazenamento, ou mesmo as características individuais da aplicação Exceto configurações específicas Os desenvolvedores se concentram em inovação e não na infra-estrutura Possibilita o desenvolvimento rápido de softwares SaaS O Software está na Web Pode ser acessado pelos usuários de qualquer lugar e a qualquer momento Permite mais integração Entre unidades de uma mesma empresa Outros serviços de software Novos recursos podem ser incorporados automaticamente aos softwares sem que os usuários percebam estas ações Torna a evolução e atualização transparente dos sistemas. SaaS O SaaS reduz os custos Dispensa a aquisição de licenças de softwares Exemplos de SaaS CRM (Customer Relationship Management) on- line do Salesforce Google Docs PaaS Oferece uma infra-estrutura de alto nível de integração para implementar e testar aplicações na nuvem O usuário não administra ou controla a infra-estrutura subjacente Rede, servidores, sistemas operacionais ou armazenamento Mas tem controle sobre as aplicações implantadas e as configurações de aplicações hospedadas nesta infra-estrutura PaaS A PaaS fornece: Sistema Operacional Linguagens de Programação Ambientes de Desenvolvimento Auxilia na implementação de softwares Contém ferramentas de desenvolvimento Colaboração entre desenvolvedores. PaaS Os desenvolvedores dispõem de ambientes escaláveis Mas eles têm que aceitar algumas restrições sobre o tipo de software que se pode desenvolver Limitações que o ambiente impõe na concepção das aplicações Utilização de banco de dados do tipo chave- valor ao invés de banco de dados relacionais. PaaS Permite aos usuários utilizarem serviços de terceiros: Uso do modelo de suporte no qual os usuários se inscrevem para solicitações de serviços de TI ou de resoluções de problemas pela Web Pode-se descentralizar uma certa carga de trabalho e responsabilidades nas equipes de TI das empresas Exemplos de PaaS Google App Engine Aneka IaaS Responsável por prover toda a infra- estrutura necessária para a PaaS e o SaaS O principal objetivo é tornar mais fácil e acessível o fornecimento de recursos: Servidores, rede, armazenamento Recursos de computação fundamentais para construir um ambiente de aplicação sob demanda Podem incluir Sistemas Operacionais e Aplicativos IaaS Possui algumas características: Interface única para administração da infra- estrutura API para interação com hosts, switches, balanceadores e roteadores Suporte para a adição de novos equipamentos de forma simples e transparente IaaS O usuário não administra ou controla a infra-estrutura da nuvem Tem controle sobre os sistemas operacionais, armazenamento e aplicativos implantados seleciona componentes de rede, tais como firewalls Virtualização A infra-estrutura pode escalar dinamicamente, aumentando ou diminuindo os recursos de acordo com as necessidades das aplicações IaaS Do ponto de vista de economia e legado Ao invés de comprar novos servidores e equipamentos de rede para a ampliação de serviços, pode-se aproveitar os recursos ociosos disponíveis Adicionar novos servidores virtuais à infraestrutura existente de forma dinâmica Exemplos de IaaS: O Amazon EC2 (Elastic Cloud Computing) Eucalyptus (Elastic Utility Computing Architecture Linking Your Programs To Useful Systems) Modelos de Implantação Privado Público Híbrido Comunidade Privado A infra-estrutura de nuvem é utilizada exclusivamente para uma organização Nuvem local ou remota Administrada pela própria empresa ou por terceiros São empregados políticas de acesso aos serviços Gerenciamento de redes Configurações dos provedores de serviços Utilização de tecnologias de autenticação e autorização Público A infra-estrutura de nuvens é disponibilizada para o público em geral Acessível por qualquer usuário que conheça a localização do serviço. Não podem ser aplicadas restrições de acesso Gerenciamento de redes ou aplicar técnicas de autenticação e autorização Comunidade Ocorre o compartilhamento por diversas empresas de uma nuvem A nuvem é suportada por uma comunidade específica que partilhou seus interesses A missão, os requisitos de segurança, política e considerações sobre flexibilidade Este modelo de implantação Pode existir localmente ou remotamente Pode ser administrado por alguma empresa da comunidade ou por terceiros Híbrido Existe uma composição de duas ou mais nuvens Privadas Pública Comunidade Nuvens híbridas são consideradas como entidades únicas Ligadas por uma tecnologia padronizada ou proprietária Permite a portabilidade de dados e aplicações Características Essenciais Self-service sob demanda Amplo acesso Pooling de recursos Elasticidade rápida Serviço medido Self-service sob demanda O usuário pode adquirir unilateralmente recursos computacionais Tempo de processamento no servidor ou armazenamento na rede Na medida em que necessite Sem precisar de interação humana com os provedores de cada serviço Self-service sob demanda O hardware e o software dentro de uma nuvem Podem ser automaticamente reconfigurados e orquestrados Modificações são apresentadas de forma transparente para os usuários com perfis diferentes Podem personalizar seus ambientes computacionais Instalação de software e configuração de rede para a definição de determinados privilégios Amplo acesso Recursos são disponibilizados por meio da rede e acessados através de mecanismos padronizados possibilitam o uso por plataformas Thin ou Thin Client Celulares, Laptops e PDAs Amplo acesso A interface de acesso a nuvem não obriga os usuários a mudar suas condições e ambientes de trabalho Linguagens de Programação e Sistema Operacional Os softwares clientes instalados localmente para o acesso à nuvem são leves Como um navegador de Internet Pooling de recursos Os recursos computacionais do provedor são organizados em um pool para servir múltiplos usuários Modelo multi-tenant Diferentes recursos físicos e virtuais são dinamicamente atribuídos e ajustados de acordo com a demanda dos usuários Pooling de recursos Os usuários não precisam ter conhecimento da localização física dos recursos computacionais Podendo somente especificar a localização em um nível mais alto de abstração País, estado ou datacenter Elasticidade rápida Recursos podem ser adquiridos de forma rápida e elástica Em alguns casos automaticamente Escalável com o aumento da demanda Liberados na retração dessa demanda Os recursos disponíveis para uso Parecem ser ilimitados Podem ser adquiridos em qualquer quantidade e a qualquer momento Elasticidade rápida A virtualização ajuda na característica de elasticidade rápida na computação nuvem Cria várias instâncias de recursos requisitados utilizando um único recurso real A virtualização é uma maneira de abstrair características físicas de uma plataforma computacional dos usuários Exibe outro hardware virtual e emula um ou mais ambientes que podem ser independentes ou não Serviço medido Sistemas em nuvem automaticamente controlam e otimizam o uso de recursos por meio de uma capacidade de medição A automação é realizada em algum nível de abstração apropriado para o tipo de serviço Armazenamento, processamento, largura de banda e contas de usuário ativas O uso de recursos pode ser monitorado e controlado Transparência para o provedor e o usuário Serviço medido Para garantir o QoS (Quality of Service) Níveis de acordo de serviço SLA (Services Level Agreement) O SLA tem informações sobre os níveis Disponibilidade Funcionalidade Desempenho Faturamento Penalidades Papéis na nuvem Arquitetura Baseada em camadas Cada uma trata de uma particularidade Divide logicamente os componentes Hardware Software Agrupa componentes por interesse Gerenciamento e monitoramento independente Arquitetura Fornece: Escalabilidade Reusabilidade Flexibilidade Substitui ou adiciona recursos sem afetar outras camadas Independência Arquitetura Infra-estrutura física Contém: Datacenters Clusters Desktops Outros recursos de hardware Recursos heterogêneos Flexibilidade de agregação de novos recursos a medida que se tornem necessários Camada de middleware Gerencia a infra-estrutura física Fornece o núcleo lógico da nuvem Contém: Negociações de QoS Gerenciamento dos SLA Serviços de cobrança Preço Serviços de virtualização Outros serviços Camada de desenvolvimento Fornece suporte para a construção das aplicações Contém: Ferramentas Ambientes de desenvolvimento Os ambientes possuem: Interfaces Web 2.0 Marshups Suporte a workflows Bibliotecas Linguagens de programação Camada utilizada por usuários “experientes” Outras camadas Camada de aplicação Camada utilizada pelos usuários finais Disponibiliza as aplicações implantadas na nuvem Camada de gerenciamento e adaptações Camada opcional Fornece adaptação as soluções em nuvem automática semi-automática Diminui esforços humanos para gerenciar arquiteturas de nuvem TECNOLOGIAS MapReduce Programação Funcional Operações funcionais não modificam as estruturas de dados Sempre criam novas Os dados originais permanecem na forma não modificada Os fluxos de dados estão implícitos no programa workflows Ordem de operações não importa Programação Funcional fun foo(l: int list) = sum(l) + mul(l) + length(l) A ordem de sum(), mul() e length(), não importa e não modifica I Paralelismo Implícito no Map Os elementos de uma lista a ser calculada pelo mapa, não podem ver os efeitos dos cálculos sobre outros elementos Isolamento Se a ordem de aplicação de f para elementos na lista é comutativa, podemos reordenar ou paralelizar a execução Este é o “segredo” que explora MapReduce Processamento em Larga Escala Processamento em grandes quantidades de dados (> 1 TB) Fornecer paralelismo em centenas e milhares de CPU MapReduce Paralelização automática e distribuição Tolerante a falhas Fornece ferramentas de status e acompanhamento Abstração para programadores Map Registros da fonte de dados linhas de arquivos, linhas de um banco de dados, etc São alimentados em função do mapa como pares chave * valor Por exemplo(nome do arquivo, linha) map() produz um ou mais valores intermediários, juntamente com uma chave de saída Reduce Após a fase de map, todos os valores intermediários para uma dada chave de saída são combinadas em uma lista reduce() que combina os valores intermediários em um ou mais valores para a mesma chave de saída MapReduce Paralelismo map() funções em paralelo, criando diferentes valores intermediários a partir de conjuntos de dados de entrada diferentes reduce() funções que também funcionam em paralelo, cada uma trabalhando em uma chave de saída diferente Todos os valores são tratados de forma independente Gargalo: a fase reduce pode não ser iniciada até a fase map está completamente terminada Localidade Programa Master Divide as tarefas com base na localização de dados Tenta ter map das tarefas na mesma máquina como dados de arquivo físico, ou, pelo menos, mesmo rack Tolerância a Falhas Master detecta falhas do trabalhador (worker) Re-executa tarefas map() concluídas e em progresso Re-executa tarefas reduce() em andamento Avisos notificam chaves de entrada/valores que causam falhas no map(), e ignora os valores na re-execução Otimizações Não pode começar a reduce() até o map() está completo Um controlador de taxa lenta de disco único pode limitar todo o processo Master redundante executa tarefas map “lentas” Amazon EC2 Amazon Elastic Compute Cloud Objetivos Infra-estrutura como Serviço (IaaS) Concebido para tornar a computação na Web escalável e fácil para os desenvolvedores Utiliza instâncias de máquina virtual Reduzir o tempo necessário para obter e inicializar novas instâncias de um servidor Balanceamento de carga Altera a economia da computação: Pague apenas pela capacidade que você realmente usar Conceitos Amazon Machine Image (AMI): Inicializável a partir do root Catálogo de usuários AMIs S.O.: Fedora, CentOS, Gentoo, Debian, Ubuntu, Windows Server Pilha de Aplicação: LAMP, mpiBLAST, Hadoop Instância: Executando uma cópia da AMI Lançamento em menos de 2 minutos Inicia/pára de forma programada Modelo de Segurança da Rede: Controle de acesso explícito Grupos de segurança Infra-estrutura como Serviço Elastic Compute Cloud Compute Simple Storage Service Store Simple Queue Service Message Simplicidade de Uso Criação da Amazon Machine Image (AMI) Upload da AMI no Amazon S3. Configuração de segurança e acesso a rede Escolha os tipos de instâncias que você quer executar Cria, termina e monitora várias instâncias de seu AMI conforme necessário, utilizando as APIs de serviços Web Paga por horas de instâncias e largura de banda que você realmente consome. Conexão com a AMI através de SSH Atribuição de Preços Pagamento pelo uso O preço é por instância/horas consumido para cada tipo de instância Instância/hora consumida, parcialmente, são tarifadas como hora completa $0.10 - Small Instance (Default) 1.7 GB de memória, 1 EC2 unid. de computação (1 virtual core com 1 EC2 unid. de computação), 160 GB de instâncias de armazenamento, plataforma 32-bit $0.40 - Large Instance 7.5 GB de memória, 4 EC2 unid. de computação (2 virtual cores com 2 EC2 unid. de computação cada), 850 GB de instâncias de armazenamento, plataforma 64-bit $0.80 - Extra Large Instance 15 GB de memória, 8 EC2 unid. de computação (4 virtual cores com 2 EC2 unid. de computação cada), 1690 GB de instâncias de armazenamento, plataforma 64-bit Estratégia de Virtualização Utiliza o Xen – como máquina virtual Diferente do Vmware e VPC ele usa “paravirtualization” onde os SOs são modificados para o uso especial de hypercalls Ilusão de estar sendo executado diretamente sobre o hardware Alto desempenho Suporte de hardware da Intel e AMD Suporta “Live Migration” de uma máquina virtual entre hosts Problemas Local de armazenamento não é persistente Quando você desligar, seus dados são perdidos Necessidade de escrevê-los em outro lugar, mas S3 é grátis! DHCP atribuição de endereços IP Então muda IP quando reiniciado instância Difícil de usar como um servidor público Amazon SQS Oferece disponibilidade, escalabilidade e uma fila para armazenamento de mensagens entre computadores Transfere dados facilmente entre componentes distribuídos Por meio de uma API simples Útil para desenvolvedores Garantia de entrega Replicação Fornece segurança contra acessos não autorizados a fila e suas mensagens Amazon Simple Storage Service (S3) Um sistema de arquivos distribuído Armazenamento ilimitado Pagamento pelo uso $0.20 por GB de dados transferidos $0.15 por GB/mês para armazenamento utilizado Fornece um repositório seguro e confiável para armazenar as AMIs Armazena e recupera resultados intermediários dos processos S3 Não é como um sistema típico (raiz única) Os usuários podem ter até 100 “buckets” Unidade fundamental de armazenamento Nomes dos bucket são globais! Um bucket possui armazenamento ilimitado de arquivos Acesso por REST/SOAP Amazon SimpleBD É um WS que disponibiliza funcionalidades de BD em nuvem Escalável API simples para armazenamento e acesso Sintonia automática na indexação S3 armazena dados brutos Cria índices em múltiplas dimensões Permite a rápida consulta de dados Utilizado para guardar o estado global do sistema Armazena os metadados referentes aos objetos contidos no S3 Eucalyptus Eucalyptus Projeto Eucalyptus Elastic Utility Computing Architecture Linking Your Programs To Useful Systems É uma infra-estrutura de software de livre para implementação de sistemas de computação em nuvem Compatível com o Amazon EC2 Componentes Cloud Controller (CLC) Cluster Controller (CC) Node Controller (NC) Storage Controller (SC) Walrus (put/get storage) Arquitetura Amazon EC2 Interface Client-side API Translator Cloud Controller Cluster Controller Node Controller Representação Cloud Controller É o ponto de entrada na nuvem para: administradores, projetistas, desenvolvedores e usuários finais É responsáveis pelas consultas aos nodes e decisões de escalonamento por meio de requisições aos clustercontrollers Cluster Controller Geralmente é executado na máquina front-end ou em alguma máquina que tem conexão com todos os nodes São responsáveis por tomar informações sobre as maquinas virtuais ou sobre o tempo de execução das VMs Node Controller É executado em todo Node que hospeda uma maquina virtual É responsável por gerenciar a execução, inspeção e finalização das máquinas virtuais Storage Controller Implementa um bloco de armazenamento na rede É capaz de interagir com diversos sistemas de armazenamento (NFS, ISCSI, etc) Um bloco de armazenamento elástico é um dispositivo de bloco que pode ser conectado a uma máquina virtual Walrus (put/get storage) Permite aos usuários armazenar dados persistentes organizados como registros e objetos Cria e apaga listas de registros Retorna e apaga objetos Controla política de acesso Benefícios Expansibilidade Arquitetura simples e APIs internas Interface para o cliente Interface e funcionalidades do Amazon EC2 Rede Redes privadas virtuais por nuvem Segurança Deve ser compatível com as regras de segurança locais Virtualização Servidores, rede, armazenamento, etc Microsoft Azure Microsoft Azure A Plataforma de Serviços Azure da Microsoft é um grupo de tecnologias da nuvem Fornece um conjunto específico de serviços para desenvolvedores de aplicativos Pode ser usada tanto por aplicativos em execução na nuvem quanto por aqueles executados em sistemas locais Microsoft Azure Principais Componentes Windows Azure: Fornece um ambiente baseado no Windows para executar aplicativos e armazenar dados nos servidores dos centros de dados da Microsoft Microsoft .NET Services: Oferece serviços de infra-estrutura distribuídos para aplicativos baseados em nuvem e locais Microsoft SQL Services: Fornece serviços de dados na nuvem baseados no SQL Server Live Services: Fornece acesso aos dados a partir de aplicativos Live da Microsoft e outros. Windows Azure Sistema Operacional para serviços na nuvem Utilizado no ambiente para: Desenvolvimento Hospedagem Gerenciamento dos serviços .NET Services Fornece serviços baseados em nuvem que podem ser usados por: Aplicativos locais Aplicativos na nuvem Conjunto de serviços: Escaláveis Orientados ao desenvolvedor Componentes reutilizáveis na nuvem Possibilita o desenvolvimento focado na lógica da aplicação Abstrai a construção e disponibilização do serviço na infra-estrutura Oferece serviços de infra-estrutura distribuídos para aplicações Componentes .NET Services Controle de Acesso: Faz com que cada usuário forneça ao aplicativo um token contendo algum conjunto de declarações Identidade Barramento de Serviço: Expõe os serviços de um aplicativo na Internet extensibilidade, flexibilidade e reuso Fluxo de Trabalho: Cria aplicativos compostos, como na integração de aplicativos corporativos requer lógica que coordena a interação entre as várias partes Orquestração Live Services Conjunto de componentes dentro do Azure para o tratamento de: Dados do usuário Recursos da aplicação Possibilita a construção de aplicações ricas que podem conectar com usuários do Windows Live Fornece a sincronização de dados dos usuários Possibilita a extensão de aplicações Web entre múltiplos dispositivos SQL Services Conjunto de serviços baseados em nuvem para armazenar e trabalhar com muitos tipos de dados, de não-estruturados a relacionais Expõe tanto interfaces SOAP como REST Construído sobre o Microsoft SQL Server Não expõe uma interface relacional tradicional Fornece um modelo de dados hierárquico que não exige um esquema pré-definido Cada item de dados armazenado nesse serviço é mantido como uma propriedade com seu próprio nome, tipo e valor Google App Engine Objetivos Permite a execução de aplicativos da web na infra-estrutura do Google Fácil de criar, manter e escalar à medida que o tráfego e armazenamento de dados precisa crescer Simplicidade Elasticidade Confiabilidade Características Não há necessidade de manter servidores Somente enviar seu aplicativo e ele está pronto para atender a seus usuários Suporta aplicativos criados em várias linguagens de programação Java Phyton Ruby Lado Comercial Pagamento pelo que usar Não há preços predefinidos nem taxas recorrentes Cobranças por recursos usados pelo seu aplicativo, como: Armazenamento Largura de banda Medidos em GB e cobrados a taxas competitivas O usuário controla a quantidade máxima de recursos que o aplicativo pode consumir Controle adequado ao orçamento Recursos Serviço de Web dinâmico Suporte completo a tecnologias Web Armazenamento persistente Consultas, classificação e transações (BigTable) Ajuste e balanceamento de carga automáticos APIs para autenticação e envio de e-mails através do Google Ambiente de desenvolvimento local com todos os recursos disponíveis no Google Esquema de tarefas programadas Ambientes de Execução O aplicativo pode ser executado em um dos dois ambientes de execução: Java Python Cada ambiente oferece: protocolos padrão tecnologias comuns para o desenvolvimento de aplicativos Web Sandbox Um ambiente seguro que fornece acesso limitado ao sistema operacional Isola o aplicativo em seu próprio ambiente Seguro e confiável independentemente de hardware, sistema operacional e localização física do servidor da Web Algumas restrições Um aplicativo não pode gravar no sistema de arquivos Limitações de Resposta: deve retornar dados de resposta em 30 segundos O ambiente de execução Java Conjunto de ferramentas comuns de desenvolvimento da Web e padrões de APIs Inclui a plataforma JRE 6 e as suas bibliotecas As restrições do ambiente do sandbox são implementadas na JVM Otimização Um aplicativo pode usar qualquer bytecode JVM ou recurso da biblioteca Desde que não exceda as restrições do sandbox O ambiente de execução Java Para o armazenamento de dados inclui implementações das interfaces JDO (Objetos de dados Java) JPA (API persistente Java) Os serviços também incluem APIs de nível inferior Para implementar adaptadores adicionais Para serem usadas diretamente do aplicativo O ambiente de execução Phyton É possível implementar o aplicativo e executá-lo em um interpretador otimizado Inclui APIs avançadas e ferramentas para desenvolvimento de aplicativos: Modelagem de dados, gerenciamento e acesso aos dados de forma simples O ambiente fornece APIs abrangentes: Armazenamento de dados, e-mail, ... Uso de biblioteca de terceiros desde que Implementadas em Python puro Não exijam nenhum módulo de biblioteca padrão não suportado Armazenamento de dados Fornece um poderoso serviço de armazenamento de dados distribuído que contém: Um mecanismo de consultas Transações O armazenamento de dados não é um banco de dados relacional tradicional (BigTable) Os objetos de dados, ou “entidades”, têm um tipo e um conjunto de propriedades As consultas recuperam entidades de um tipo determinado, filtradas e classificadas segundo os valores das propriedades Armazenamento de dados As entidades do armazenamento de dados não possuem esquema A estrutura das entidades de dados é fornecida e aplicada pelo código do seu aplicativo O aplicativo pode acessar os dados diretamente Garantia de consistência, integridade e controle de concorrência otimista Uma atualização de entidade ocorre em uma transação com um número fixo de tentativas Caso outros processos estejam tentando atualizar a mesma entidade simultaneamente Confiabilidade Seu aplicativo pode executar diversas operações de armazenamento de dados em uma única transação Aneka Objetivos Plataforma única de apoio a vários modelos de programação paralela e aplicações distribuídas Arquitetura flexível e extensível QoS corporativo Os aplicativos podem negociar a capacidade necessária Recursos Caracterização Middleware para Grids/Clouds corporativos Arquitetura orientada a serviços Baseado em ambiente .NET/Mono Linguagens: C#, C++, VB, Delphi, Java/IKVM… … e mais de 20 linguagens Plataformas: Windows XP/2000/2003 Linux e Mac OS X Recursos Múltiplos modelos de programação/implantação Múltiplos estratégias de escalonamento Múltiplos modelos de autenticação Múltiplos mecanismos de persistência Múltiplos plataformas e SOs Projetado para ser um middleware configurável com o objetivo de apoiar uma duração indeterminada a um conjunto de abstrações para computação distribuída e implantação cenários Arquitetura Overview do sistema Aneka enterprise Cloud Aneka Container work units Executor Executor Manager Executor internet work units Scheduler internet Workers Manager(s) Executor Manager Client Applications Arquitetura Serviços Scheduling Services: Serviços básicos de escalonamento Suporte para: Pacotes independentes de escalonamento de tarefas Diferentes e acopláveis algoritmos de escalonamento Escalonamento para reservas avançadas Re-sumissão automática/configurada de tarefas diante de falhas Execution Services: Básico do sandboxing Suporte para execução de código legado (PSM) Storage: Múltiplos protocolos baseados em serviços de armazenamento (FTP) Componentes Ao iniciar, o container carrega: Mandatory Services MembershipCatalogue Service: serviço de descoberta Allocation Manager: alocação de recurso HeartBeat Service: notifica o status do container Security infrastructures AuthenticationProvider e AuthorisationProvider MessageDispatcher Para tratar a chegada e saída de mensagens para os serviços Outros serviços (Executors, Schedulers, etc.) Baseado na configuração de arquivos, e iniciar esses serviços via IoC (Inversion of Control) Modelos de Programação Suportado atualmente: Modelo de programação em Tarefas Modelo de programação em Thread Modelo de programação em MapReduce Modelo Parameter Sweeping .. Implementações suas.. Modelos de Programação Modelo de programação em Tarefas Usado para pacotes independentes de tarefas de aplicações (BoT) A aplicação é uma coleção de unidade de execução Cada unidade de execução não está relacionada com os outras Não há nenhuma ordem na execução das unidades Se houver qualquer ordenação ou seqüência isso é realizada através da aplicação cliente e não pelo middleware Modelos de Programação Modelo de Programação em Thread Baseado no conceito de thread distribuída Como uma thread local, mas executado remotamente Implementa um subconjunto de operações comuns da thread Iniciar, Parar, Estado da consulta, Junção Fornece uma maneira rápida de portabilidade em um middleware distribuído, aplicações multi-threaded Modelos de Programação Modelo de Programação em MapReduce Desenvolvimento de aplicações baseadas no MapReduce Definir as operações de map e reduce Fornecer os dados Executar o motor MapReduce Input data Execution: -File staging -Task scheduling -Failed task resubmission -Replication and Fault tolerance -Collection of result MapReduce engine map & reduce Map & Reduce network Modelos de Programação Extensibilidade A implementação de um novo modelo de programação Definir as abstrações do usuário Fornecer a implementação para: Execution Service (middleware) Scheduling Service (middleware) Application Manager (componente cliente) Onde começar: Aneka.Entity.*, Aneka.Data.Entity*; Aneka.Execution.*; Aneka.Runtime.Scheduling.*; Como utilizar Passos Desenvolvendo aplicações com Aneka Escolhendo o modelo de programação Definindo a lógica da aplicação Implementação do código Instalação e execução APLICAÇÕES Aplicações Diversos tipos de aplicações estão sendo disponibilizadas como serviços Serviços de webmail Sites SaaS Soluções de bioinformática Processamento de imagens Aplicações Jornal NY Times utilizou EC2 e S3 para converter 15 milhões de artigos para PDF Em minutos A bolsa de Nasdaq usa S3 para disponibilizar informações sobre histórico de ações CloudAV Um novo modelo para detecção de vírus em máquinas como SaaS Utiliza a técnica “N-version protection” Múltiplos mecanismos de detecção Paralelismo Apresenta resultados satisfatórios com relação as soluções tradicionais Arquitetura Componentes arquiteturais Agente Serviço de rede CloudAV Executado em máquinas virtuais Escalabilidade Utilizado em diversos ambientes Windows, Linux, FreeBSD, etc Trabalha com 10 aplicativos antivírus Avast, AVG, BitDefender, Kaspersky, McAfee, Symatec, TredMicro, ... Trabalha com 2 softwares para detecção de comportamento Normam Sandbox e CWSandbox Avaliação Utilizou-se dados reais coletados Período de 6 meses Um banco de dados de 7220 amostras de vírus Com base em experimentos, conclui-se que o CloudAV é: 35% superior na detecção de ameaças Possui uma taxa de 98% de detecção em relação a todos os dados Benefícios Não há a necessidade de se preocupar com atualizações As máquinas dos usuários não desperdiçam CPU Combina diversas estratégias para a solução Confiabilidade Segurança DESAFIOS Desafios Segurança Gerenciamento de Dados Autonomia Disponibilidade de Serviços Escalabilidade e Desempenho Desafios Descrição, Descoberta e Composição de Serviços Licenciamento de Software Integração de Serviços Padronização Avaliação de Serviços Segurança A computação em nuvem utiliza a Internet Dados são processados fora das empresas Os provedores devem garantir: Autenticidade Confidencialidade Integridade Segurança Confiabilidade Os provedores devem fornecer recursos confiáveis Especialmente se a computação a ser realizada é crítica Responsabilidade Deve existir uma delimitação bem definida de responsabilidade Gerenciamento de Dados Ponto crítico em computação em nuvem SGBDs relacionais não possuem escalabilidade quando milhares de sítios são considerados Novas abordagens são flexíveis para garantir a escalabilidade: Armazenamento de dados Processamento de consultas Controle transacional Gerenciamento de Dados Trade-off entre funcionalidades e custos operacionais: Os serviços em nuvem para dados oferecem: APIs mais restritas do que os SGBDs relacionais Uma linguagem minimalista de consulta Possuem garantia de consistência limitada Exige mais esforço de programação dos desenvolvedores Mas permite aos provedores construírem serviços com garantias de SLA Gerenciamento de Dados Autonomia A computação em nuvem é um sistema autônomo Gerenciado de forma transparente para os usuários Hardware e software dentro de nuvens podem ser automaticamente: Reconfigurados Orquestrados Estas modificações são apresentadas ao usuário como uma imagem única Autonomia Reduz o custo de equipe de monitoramento do sistema tanto no âmbito centralizado quanto distribuído Comparados com sistemas tradicionais é possível identificar três fatores complexos: Intervenção humana limitada Alta alternância na carga de processamento Variedade de infra-estruturas compartilhadas Autonomia Intervenção Humana Limitada Na maioria dos casos, não existem administradores de sistemas para ajudarem os desenvolvedores que acessam a nuvem Plataforma automatizada ao máximo Alta alternância de carga Os usuários podem variar suas cargas de trabalho habituais Alocação dinâmica de recursos Virtualização a principal técnica neste contexto Autonomia Variedade de infra-estruturas compartilhadas Gerência eficaz Desenvolvimento de tecnologia de auto-sintonia Técnicas adaptativas e on-line Disponibilidade Permite aos usuários acessar e utilizar a nuvem onde e quando desejarem Nuvem utiliza a Internet Pode ocorrer atrasos Sistemas indisponíveis A computação em nuvem deve fornecer ambientes com alta disponibilidade Disponibilidade Pode-se utilizar técnicas: balanceamento dinâmico de carga Composição de nuvens Exemplo: Podem-se construir aplicações altamente disponíveis com a implantação de duas ofertas de nuvem diferentes. Caso uma das nuvens falhe, a outra nuvem continua a apoiar a disponibilidade das aplicações Escalabilidade Grande aumento no número de usuários Os serviços devem suportar uma quantidade variável de requisições Os serviços oferecidos podem ser dimensionados por vários fatores: Localizações geográficas Desempenho Configurações Desenvolver sistemas escaláveis é complexo Desempenho As soluções de computação em nuvem devem fornecer elevado desempenho mesmo com: Limitações de rede Segurança Ambientes de computação em nuvem possuem acesso público Imprevisível e variável a quantidade de requisições realizadas Torna-se complexo fazer estimativas e garantias de QoS Descrição, Descoberta e Composição Na computação em nuvem vários modelos evoluíram rapidamente para aproveitar: Tecnologias de software Plataformas de programação Armazenamento de dados e infra-estrutura de hardware como serviços Estes modelos se referem ao núcleo dos serviços de computação em nuvem Suas inter-relações têm sido ambíguas A viabilidade de sua interoperabilidade é questionável Descrição, Descoberta e Composição Cada serviço da nuvem tem interfaces e protocolos diferentes Diversos serviços dispersos no ambiente Características diferentes Necessidade de desenvolver técnicas eficazes: Descrever, descobrir e compor estes serviços Licenciamento de Software Pesquisas em computação tem investigado vários modelos econômicos de infra-estrutura computacional Computação em nuvem Tem uma abordagem mais aplicada aos negócios e relacionada ao custo A computação em nuvem apresenta diversos modelos de preço: Preço diferenciado Preços por unidade Assinatura de serviços básicos Licenciamento de Software Preço diferenciado Os serviços são oferecidos em vários níveis de especificações, tais como: alocação de memória e tipo de CPU, informações de SLA O valor cobrado é um preço específico por unidade de tempo Modelo adotado pela Amazon Licenciamento de Software Preço por unidade Normalmente aplicado a dados transferidos ou ao uso de memória Este modelo é mais flexível do que o de preço diferenciado Permite aos usuários personalizarem a alocação de memória de seus sistemas baseados nas necessidades de aplicações específicas Licenciamento de Software Assinatura de serviços básicos Modelo de preço mais amplamente utilizado Permite aos usuários preverem suas despesas na utilização de um serviço Não tem a precisão em cobrar dos usuários o que eles têm realmente utilizado Integração de Serviços Diversos serviços disponíveis Recursos heterogêneos Fornecer interoperabilidade Adaptações: Tecnologias de integração de dados Serviços e linguagens Padronização As empresas têm interesse que aplicações possam ser transferidas para a nuvem de forma simples Essas empresas também esperam que exista interoperabilidade entre diferentes serviços de nuvem: Armazenamento Acesso Gerenciamento Padronização Exemplo: As APIs da Amazon estão se tornando um padrão de fato para serviços sob demanda A quantidade de tecnologias envolvidas é muito grande Padronizar as diversas interfaces e serviços é um desafio Avaliação de Nuvem Existem muitos serviços disponíveis em nuvem Algumas iniciativas para avaliar serviços específicos Necessidade de desenvolvimento de um benchmark de propósito geral Permita avaliar diversos tipos de serviços Avaliação de Nuvem Este benchmark deve ser composto de: Ferramentas para gerar cargas de trabalho, monitorar o desempenho Métricas para calcular o custo por usuário em uma determinada unidade de tempo Outra alternativa para a avaliação de nuvem Desenvolvimento de sistemas de simulação Exemplo: CloudSim Conclusões A informática como um serviço está finalmente emergindo Serviços estão sendo fornecidos aos usuários através da Internet sob demanda A computação em nuvem está se desenvolvendo rapidamente Empresas e a comunidade científica tem apresentado iniciativas Ainda não existe uma definição clara e completa para a computação em nuvem Existe um grande esforço neste sentido Conclusões Este minicurso apresentou: Conceitos Tecnologias Aplicações Desafios A superação dos desafios apresentados possibilitará que a computação em nuvem seja amplamente aceita e utilizada por todos Perguntas? Leonardo O. Moreira [email protected] 165