COMPUTAÇÃO EM NUVEM Arthur Souza, Thiago César, Fred Lopes, Nélio Cacho



Documentos relacionados
Segurança da Informação

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

O que é Cloud Computing?

Gerenciamento e Interoperabilidade de Redes

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

O protocolo HTTP. O que é o protocolo HTTP?

Planejamento Estratégico de TI. Felipe Pontes

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

UFG - Instituto de Informática

Práticas de Desenvolvimento de Software

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Universidade Federal de Mato Grosso

Comunicação entre Processos

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM

Service Oriented Architecture SOA

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Arquiteturas Paralelas e Distribuídas

Computação nas Nuvens

Conceitos Básicos sobre Sistemas Web: Arquitetura e Serviços. Aécio Costa

Fernando Seabra Chirigati. Universidade Federal do Rio de Janeiro EEL879 - Redes de Computadores II Professores Luís Henrique Costa e Otto Duarte

UNIVERSIDADE. Sistemas Distribuídos

COMPUTAÇÃO EM NUVEM: UM FUTURO PRESENTE

Integração de sistemas utilizando Web Services do tipo REST

1.264 Lição 11. Fundamentos da Web

ANÁLISE COMPARATIVA ENTRE APLICAÇÕES GRATUITAS EM NUVEM

Criando e consumindo Web service REST com PHP e JSON. Palestrante: Weiberlan Garcia

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Curso de Aprendizado Industrial Desenvolvedor WEB

Cloud Computing. Edy Hayashida

18/04/2006 Micropagamento F2b Web Services Web rev 00

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Aula 14 Serviços Internet (Servidor Web Apache)

Infraestrutura: devo usar a nuvem? Prof. Artur Clayton Jovanelli

Computação em Nuvem & OpenStack

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

CLOUD COMPUTING: COMPARANDO COMO O MUNDO ONLINE PODE SUBSTITUIR OS SERVIÇOS TRADICIONAIS

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

REST. Caio Nakashima

SISTEMAS DISTRIBUÍDOS

Rede de Computadores (REC)

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

Alexandre Malveira, Wolflan Camilo

Cloud Computing. Eduardo Roloff


Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio

GIS Cloud na Prática. Fabiano Cucolo 26/08/2015

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0. Autor: Angelo Bestetti Junior

Desenvolvimento de Aplicações Web

Agenda CLOUD COMPUTING I

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Dicas para a prova do MPU (cargos Analista e Técnico) NOÇÕES DE INFORMÁTICA: (comentário por tópico do edital visando o CESPE/UnB)

Sistemas Distribuídos

Web. Professor: Rodrigo Alves Sarmento

Introdução a Computação nas Nuvens

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

XHTML 1.0 DTDs e Validação

Aplicativos para Internet Aula 01

INTERNET CONCEITOS. Internet é a "grande rede mundial de computadores"

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

11 - Q34826 ( FCC DPE - SP - Oficial de Defensoria Pública / Noções de Informática / Internet e intranet; )

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

TRIBUTAÇÃO NA NUVEM. Tax Friday 21 de outubro de 2011 AMCHAM - RJ

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Gestão em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

APLICAÇÕES E SERVIÇOS WEB

Classificação::Modelo de implantação

Internet Visão Geral. O que é a Internet? Ong Ação Cidadã

Treinamento de Provas. Aula 1 Bloco 2 Novas tecnologias e Protocolos. Cespe/UnB Com fundamentação teórica

SISTEMAS DISTRIBUIDOS

Web Services. (Introdução)

Web Design Aula 11: Site na Web

Computação em Nuvem. Tiago Reis, Ricardo Teixeira 2011/2012 FCT - UNL

Material 5 Administração de Recursos de HW e SW. Prof. Edson Ceroni

Em direção à portabilidade entre plataformas de Computação em Nuvem usando MDE. Elias Adriano - UFSCar Daniel Lucrédio - UFSCar

Manual TIM PROTECT BACKUP. Manual do Usuário. Versão Copyright TIM PROTECT BACKUP

Serviços Web: Arquitetura

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

7 Utilização do Mobile Social Gateway

Transcrição:

COMPUTAÇÃO EM NUVEM Arthur Souza, Thiago César, Fred Lopes, Nélio Cacho Departamento de Informática e Matemática Aplicada Natal RN Brasil 1 / 35

