Sistemas Distribuídos e Paralelos Web Services Ricardo Mendão Silva Universidade Autónoma de Lisboa [email protected] November 29, 2014 Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 1 / 41 Outline 1 2 3 4 5 Sumário Introdução Web Services Combinação de web services Padrões de comunicação Representação de mensagens Referências de serviço Activação de serviços Transparência SOAP Descritores de serviços e IDL para web services WSDL Aplicações dos Web Services Service-oriented architecture Grid Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 2 / 41 Sumário Os web services fornecem serviços que permitem os clientes interagirem com os servidores de um modo mais genérico do que os web browsers permitem. Os clientes acedem às operações disponíveis na interface de um web service através de pedidos-respostas em formato XML e normalmente transmitidos sobre HTTP. Tal como na invocação remota, as interfaces são descritas via IDL, com a diferença que nos web services são adicionadas informações extra, tais como, a codificação, os protocolos de comunicação ou mesmo a localização do serviço Os web services são extremamente importantes nos sistemas distribuídos, suportando interoperabilidade através da Internet, incluindo integração B2B. Os web services suportam ainda os middlewares para grid e cloud computing. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 3 / 41 Outline 1 2 3 4 5 Sumário Introdução Web Services Combinação de web services Padrões de comunicação Representação de mensagens Referências de serviço Activação de serviços Transparência SOAP Descritores de serviços e IDL para web services WSDL Aplicações dos Web Services Service-oriented architecture Grid Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 4 / 41 Introdução Com o crescimento da Internet, ficou provada a eficiência em utilizar protocolos tais como o protocolo pergunta-resposta HTTP. No entanto, o protocolo HTTP, utilizado sobre web browsers, apresenta serias limitações no que toca na expansão para serviços mais específicos e/ou complexos. Nesse âmbito surge a necessidade de introduzir um suporte a serviço sobre a Internet, que não dependa dos web browsers como base. Como tal, os web services vieram fornecer uma infraestrutura capaz de manter uma forma de interoperabilidade enriquecida e mais estruturada entre clientes e servidores. Os web services permitem assim que aplicações complexas sejam desenvolvidas de um modo que possam integrar muitos outros serviços, venham eles de qualquer fonte. Os web services não podem ser acedidos directamente no web browsers. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 5 / 41 Introdução Os termos web server e web service não devem ser confundidos. web server - é um servidor web que fornece um serviço básico HTTP. web service - é um serviço que fornece determinadas operações definidas numa interface. A representação dos dados e empacotamento das mensagens trocadas entre cliente e servidor é feito utilizando XML. O protocolo SOAP especifica as regras que definem como o XML deve empacotar as mensagens. Um web service é identificado por um URI (Uniform Resource Identifier) e acedido pelos clientes, utilizando as mensagens formatadas em XML. O SOAP é utilizado para encapsular essas mensagens e transmiti-las sobre HTTP ou outro protocolo de mais baixo nível, como TCP ou SMTP. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 6 / 41 Introdução Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 7 / 41 Introdução Um web service implanta as descrições dos serviços, especificando as interfaces e outros aspectos do serviço que possam interessar aos potenciais clientes. Um web service geralmente fornece uma descrição do serviço, utilizando uma linguagem especifica, conhecida como Web Service Description Language (WSDL). Os web services fornecem acesso a recursos, mas não fornecem mecanismos de coordenação da operações. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 8 / 41 Outline 1 2 3 4 5 Sumário Introdução Web Services Combinação de web services Padrões de comunicação Representação de mensagens Referências de serviço Activação de serviços Transparência SOAP Descritores de serviços e IDL para web services WSDL Aplicações dos Web Services Service-oriented architecture Grid Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 9 / 41 Web Services A interface de um web service geralmente consiste num conjunto e operações que podem ser utilizadas por um cliente através da Internet. Um Web Service pode ser gerido por um Web Server, juntamente com uma série de páginas web, ou pode ser um serviço totalmente separado. Uma característica chave da maioria dos web services é que estes processam mensagens SOAP no formato XML. Em alternativa, existem web services REST (Representational State Transfer ), que utiliza uma descrição de serviços própria. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 10 / 41 Web Services A Amazon, o Yahoo, Google ou o eBay, são exemplos de servidores que utilizam web services para suportar determinadas operações, tais como, toda a manipulação de produtos e compras. Por exemplo, o serviço de associados da Amazon (associates.amazon.com), é disponibilizado tanto em SOAP como em REST e permite o desenvolvimento de aplicações third-party sobre os produtos e serviços da Amazon. Outro exemplo supra-citado é o webservice do eBay que permite fazer sniping, ou seja, licitar nos últimos segundos antes do fecho de um leilão. O uso do webservice permite uma acção muito mais rápida, do que seguindo a via normal, ou seja, através do web site. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 11 / 41 Web Services Combinação de web services Uma das características dos web services é capacidade de poderem invocar métodos de outros web services ou de serem combinados nas mais diversas aplicações. Imagine-se num serviço de marcação de viagens, hotel e aluguer de carro. Cada operador fornece os seus serviços via web service, permitindo que agentes e sites de viagens possam integrar o booking de diferentes componentes da viagem numa só operação. Exemplo mais concreto: a marcação de viagens na ryanair, permite que no mesmo processo se agende o hotel, o parque para o carro, ou o próprio carro, sendo cada serviço suportado por uma empresa distinta. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 12 / 41 Web Services Padrões de comunicação Os web services têm dois padrões de comunicação distintos. Considerando o exemplo dado anteriormente de booking, são: Num padrão o web service executa o processo de booking assincronamente, notificando o cliente de tempo-a-tempo numa perspectiva de dar feedback do desenrolar da acção. A performance não é um problema. Noutro padrão, como por exemplo, no processamento do pagamento, é necessário existir uma iteração pergunta-resposta com o cliente, sendo este um processo sincronizado. Resumindo, os web services suportam tanto comunicação assíncrona como síncrona, mesmo no caso de existir um protocolo pedido-resposta. Por exemplo, o cliente efectuar um pedido, o servidor processar durante tempo indeterminado, devolvendo o resultado quando este estiver pronto. Existem ainda mecanismos de subscrição de eventos, onde o servidor envia determinado resultado a todos os clientes subscritos. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 13 / 41 Web Services Representação de mensagens Tanto o protocolo SOAP como os dados nele transportados, estão codificados em XML. Essa representação textual ocupa mais espaço que os dados binários e requer mais tempo e processamento para ser interpretado. Esse tempo extra não é critico nos processos assíncronos, mas pode sê-lo nos pedidos-resposta síncronos. No entanto, a leiturabilidade de um protocolo de texto torna-o mais apropriado na comunicação a este nível aplicacional. Cada item no XML tem o seu tipo, que está a associado a um tipo definido no esquema referenciado. Não existindo limite para os tipos de items, torna o protocolo completamente flexível e potencialmente complexo no caso do número de elementos ser muito grande. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 14 / 41 Web Services Referências de serviço No geral, cada web service tem um URI (Uniform Resource Identifier), que normalmente é um URL, e que os clientes utilizam para acederem ao serviço. Uma vez que o URL é constituído pelo nome de domínio de determinado computador, o serviço ficará sempre associado a esse computador. No entanto, um serviço associado a um URN (Uniform Resource Name) passa a estar associado não à máquina, mas a um nome que é mapeado ao um URL, que pode ser alterado, permitindo maior flexibilidade. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 15 / 41 Web Services Activação de serviços Um serviço pode ser acedido directamente no servidor que o suporta, ou estar replicado por uma série de servidores, no caso de ser necessário suportar um grande número de clientes. Um serviço pode correr continuamente ou ser activado por um pedido. O URL é uma referência persistente uma vez que estará sempre a referenciar o serviço, desde que o mesmo se encontre presente na máquina. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 16 / 41 Web Services Transparência Um dos principais objectivos dos middleware orientados a objectos e componentes era tornar completamente transparente toda a complexidade relaccionada com a comunicação entre clientes e servidores. O outro objectivo era que as invocações remotas fossem semelhantes às invocações locais. Nos web services, nenhum destes pressuposto se coloca. No nível mais básico, tanto clientes como servidores devem ler e escrever as suas mensagens directamente em SOAP, utilizando XML. Por conveniência, as APIs das diferentes linguagens de programação, escondem muitos detalhes do SOAP e XML. Neste caso, é o descritor de serviços (WSDL no caso do SOAP) que serve de base para gerar automaticamente os processos de empacotamento e desempacotamento das mensagens. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 17 / 41 Web Services Transparência Existem duas formas de tornar o processo de invocação de serviços transparente: Proxies: Os proxies escondem as diferenças entre as chamadas locais e remotas, fornecendo modos estáticos de invocação, nos quais tanto a framework de chamada como os processos de empacotamento são gerados antes de qualquer invocação. Invocações Dinâmicas: Ao contrário dos proxies pode-se fornecer aos clientes um método genérico (doOperation), que recebe o nome da operação e os argumentos, convertendo-os para SOAP e XML no momento. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 18 / 41 Web Services - SOAP SOAP foi desenhado para permitir comunicação cliente-servidor e interacção assíncrona na Internet. SOAP define um esquema não só para utilizar XML na representação de mensagens pedido-resposta, como também para a comunicação de documentos. A versão original de SOAP foi desenhada só para suportar HTTP, mas actualmente já suporta protocolos de comunicação de mais baixo nível, nomeadamente SMTP, TCP, UDP. A especificação SOAP define: como o XML deve ser utilizado para definir o conteúdo de mensagens individuais. como um par de mensagens simples podem ser combinadas para criar padrões pedido-resposta. as regras de como os receptores das mensagens devem processar os elementos XML nestas contidos. como o HTTP e o SMTP devem ser utilizados para comunicar mensagens SOAP. OS slides seguintes apresentam os detalhes de SOAP, que normalmente já estão implementados nas diversas APIs existentes. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 19 / 41 Web Services - SOAP Mensagens SOAP A mensagem SOAP é transportada dentro de um envelope, que contem um cabeçalho opcional e o corpo da mensagem. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 20 / 41 Web Services - SOAP Mensagens SOAP Como mencionado anteriormente, uma mensagem SOAP pode servir para transmitir documentos ou para suportar comunicação cliente-servidor. O documento a ser comunicado é colocado directamente no corpo, juntamente com uma referência para um esquema XML contendo o descritor o serviço, que por sua vez define os nomes e tipos usados no documento. Estas mensagens podem ser síncronas ou assíncronas. Para comunicação cliente-servidor o corpo contem ou o pedido ou a resposta. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 21 / 41 Web Services - SOAP Mensagens SOAP Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 22 / 41 Web Services - SOAP Transporte de mensagens SOAP Um protocolo de transporte é requerido para enviar as mensagens SOAP para o destino. As mensagens SOAP são independentes do tipo de transporte utilizado, uma vez que os envelopes não contêm qualquer referência ao endereço de destino. O protocolo HTTP, ou qualquer outro que seja utilizado, é o responsável por especificar o endereço de destino. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 23 / 41 Outline 1 2 3 4 5 Sumário Introdução Web Services Combinação de web services Padrões de comunicação Representação de mensagens Referências de serviço Activação de serviços Transparência SOAP Descritores de serviços e IDL para web services WSDL Aplicações dos Web Services Service-oriented architecture Grid Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 24 / 41 Descritor de serviços e IDL A definição de interfaces é o ponto central que permite a comunicação entre cliente e servidores. Nos web services, a definição de interfaces é fornecida em conjunto com descritores de serviços mais abrangentes, que incluem como a mensagem deve ser comunicada (ex. SOAP sobre HTTP) e o URI do sistema. De modo a ser suportado por qualquer linguagem o descritor é escrito em XML. A descrição de um serviço é a base do acordo entre cliente e servidor, contendo todos os factos acerca do serviço que é relevante para os clientes. Os descritores de serviço são normalmente utilizados para gerar os stubs de clientes que automaticamente implementam o comportamento correcto para o cliente. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 25 / 41 Descritor de serviços e IDL WSDL WSDL - Web Service Description Language é a IDL normalmente utilizada nos descritores de serviços. WSDL 2.0 faz parte das recomendações do W3C, definindo um esquema XML para representar componentes de um descritor de serviço, que incluem, por exemplo, a definição dos elementos, tipos, mensagens, vinculações e serviços. O WSDL separa a parte abstracta do serviço da parte concreta. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 26 / 41 Descritor de serviços e IDL WSDL A parte abstracta da descrição incluí um conjunto de definições de tipos utilizados pelo serviço, em particular, os tipos dos valores trocados nas mensagens. Se determinada interface utiliza tipos simples como int, float, strings, etc., utiliza-os directamente no XML. No entanto, se os tipos são objectos, esses são marcados como complexType, e representados pelo conjunto de tipos simples que o compõem. Ex: objecto XPTO, composto por um boolean, um int e uma string: element name = "isRunning" type="boolean" element name = "origem" type="int" element name = "nome" type="string" Ao conjunto de nomes definidos na secção types do WSDL chama-se target namespace. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 27 / 41 Descritor de serviços e IDL WSDL A secção da mensagem, na parte abstracta, contem a descrição do conjunto de mensagens trocadas. Para o caso de troca de documentos directa, estas mensagens são utilizadas directamente. Para o caso de pedidos-resposta, existem duas mensagens por cada operação, que são utilizadas para descrever as operações na secção interface. A parte concreta especifica como e onde o serviço pode ser contactado. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 28 / 41 Descritor de serviços e IDL WSDL - Mensagens ou operações Nos web services, tudo o que é necessário é que o cliente e o servior partilhem a ideia de como as mensagens devem ser trocadas. Para um serviço baseado na troca de um pequeno número de tipos de documentos, o WSDL apenas descreve os tipos das mensagens trocadas. Quando um cliente envie uma dessas mensagens ao web service, este decide que operação executar e que mensagem retornar, com base no tipo da mensagem recebida. Para serviços que suportam diferentes tipos de operações, é mais eficiente especificar as mensagens trocadas como pedidos para operações, passando argumentos e as respectivas respostas, permitindo o serviço despachar cada pedido para a operação apropriada. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 29 / 41 Descritor de serviços e IDL WSDL - Interface O conjunto de operação pertencentes a determinado web service, são agrupadas num elemento XML chamado interface. Cada operação deve especificar o padrão de troca de mensagens entre cliente e servidor, seguindo as seguintes opções. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 30 / 41 Descritor de serviços e IDL WSDL - Interface In-Out é o típico utilizado em pedido-resposta entre cliente e servidor. Neste caso a resposta pode ser substituída por uma fault message. In-Only é só para pedidos sem resposta, numa semântica talvez. Out-only segue o mesmo pressuposto mas no sentido inverso. Robust In-Only e Robust Out-Only correspondem às mensagens com garantias de entrega. O WSDL 2.0 é ainda extensível na perspectiva em que cada organização pode definir os seus próprios padrões de comunicação. Cada interface WSDL pode estender de uma ou mais interfaces, seguindo um método simples de herança. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 31 / 41 Descritor de serviços e IDL WSDL - Parte concreta A parte concreta do WSDL consiste no binding (a escolha do protocolo) e no service (a escolha do endpoint ou do endereço do servidor). Binding: Define que formato de mensagens e representação de dados externos deve ser utilizado. soap:binding especifica o URL do protocolo para transmitir envelopes SOAP. Pode conter várias opções, como o style=rpc que define que é um request-reply. Define ainda cada operação, onde deve ser transportada (soap:body ) e como deve ser transmitida (soapAction). Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 32 / 41 Descritor de serviços e IDL WSDL - Parte concreta A parte concreta do WSDL consiste no binding (a escolha do protocolo) e no service (a escolha do endpoint ou do endereço do servidor). Service: Cada elemento service presente num documento WSDL especifica o nome do serviço e um ou mais endpoints, nos quais as instâncias do serviço podem ser contactadas. Cada endpoint refere-se ao nome do binding em uso e, no caso de SOAP, utiliza soap:address para especificar o URI do serviço. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 33 / 41 Outline 1 2 3 4 5 Sumário Introdução Web Services Combinação de web services Padrões de comunicação Representação de mensagens Referências de serviço Activação de serviços Transparência SOAP Descritores de serviços e IDL para web services WSDL Aplicações dos Web Services Service-oriented architecture Grid Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 34 / 41 Aplicações de web services Os web services são hoje em dia um dos paradigmas dominantes na programação de sistemas distribuídos. Nas seguintes sub-secções vamos abordar três áreas onde os web services são massivamente utilizados, nomeadamente em SOA, grid e cloud computing. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 35 / 41 Aplicações de web services SOA SOA é um conjunto de princípios de design sobre os quais os sistemas distribuídos são desenvolvidos utiliza no conjuntos de serviços que podem ser dinamicamente descobertos e que depois comunicam e coordenam com os restantes. SOA é um conceito abstracto que pode ser implementado utilizando uma variedade de tecnologias, incluindo objectos e componentes distribuídos. No entanto, o principal meio de implementar SOA é através de web services, principalmente pela independência e flexibilidade que estes fornecem. Este estilo pode ser introduzido nas organização para oferecer arquitecturas de software flexíveis e para alcançar interoperabilidade entre os vários serviços. Permite que uma empresa que utilize CORBA e outra que utilize .NET partilhem/forneçam serviços entre si, numa perspectiva B2B. Para além disso SOA ainda permite que facilmente se faça mashup, ou seja, que aplicações third-party sejam implementadas através da combinação de vários web services, fornecidos por outras empresas. O exemplo da Amazon ou do eBay que mantêm web services públicos que permitem esse tipo de desenvolvimentos por terceiros. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 36 / 41 Aplicações de web services Grid O termo Grid é utilizado para referenciar middlewares que são desenhados para permitir a partilha de recursos, tais como, ficheiros, computadores, software, data e sensores em ambientes de larga escala. Esses recursos são partilhados tipicamente por grupos de utilizadores em diferentes organizações que estão a colaborar na solução de um problema requerendo um largo número de computadores, tanto para a partilha de dados como para a partilha de recursos físicos, como capacidade de processamento. Esses recursos devem ser necessariamente suportados por sistemas heterogéneos, com diferente hardware, SO, linguagens de programação e aplicações. É necessário um sistema de gestão e recursos para garantir que os clientes obtêm o que pretendem e que os servidores têm capacidade de resposta. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 37 / 41 Aplicações de web services Grid Existem vários exemplos entre nós, tais como o Setti@Home ou o Folding@Home, ambos com a partilha de recursos físicos em prol de um objectivo comum que envolve o processamento de Big Data. Este tipo de aplicações requer por um lado que os participantes recebam tranches de dados, analisem e devolvam para a base de dados. Depois, exige uma série de serviços de pesquisa e obtenção de resultados, que serão utilizadas pelos cientistas responsáveis e que normalmente são disponibilizados via web services. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 38 / 41 Aplicações de web services Cloud computing Cloud computing é um conjunto de aplicações de Internet, armazenamento e serviços computacionais suficientes para suportar a maioria das necessidades dos utilizadores, evitando a necessidade de possuir recursos próprios e locais. A computação na cloud ainda promove qualquer elemento como um serviço, desde infraestruturas físicas ou virtualizadas até software. Com esta visão de tudo como serviços, os web services oferecem uma implementação natural do conceito de cloud computing. Um bom exemplo é o Amazon Web Services (aws.amazon.com), que não é nada mais, nada menos, do que um conjunto de serviços implementados na cloud, sobre a enorme infraestrutura que a Amazon possuí. Originalmente implementada para suportar os requisitos internos, rapidamente a Amazon passou a disponibilizar os seus recursos físicos para o exterior, maximizando assim o rendimento de recursos, até então, sub-aproveitados. O AWS garante alguns pontos chave dos sistemas distribuídos, tais como, disponibilidade, escalabilidade e performance, permitindo que os utilizadores se foquem somente no uso dos serviços, que são fornecidos via web services. Deste modo, programadores que conheçam a tecnologia, facilmente implementam serviços mashup, sobre os serviços da Amazon. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 39 / 41 Aplicações de web services Cloud computing Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 40 / 41 Questões? [email protected] Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November 29, 2014 41 / 41