Sieciowe programowanie rozproszone SOA, WebServices i systemy gridowe Krzysztof Banaś Systemy rozproszone 1
Technologie WWW Nowszymi sposobami organizacji i technologiami w dziedzinie obliczeń rozproszonych (będącymi wciąż w fazie rozwoju) są: architektura usługowa (Service Oriented Architecture SOA) sposób organizacji systemów rozproszonych, w którym rozważa się każdy system poprzez pryzmat świadczonych przez niego usług Web Services technologia przetwarzania rozproszonego oparta o technologie WWW systemy gridowe systemy, w których rozproszone zasoby udostępniane są w sposób niezależny od fizycznej realizacji Krzysztof Banaś Systemy rozproszone 2
SOA Service Oriented Architecture Termin Service Oriented Architecture jest określeniem architektury systemów rozproszonych, w których wyróżnia się: usługobiorcę klienta korzystającego z usług dostawcę usług usługą jest realizacja pewnego przetwarzania z wykorzystaniem dostarczonych danych rejestr usług miejsce, gdzie klient uzyskuje informacje o potrzebnych mu usługach Podstawą SOA jest wykorzystanie przesyłania komunikatów do wymiany informacji między uczestnikami przetwarzania Architektury usługowe odróżnia się od architektur obiektowych i architektur komponentowych Krzysztof Banaś Systemy rozproszone 3
SOA Service Oriented Architecture Dostarczając usługę w ramach architektury usługowej należy w ogólnie znanym i dostępnym rejestrze dokonać zgłoszenia: miejsca dostępności usługi sposobu korzystania z usługi Klient chcący korzystać z określonej usługi: wyszukuje w ogólnie znanych i dostępnych rejestrach opisy świadczonych usług wybiera najbardziej mu odpowiadającą kontaktuje się z serwerem usługi w celu realizacji przetwarzania Krzysztof Banaś Systemy rozproszone 4
SOA Service Oriented Architecture Sposób korzystania z usługi jest równoważny interfejsowi oprogramowania realizującego usługę Interfejs taki powinien być napisany w sposób niezależny od: języka programowania systemu operacyjnego sprzętu realizującego obliczenia Sposób powiązania usługodawcy z usługobiorcą za pomocą tak określonych interfejsów określa się jako luźny (loosely coupled) Krzysztof Banaś Systemy rozproszone 5
SOA Service Oriented Architecture Usługi zgłoszone w systemach SOA mogą być jednocześnie klientami innych usług W ten sposób można tworzyć złożone schematy przetwarzania (workflows) składające się z wielu, odpowiednio zorganizowanych usług Architektura usługowa (SOA) jest w tym ujęciu przeciwstawiona architekturze komponentowej (CBD) ten sam cel ponowne wykorzystanie oprogramowania SOA realizacja za pomocą organizacji usług sieciowych CBD lokalne komponowanie dostarczonych fragmentów oprogramowania Krzysztof Banaś Systemy rozproszone 6
SOA Service Oriented Architecture Problemami, które musza być rozwiązane przy realizacji systemów SOA są: wydajność (ale wydajność komunikacji rośnie w ostatnich latach szybciej niż wydajność przetwarzania przez systemy komputerowe) niezawodność bezpieczeństwo (tutaj pomocne może być wykorzystanie technologii WWW, w których od lat próbuje się rozwiązać problemy bezpieczeństwa) Krzysztof Banaś Systemy rozproszone 7
Web Services (usługi internetowe) Nazwą Web Services określa się dziś jedną z możliwych realizacji modelu SOA, umożliwiającą wykorzystanie istniejącej infrastruktury internetowej (protokół HTTP, przeglądarki) Web Services oznaczają oprogramowanie dostępne poprzez sieć zbudowane zgodnie z określonymi standardami Organizacjami rozwijającymi standardy Web Services są między innymi: W3C World Wide Web Consortium OASIS Organization for the Advancement of Structured Information Standards Krzysztof Banaś Systemy rozproszone 8
Web Services (usługi internetowe) Web Services wykorzystują następujące specyfikacje, aby przystosować przetwarzanie rozproszone do standardowego środowiska internetowego: XML język, który może być przetwarzany przez maszyny SOAP protokół przesyłu danych wykorzystujący XML WSDL język opisu usług wykorzystujący XML Krzysztof Banaś Systemy rozproszone 9
WebServices Krzysztof Banaś Systemy rozproszone 10
XML XML (extensible Markup Language) główną cechą języka XML jest możliwość rozszerzania go o nowe konstrukcje, dzięki czemu może służyć do opisu coraz to innych dziedzin W ramach konkretnych dziedzin, w których stosuje sie XML wypracowywane są standardy opisu dziedziny za pomocą XML i na ich podstawie programy przetwarzające teksty w XML Sam standard definiujący XML nie jest rozbudowany, natomiast istnieje już wiele rozległych standardów wykorzystania XML w konkretnych dziedzinach Krzysztof Banaś Systemy rozproszone 11
SOAP SOAP jest standardem wymiany komunikatów zapisanych w XML Komunikaty SOAP można wymieniać za pomocą różnych środków transmisji, choć najpopularniejszymi i preferowanymi są protokoły HTTP lub HTTPS SOAP został zaprojektowany ze szczególnym uwzględnieniem wymiany komunikatów w ramach zdalnego wywołania procedur W ramach środowisk programowania istnieją narzędzia, które projektują postać komunikatów SOAP dla konkretnych wywołań procedur zdalnych Krzysztof Banaś Systemy rozproszone 12
SOAP żądanie POST /webservices/tempconvert.asmx HTTP/1.1 Host: www.w3schools.com Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:body> <FahrenheitToCelsius xmlns="http://tempuri.org/"> <Fahrenheit>string</Fahrenheit> </FahrenheitToCelsius> </soap12:body> </soap12:envelope> Krzysztof Banaś Systemy rozproszone 13
SOAP odpowiedź HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:body> <FahrenheitToCelsiusResponse xmlns="http://tempuri.org/"> <FahrenheitToCelsiusResult>string</FahrenheitToCelsiusResult> </FahrenheitToCelsiusResponse> </soap12:body> </soap12:envelope> Krzysztof Banaś Systemy rozproszone 14
WSDL WSDL jest językiem opisu usług sieciowych podobnym w funkcji do IDL CORBY WSDL nie posługuje się modelem obiektowym WSDL zapisywany jest w XML W przeciwieństwie do IDL opis interfejsu usługi w WSDL zazwyczaj nie jest tworzony przez programistę, ale przez środowisko programowania rozproszonego Opis w WSDL zawiera informację o formie wymiany komunikatów przy wywoływaniu zdalnych procedur Krzysztof Banaś Systemy rozproszone 15
WSDL Dokument WSDL (napisany w XML) zawiera następujące elementy: <interface> odpowiednik interfejsu IDL lub definicji klasy abstrakcyjnej w obiektowych językach programowania; element <interface> zawiera elementy <operation> opisujące pojedyncze procedury <message> opisuje wymianę komunikatów związaną z wywołaniem procedury (argumenty wejścia i wyjścia) <types> typy danych użytych jako argumenty <binding> sposób realizacji wywołania, użyty protokół, itp. <service> połączenie interfejsu, sposobu realizacji wywołania i adresu internetowego dla uzyskania ostatecznej definicji usługi Krzysztof Banaś Systemy rozproszone 16
WSDL opis prostej funkcji <definitions targetnamespace="http://endpoint.helloservice/" name="helloservice"> <types> <xsd:schema> <xsd:import namespace="http://endpoint.helloservice/" schemalocation="http://localhost:8080/helloservice/hello?xsd=1"/> </xsd:schema> </types> <message name="sayhello"> <part name="parameters" element="tns:sayhello"/> </message> <message name="sayhelloresponse"> <part name="parameters" element="tns:sayhelloresponse"/> </message> <porttype name="hello"> <operation name="sayhello"> <input message="tns:sayhello"/> <output message="tns:sayhelloresponse"/> </operation> </porttype> Krzysztof Banaś Systemy rozproszone 17
WSDL opis prostej funkcji <binding name="helloportbinding" type="tns:hello"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sayhello"> <soap:operation soapaction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="helloservice"> <port name="helloport" binding="tns:helloportbinding"> <soap:address location="http://localhost:8080/helloservice/hello"/> </port> </service> </definitions> Krzysztof Banaś Systemy rozproszone 18
Web Services i CORBA Web Services realizują podobny model przetwarzania rozproszonego jak CORBA Zaletą Web Services jest korzystanie z technologii WWW (HTTP), posiadających m.in. rozwinięte mechanizmy zabezpieczeń (HTTPS) Web Services nie dorównują (jeszcze...) systemom CORBY w dziedzinach: wsparcia modelu obiektowego bogactwa dodatkowych usług związanych z przetwarzaniem Systemy CORBY mogą stać się dostawcami usług Web Services, istnieje standard przekładu języka IDL na WSDL Krzysztof Banaś Systemy rozproszone 19
Porównanie technologii Technology Connect time Send string (21,000 characters) Receive string (22,000 characters) Send 5,000 integers Client LOC Server LOC Actual message size sending 1,000 characters Actual message size sending 100 integers Raw sockets 0.002242 0.001377 0.001359 6.740674 57 25 2,279 85,863 CORBA 0.000734 0.004601 0.002188 1.523799 37 18 2,090 27,181 XML-RPC 0.007040 0.082755 0.050199 100.337219 29 17 4,026 324,989 SOAP 0.000610 0.294198 0.279341 1,324.296742 32 10 4,705 380,288 źródło: http://www.ibm.com/developerworks/webservices/library/ws-pyth9/ Krzysztof Banaś Systemy rozproszone 20
Systemy gridowe Nazwa systemów gridowych wywodzi się od nazwy sieci elektroenergetycznej w USA Power Grid i od idei korzystania z zasobów obliczeniowych podobnie jak z zasobów energii elektrycznej W wizji tej pojedynczy użytkownik po podłączeniu do sieci (i uiszczeniu odpowiednich opłat) uzyskuje dostęp do mnogości usług w jednolity sposób i niezależnie od konkretnego sposobu implementacji tych usług oraz stosowanego sprzętu Idea systemów gridowych narodziła się w środowiskach naukowych i wspierana jest przez koncepcję e Nauki Krzysztof Banaś Systemy rozproszone 21
Wizja E-nauki 2100 2100 2100 2100 Współpraca 2100 2100 2100 2100 Laboratoria i instrumenty Przechowanie danych Obliczenia E-naukowiec Wizualizacja Krzysztof Banaś Systemy rozproszone 22
Systemy gridowe (Grids) Początkowo systemy gridowe rozwijane były w ramach programów badawczych ukierunkowanych na zastosowania naukowe (projekty Condor, Globus) Z czasem idee systemów gridowych i stosowane narzędzia zaczęły przenikać się z ich odpowiednikami w obszarze zastosowań biznesowych czy popularnych Specyfikacje systemów gridowych opracowywane są przez organizacje (głównie grupy robocze GGF Global Grid Forum) w postaci rekomendacji Rekomendacje GGF ukierunkowane są na wszystkie obszary zastosowań Krzysztof Banaś Systemy rozproszone 23
Systemy gridowe (Grids) W systemach gridowych rozważa się dostęp do zasobów i ich wykorzystanie poprzez pewien jednolity system Jednolitość systemu ma być zapewniona poprzez wirtualizację zasobów, tzn. każdy zasób jest przedstawiany jako pewien możliwy do zrealizowania zestaw usług Ze względu na oparcie systemów gridowych na usługach ostatnie specyfikacje GGF wskazują na Web Services jako podstawę realizacji Krzysztof Banaś Systemy rozproszone 24
Systemy gridowe (Grids) Zasoby informatyczne tworzące systemy gridowe są ze swej natury heterogeniczne i rozproszone Stanowią je: urządzenia (procesory, dyski, drukarki, urządzenia pomiarowe, wyposażenie laboratoriów, urządzenia sieciowe, itp.) programy, bazy danych, pliki Ideą jest tworzenie systemów gridowych i współdzielenie zasobów przez różne podmioty, geograficznie rozproszone, tworzące tzw. wirtualne organizacje (VO) Krzysztof Banaś Systemy rozproszone 25
Systemy gridowe (Grids) Jednymi z podstawowych zadań jakie muszą zostać rozwiązane w ramach systemów gridowych są: bezpieczeństwo m.in. jak połączyć bezpieczne korzystanie z rozproszonych zasobów z ideą traktowania systemu gridowego jako jednolitej całości (a więc np. z tylko jednym logowaniem do całego systemu) wydajność jak zagwarantować maksymalna wydajność całości systemu rozproszonego, m.in. jak równoważyć obciążenie całości systemu (może to wymagać migracji zadań pomiędzy poszczególnymi zasobami) Krzysztof Banaś Systemy rozproszone 26
Systemy gridowe (Grids) Systemy gridowe poprzez oparcie na usługach mogą być organizowane zgodnie z typowym standardem SOA (usługobiorca, usługodawca, rejestr) Wartością dodaną związaną z systemami gridowymi jest rozbudowana warstwa usług związanych z zarządzaniem zasobami Systemy gridowe mogą także udostępniać swoje usługi na zewnątrz w ramach szerszego systemu zorganizowanego zgodnie z zasadami SOA Krzysztof Banaś Systemy rozproszone 27
Systemy gridowe (Grids) Systemy gridowe z założenia mają być budowane w oparciu o standardy Liczba tych standardów ciągle rośnie, wraz z rozszerzaniem obszarów stosowania systemów gridowych Podstawowym standardem GGF jest OGSA (Open Grid Software Architecture) specyfikacja określająca ogólna budowę systemów gridowych Krzysztof Banaś Systemy rozproszone 28
Systemy gridowe (Grids) Systemy gridowe mają swoje realizacje publicznie dostępne w ramach otwartego oprogramowania (wciąż podstawową jest Globus Toolkit, obecnie w wersji 4) Wielu producentów sprzętu (Sun, IBM, HP i inni) oraz oprogramowania (Sun, Oracle, Microsoft) dostarcza także swoje komercyjne wersje systemów gridowych (często będące rozwinięciami lub modyfikacjami systemów publicznie dostępnych) Twórcy oprogramowania dostarczają także platformy i środowiska do tworzenia oprogramowania gridowego Krzysztof Banaś Systemy rozproszone 29
Globus Toolkit version 4 Krzysztof Banaś Systemy rozproszone 30