Roteiro Introdução Computação em Nuvem Conceitos básicos Conceitos relevantes ao desenvolvimento na nuvem Aplicação Exemplo de Acesso ao WeatherWS. Aplicação Exemplo de Acesso ao Twitter. Google App Engine (GAE) Instalação Serviços Aplicação Exemplo 2 / 35

3 / 35

Introdução Evolução da Computação - últimas décadas 1970s Monolítico Mainframes 1980s Cliente-servidor Computadores pessoais 1990s Internet 2000s SOA e Serviços Web Computação móvel Alta diversidade de dispositivos móveis Processadores potentes 2010s Computação em nuvem 4 / 35

Fonte: Ramamurthy and Madurai. Wipro Chennai 2011 Introdução Era atual da Computação Explosão de domínios de aplicações Poderosos processadores multicore Poder da virtualização sobre hardware Proliferação de dispositivos Metodologias de software Maior largura de banda para comunicação 5 / 35

Introdução Computação em Nuvem modelo computacional para acesso conveniente, sob demanda e de qualquer localização, a uma rede compartilhada de recursos computacionais (redes, servidores, armazenamento, aplicativos e serviços) que possam ser prontamente disponibilizados como serviços e acessados com um esforço mínimo de gestão ou de interação com o provedor de serviços P. Mell and T. Grance (2011) The NIST Definition of Cloud Computing. NIST, EUA. 6 / 35

Introdução Computação em Nuvem A nuvem é um grande reservatório de recursos virtualizados facilmente utilizáveis e acessíveis (como hardware, plataformas de desenvolvimento e/ou serviços). Esses recursos podem ser dinamicamente reconfigurados para ajustar a carga (escala) variável do sistema, permitindo também um uso ótimo dos recursos. Tal reservatório é geralmente explorado por um modelo pay-per-use no qual as garantias são oferecidas por um Provedor de Infraestrutura por meio de SLAs (Service Level Agreement - Acordo de Nível de Serviço) L.M. Vaquero et al., A break in the clouds: towards a cloud definition, ACM SIGCOMM Computer Communication Review, 2008 7 / 35

Computação em Nuvem Google Docs/Drive Documentos, planilhas e apresentações sem precisar instalar software, acessados via browser (pode ter computador de baixo custo) 8 / 35

Computação em Nuvem Google Docs/Drive Edição de documentos, criação de pastas, etc. Compartilhamento on-line Acesso via web Atualização em tempo real 9 / 35

Introdução O que há de novo? Modelo de aquisição Baseado na aquisição de serviços Modelo de negócios Pay-per-use Modelo de acesso Qualquer dispositivo através da Internet Modelo técnico Escalabilidade, elasticidade, dinamicidade,... 10 / 35

Computação em Nuvem O usuário não precisa ter o hardware, ele aluga da nuvem Consumo de recursos realizado através de serviços Armazenamento Processamento... Necessidade de um modelo de gestão e comercialização de serviços 11 / 35

Computação em Nuvem Quebra de paradigma recursos computacionais proprietários recursos computacionais em outro local 12 / 35

Computação em Nuvem Datacenter 13 / 35

Conceitos Básicos Características essenciais (NIST) Serviço sob demanda Consumidor deve provisionar os recursos de computação automaticamente e de acordo com a necessidade Amplo acesso à rede Recursos disponíveis através da rede Uso a partir de diferentes dispositivos (PC, tablets, smartphone, etc.) 14 / 35

15 / 168 Conceitos Básicos Características essenciais (NIST) Agrupamento de recursos Recursos agrupados e dinamicamente atribuídos para atender múltiplos consumidores Serviço mensurado Recursos controlados, otimizados Transparência para fornecedor e consumidor 15 / 35

Conceitos Básicos Outras características Elasticidade rápida Recursos podem ser provisionados e liberados elasticamente, de acordo com a demanda up- and down-scaling 16 / 35

Conceitos Básicos Aspectos econômicos Redução de custos Menos custos com hardware, software, técnicos,... Pay-per-use Cliente paga pelo que usa Semelhante às nossas contas de água, luz, e telefone Meio ambiente Menor consumo de energia Menos hardware subutilizado 17 / 35

Conceitos Básicos Modalidades de serviços IaaS Infrastructure as a Service PaaS Platform as a Service SaaS Software as a Service Fonte: Ibm.com 18 / 35

