Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios

Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios

Flávio R. C. Sousa

October 28, 2009
Tweet

More Decks by Flávio R. C. Sousa

Other Decks in Technology

Transcript

  1. Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios Flávio R.

    C. Sousa Leonardo O. Moreira Javam C. Machado ERCEMAPI 2009 Universidade Federal do Ceará
  2. Agenda  Introdução  Conceitos  Definição e Modelos 

    Tecnologias  Aplicações  Desafios  Conclusão
  3. Computação em nuvem Billing Storage Web 2.0 Utility Computing Uhm,

    I am not quite clear…Yet another buzzword..?
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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.
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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.
  22. 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
  23. 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
  24. 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.
  25. 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.
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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 à infra- estrutura 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)
  31. 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
  32. 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
  33. 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
  34. 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
  35. Características Essenciais  Self-service sob demanda  Amplo acesso 

    Pooling de recursos  Elasticidade rápida  Serviço medido
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. Arquitetura  Baseada em camadas  Cada uma trata de

    uma particularidade  Divide logicamente os componentes  Hardware  Software  Agrupa componentes por interesse  Gerenciamento e monitoramento independente
  47. Arquitetura  Fornece:  Escalabilidade  Reusabilidade  Flexibilidade 

    Substitui ou adiciona recursos sem afetar outras camadas  Independência
  48. 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
  49. 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
  50. 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”
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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”
  62. 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
  63. 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
  64.  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 Simplicidade de Uso
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. Componentes  Cloud Controller (CLC)  Cluster Controller (CC) 

    Node Controller (NC)  Storage Controller (SC)  Walrus (put/get storage)
  74. 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 cluster- controllers
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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.
  82. Windows Azure  Sistema Operacional para serviços na nuvem 

    Utilizado no ambiente para:  Desenvolvimento  Hospedagem  Gerenciamento dos serviços
  83. .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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. Arquitetura  Overview do sistema Executor Scheduler Executor Executor Executor

    Manager work units internet internet Aneka enterprise Cloud Manager work units Manager(s) Client Applications Workers Aneka Container
  102. 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)
  103. 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)
  104. 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..
  105. 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
  106. 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
  107. 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 map & reduce MapReduce engine Map & Reduce network Execution: -File staging -Task scheduling -Failed task resubmission -Replication and Fault tolerance -Collection of result
  108. 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.*;
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. Desafios  Segurança  Gerenciamento de Dados  Autonomia 

    Disponibilidade de Serviços  Escalabilidade e Desempenho
  117. 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
  118. Segurança  A computação em nuvem utiliza a Internet 

    Dados são processados fora das empresas  Os provedores devem garantir:  Autenticidade  Confidencialidade  Integridade
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. Autonomia  Variedade de infra-estruturas compartilhadas  Gerência eficaz 

    Desenvolvimento de tecnologia de auto-sintonia  Técnicas adaptativas e on-line
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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