Conceitos Básicos Modalidades de serviços IaaS Infrastructure as a Service VMs, rede, armazenamento, etc. Virtualização Elasticidade e balanceamento de carga Cliente detém controle dos recursos Ex.: AWS, VirtualBox, VMWare, OpenStack,... 19 / 35

Conceitos Básicos Modalidades de serviços PaaS Platform as a Service Controle sobre aplicações instaladas Servidores de aplicação, SGBDs, etc. Clientes usam linguagens e ferramentas proprietárias Aplicações dependentes de plataforma Ex.: Google App Engine (GAE), Azure, Facebook platform 20 / 35

Conceitos Básicos Modalidades de serviços SaaS Software as a Service Alto nível de abstração Fornece aplicações e não recursos computacionais Sem gerência e controle da infraestrutura da nuvem (redes, VMs, SOs, etc.) Cliente não precisa instalar e administrar software Ex.: Genéricos: Dropbox, Google Calendar, Yahoo Mail, Gmail,... Coorporativos: Salesforce.com, Sugar CRM,... 21 / 35

Conceitos Básicos 22 / 35

Conceitos Básicos Modalidades de instalação Nuvem privada Nuvem pública Nuvem comunitária Nuvem híbrida Fonte: Ibm.com 23 / 35

Conceitos Básicos Nuvem Privada Fonte: Ibm.com Uso exclusivo de uma organização Nuvem Pública Disponibilizada livremente e acessada por qualquer cliente 24 / 35

Conceitos Básicos Nuvem Comunitária Compartilhamento de uma nuvem entre diversas empresas Comunidade específica Ex: Uma nuvem do governo federal pode ser compartilhada entre os ministérios Fonte: cerch.org 25 / 35

Conceitos Básicos Nuvem Híbrida Fonte: Ibm.com Composição de duas ou mais nuvens Públicas e/ou privadas e/ou comunitárias 26 / 35

27 / 35

Noções HTTP HTTP: Hypertext Transfer Protocol, é um protocolo de aplicação responsável pelo tratamento de pedidos e respostas entre cliente e servidor na internet/intranet. Surgiu em 1990, para transferência de arquivos texto na internet. Atualmente, suporta o envio/recebimento de mensagens do tipo MIME (Multipurpose Internet Mail Extensions) que permite a troca de tanto arquivos texto (html,xml,ascii...) de variada codificação e arquivos binários como: imagens, fotos, executáveis, zips (...) 28 / 35

Noções HTTP Cada requisição HTTP e composta por um linha de requisição, elementos HEAD e um BODY. A linha de requisição que indica o metodo da requisicao, o recurso a ser buscado e a versão do HTTP utilizada. Os HEADs (Cabeçalhos) contém informações sobre a requisição, isto é, metadados como: host, método de requisição, content-type, etc. Exemplo: Host: www.exemplo.com O BODY (Corpo) contém o conteúdo da requisição, por exemplo, um texto, um arquivo xml, uma imagem. 29 / 35

Noções HTTP Cada resposta HTTP e composta por um linha de estado, elementos HEAD e um BODY. A linha de estado contém a versão do HTTP utilizada e um código, mensagem de sucesso/falha na comunicação. Os HEADs (Cabeçalhos) contém informações sobre a resposta, isto é, metadados como: server, data/hora da resposta, content-type, etc. O BODY (Corpo) contém o conteúdo da resposta, por exemplo, um texto, um arquivo xml, uma imagem. 30 / 35

Noções HTTP GET /index.html HTTP/1.1 Host: www.example.com HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Accept-Ranges: none Content-Length: 438 Connection: close Content-Type: text/html; charset=utf-8 31 / 35

Noções HTTP HTTP status code Razão 200 OK Request OK. Significado 400 Bad request Request malformed. 403 Forbidden Request refused. 404 Not found Resource not found. 405 Method not allowed Method not supported. 415 Unsupported media type Content type not recognized. 500 Internal server error Request processing failed. 32 / 35

Noções HTTP O HTTP, atualmente suporta variados tipos de métodos de requisição. Destacam-se: GET: primeiro método implementado. Serve apenas para requisitar um recurso especifico. PUT: efetuar o upload de um recurso. DELETE: Deletar um recurso. POST: método utilizado para submeter dados a serem processados (parametros) em relação ao certo recurso. 33 / 35

Noções XML XML: extensible Markup Language. É uma linguagem de marcação desenvolvida para ser extentida e utilizada na descrição/publicação de grande quantidade de dados. Permite Criar documentos com dados organizados de forma hierárquica. Altamente legível. 34 / 35

Noções XML <?xml version="1.0" encoding="utf-8"?> <notebook identificador ="1"> <cpu>intel Xeon</cpu> <cpu-frequencia>3.0ghz</cpu-frequencia> <memoria>6gb</memoria> <disco>1tb</disco> </notebook> 35 / 35

Modelo REST Em 2000, Roy Fielding, em sua tese de Doutorado definiu o termo REST. REST: REpresentational State Transfer. É um conjunto de princípios arquiteturais, que quando aplicados ao projeto do sistema cria um modelo arquitetural. REST HTTP XML 36 / 35

Princípios do REST Endereçamento: todo objeto ou recurso do sistema deve ser alcançável através de um endereço único. URIs são utilizadas para endereçar recursos: scheme://host:port/path?querystring#fragment http://www.loja.com/notebook?identificador=1 37 / 35

Princípios do REST Interface Uniforme: Significa que não existe uma ação como parâmetro da sua URI, podendo ser utilizado apenas métodos HTTP. Cada comando HTTP tem um significado diferente: GET: consultar, PUT: atualizar; DELETE: remover, POST: criar. CRUD (Create, Read, Update, Delete) 38 / 35

Interface Uniforme HTTP verbo /URI POST produto GET produtos GET produtos?identificador=27 PUT produtos DELETE produtos Operação CRUD Cria um novo produto Obtém a lista de todos os produtos. Obtém o produto com identificador 27 Atualiza a lista de produtos Deleta o produtos 39 / 35

Vantagens de uma Interface CRUD Familiaridade: Se você tem uma URI que aponta para um serviço, você sabe exatamente que métodos estão disponíveis sem precisar de uma interface. HTTP REQUEST (GET/PUT/DELETE/POST) HTTP RESPONSE Cliente Servidor 40 / 35

Princípios do REST Orientado a Representação: Descreve o que será enviado e recebido por clientes e servidores. (Ex: /produto ) Representação é um estado temporal do dado armazenado no servidor. Diferentes clientes são capazes de consumir diferente representações, tais como JPEG, HTML, XML, etc. 41 / 35

REST WS Weather Fazendo um requisição no estilo REST ao Web Service Weather. Fazer um requisição HTTP GET a URL: http://wsf.cdyne.com/weatherws/weather. asmx/getcityweatherbyzip?zip=10001 Retorna uma HTTP Response que contém um arquivo XML. 42 / 35

GET /WeatherWS/Weather.asmx/GetCityWeatherByZIP?ZIP=10001 HTTP/1.1 HOST: wsf.cdyne.com <?xml version="1.0" encoding="utf-8"?> <WeatherReturn xmlns:xsi= xmlns:xsd= xmlns= "> <Success>true</Success> <ResponseText>City Found</ResponseText> <State>NY</State> <City>New York</City> <WeatherStationCity>White Plains</WeatherStationCity> <WeatherID>9</WeatherID> <Description>Partly Sunny</Description> <Temperature>60</Temperature> <RelativeHumidity>53</RelativeHumidity> <Wind>S9</Wind> <Pressure>30.11S</Pressure> <Visibility /> <WindChill /> <Remarks /> </WeatherReturn> 43 / 35

REST - WS Heather Execução 44 / 35

Pacote Java.net Classe URL: utilizada para criar um endpoint via uma URL. Ex: new URL( http://ws.correios.com.br/ ); Classe HttpURLConnection: cria um conexão via HTTP. (HttpURLConnection) new URL(. ).openconnection(); URL endereçoserver = new URL( http://ws.correios.com.br/calculador/calcprecoprazo.asmx ); HttpURLConnection conexao = (HttpURLConnection) endereçoserver.openconnection(); conexao.setrequestmethod("post"); conexao.setrequestproperty("content-type", "text/xml; charset=utf-8"); conexao.setrequestproperty("host", " ws.correios.com.br ");, 45 / 35

REST - WS Heather Código URL recurso = new URL( "http://wsf.cdyne.com/weatherws/weather.asmx/g etcityweatherbyzip?zip="+getzip() ); HttpURLConnection conexao = (HttpURLConnection) recurso.openconnection(); conexao.setdooutput(true); String xml = Util.lerInputStream(conexao.getInputStream()); atualizecidade(xml); 46 / 35

REST? Atualmente Atualmente, os provedores de serviço web que disponibilizam usando o modelo REST, podem usar a notação JSON, na resposta. HTTP REQUEST (GET/PUT/DELETE/POST) HTTP RESPONSE (JSON) Cliente Servidor 47 / 35

Noções - Javascript HTTP GET index.html HTTP RESPONSE (HTML) Cliente Servidor Javascript é uma linguagem de script. Utilizada para programação no lado do cliente. Surgiu em 1995 na versão beta do Netscape 2.0. HTTP GET index.html HTTP RESPONSE (HTML + JAVASCRIPT) Cliente Servidor 48 / 35

Noções - Ajax AJAX - Asynchronous Javascript And XML. Modelo onde são feitas requisições HTTP (XML) via Javascript ao servidor WEB. Criada para aumentar a interatividade de páginas Web. HTTP GET index.html HTTP RESPONSE (HTML + JAVASCRIPT) Cliente AJAX (Javascript + XML) Servidor 49 / 35

Ajax? XML / JSON Devido a dificuldade de processar XML apenas com JAVASCRIPT, surgiu o JSON. JSON - JavaScript Object Notation é uma formatação leve de troca de dados. 50 / 35

XML > JSON <?xml version="1.0" encoding="utf-8"?> <cliente identificador ="1"> <nome>arthur Souza</nome> <endereco>rua da Cidade</endereco> <email>arthursouza@email.com</email> </cliente> { } "identificador" : 1, "nome": "Arthur Souza "endereco": "Rua da Cidade", "email": "arthursouza@email.com 51 / 35

Ex. Prático REST + JSON Utilizando a API de acesso ao TWITTER, disponível em: https://dev.twitter.com/. Obter a lista de Trend Topics do Tweeter no brasil (WOEID: 23424768). Especificação de acesso: https://dev.twitter.com/docs/api/1/get/trends/%3awoeid GET trends/:woeid Returns the top 10 trending topics for a specific WOEID, if trending information is available for it. The response is an array of "trend" objects that encode the name of the trending topic, the query parameter that can be used to search for the topic on Twitter Search, and the Twitter Search URL... 52 / 35

Ex. Prático REST + JSON Incluir a biblioteca org.json, disponível: http://www.json.org/java/index.html Classe JSONArray representa um array de objetos JSON. Classe JSONObject representa um objeto no formato JSON. 53 / 35

Ex. Prático REST + JSON [ { "locations": [{"woeid":23424768,"name":"brasil"}], "as_of":"2012-05-16t00:12:29z", "trends":[ {...,"name":"#eujasenti",...}, {...,"name":"#anjasprocuramanjoscomatitude,...}, {...,"name":"#ostenta\u00c7\u00c3oforadonormal,...}, {"query":"montillo", "name":"montillo", "promoted_content":null, "events":null, "url":"http:\/\/twitter.com\/search\/montillo"},... ], "created_at":"2012-05-16t00:08:32z } ] 54 / 35

Ex. Prático REST + JSON 55 / 35

Ex. Prático REST + JSON URL recurso = new URL( "https://api.twitter.com/1/trends/23424768.json" ); HttpURLConnection conexao = (HttpURLConnection) recurso.openconnection(); conexao.setdooutput(true); String objetojson = Util.lerInputStream(conexao.getInputStream()); atualizetrend(objetojson); 56 / 35

57 / 35

Modelagem Aplicação: Bolão da Copa do Mundo 2014 Requisitos: Cadastro: Times, Jogos, Apostadores e Apostas. Cálculo de Pontos. Emissão de Recibo de Apostas. 58 / 35

Modelagem Apostador TIME Nome Nome E-mail Aposta Apostador Jogo Resultado-Mandande Resultado-Visitante Jogo Dia-Hora Local Mandante Visitante 59 / 35

Prática no Eclipse Criar um projeto Java. Implementar a aplicação para acesso REST aos recursos: /time e /jogo 60 / 35

Desafio Obter o código do projeto em: url Implementar as chamadas REST, JSON: Cadastro de Times Cadastro de Apostas 61 / 35