Projektowanie architektury systemu rozproszonego Jarosław Kuchta
Zagadnienia Typy architektury systemu Rozproszone przetwarzanie obiektowe Problemy globalizacji Problemy ochrony Projektowanie architektury systemu 2/20
Typy architektury systemowej Architektura bazująca na serwerze Architektura bazująca na kliencie Architektura klientserwer z "cienkim" klientem z "grubym" klientem Interfejs użytkownika Logika aplikacyjna Logika dostępu do danych Przechowywanie danych Klient Serwer Projektowanie architektury systemu 3/20
Architektura bazująca na serwerze Serwer mainframe przechowywanie danych, cała logika Klient terminal tylko interfejs użytkownika Komunikacja Remote Desktop Protocol Prosta w projektowaniu RDP Duże prawdopodobieństwo przeciążenia serwera Bardzo kosztowna Terminal modernizacja Interfejs użytkownika Serwer Logika aplikacyjna Logika dostępu do danych Przechowywanie danych Projektowanie architektury systemu 4/20
Architektura bazująca na kliencie Serwer tylko do pobierania aplikacji i ew. łączenia klientów Bezpośrednia wymiana danych między klientami (peer-to-peer) Łatwa aplikacja Problem z bezpieczeństwem klientów Serwer Klient Klient Interfejs użytkownika Logika aplikacyjna Logika dostępu do danych Przechowywanie danych Projektowanie architektury systemu 5/20
Architektura klient-serwer Logika aplikacyjna może być dzielona między klienta i serwer Łatwo skalowalna Możliwość stosowania różnych typów klientów i serwerów 1000 x niższy koszt niż architektury bazującej na serwerze przy tym samym poziomie wydajności Ograniczona złożoność aplikacji Odmiany: cienki klient gruby klient Klient Interfejs użytkownika Logika aplikacyjna Serwer Przechowywanie danych Logika dostępu do danych Projektowanie architektury systemu 6/20
Odmiany architektury klient-serwer Cienki klient Cała logika po stronie serwera Klient tylko korzysta z przeglądarki Logika aplikacji zazwyczaj prosta (aplikacje oparte na bazie danych) Zagrożenie przeciążenia serwera Gruby klient Logika aplikacyjna na kliencie Aplikacja pobierana z serwera Aplikacja wykonywana w: środowisku przeglądarki (ograniczenia środowiska) środowisku systemu operacyjnego Zaawansowana logika aplikacji (modelowanie, grafika, gry) Zagrożenie bezpieczeństwa klienta (trojany) Projektowanie architektury systemu 7/31
Podział logiki aplikacyjnej Architektura dwupienna (dwuwarstwowa) (two-tiered) cała logika aplikacyjna u klienta Architektura trójpienna (trójwarstwowa) (three-tiered) logika aplikacyjna na wydzielonym serwerze aplikacji Architektura wielopienna (wielowarstwowa) (n-tiered) wiele serwerów aplikacji i/lub wiele serwerów bazy danych Projektowanie architektury systemu 8/20
Architektura dwupienna (two-tiered) Cała logika na jednym serwerze Stosunkowo łatwe rozwiązanie Duże prawdopodobieństwo przeciążenia serwera Klient Interfejs użytkownika Serwer Logika aplikacyjna Logika dostępu do danych Przechowywanie danych Projektowanie architektury systemu 9/20
Architektura trójpienna (three-tiered) Logika aplikacyjna wydzielona do osobnego serwera Dane przechowywane na osobnym serwerze Możliwość skalowania (wiele serwerów aplikacji) Klient Interfejs użytkownika Serwer(y) aplikacji Logika aplikacyjna Serwer danych Logika dostępu do danych Przechowywanie danych Projektowanie architektury systemu 10/20
Architektura wielopienna (multitiered) Osobny serwer WWW obsługuje żądania HTTP na RPC Logika aplikacyjna wydzielona do osobnego serwera Dane przechowywane na osobnym serwerze Możliwość skalowania (wiele serwerów WWW i aplikacji) Zwiększone bezpieczeństwo Klient Interfejs użytkownika HTTP RPC Serwer(y) WWW Serwer(y) aplikacji Logika prezentacji Logika aplikacyjna Serwer danych Logika dostępu do danych Przechowywanie danych Projektowanie architektury systemu 11/20
Architektura wielowarstwowa (multilayered) Presentation Layer Application Logic Services Data Management Foundation Data Layer Projektowanie architektury systemu 12/20
Pakiet Foundation (pseudowarstwa) Pakiet Foundation obejmuje klasy wykorzystywane bezpośrednio we wszystkich innych warstwach: definicje podstawowych typów danych (np. typy wyliczeniowe), definicje podstawowych struktury danych (np. listy, drzewa, stosy), użyteczne typy abstrakcyjne (data, czas, waluta) operacje dodatkowe, które nie są dostarczane przez biblioteki Projektowanie architektury systemu 13/20
Data Layer Warstwa danych (Data) zawiera komponenty odpowiedzialne za przechowywanie (zapisywanie i odczytywanie) danych: bazy danych (tabele, kwerendy) repozytoria plików Wymaga określenia: które klasy są trwałe (dane przechowywane między sesjami) jaki sposób przechowywania będzie stosowany (baza danych, pliki) jaki format zapisu danych będzie stosowany (tekstowy, binarny) jaki typ bazy danych będzie stosowany (relacyjna, obiektowa) Projektowanie architektury systemu 14/20
Data Management Warstwa zarządzania danymi (Data Management) zawiera klasy odpowiedzialne za dostęp do przechowywanych danych. Umożliwia: ochronę danych przed nieupoważnionym dostępem współdzielenie danych między wieloma użytkownikami walidację wprowadzanych danych synchronizację baz danych (w przypadku rozproszonej b.d.) Projektowanie architektury systemu 15/20
Service Layer Warstwa usług (Services) jest typowa dla systemów rozproszonych, w których wiele różnych aplikacji może operować na tych samych danych. Zawiera klasy (funkcje) grupujące operacje biznesowe na danych Udostępnia jednolity interfejs dla aplikacji klienckich Projektowanie architektury systemu 16/20
Application Logic Warstwa logiki aplikacji (Application Logic) zwana również warstwą biznesową (Business Domain) zawiera klasy realizujące operacje wymagane w konkretnej aplikacji wynikające z analizy wymagań Może występować po stronie klienta Gdy występuje po stronie serwera, to zazwyczaj zintegrowana w warstwą usług Projektowanie architektury systemu 17/20
Presentation Logic Warstwa prezentacji (Presentation Layer) zawiera komponenty interfejsu użytkownika (okna, strony etc.): umożliwia użytkownikowi wydawanie poleceń dla systemu i wprowadzanie danych prezentuje dla użytkownika dane przetwarzane przez warstwę logiki aplikacji Projektowanie architektury systemu 18/20
Przykładowa struktura klas z podziałem na warstwy Presentation Layer «form» Customer «form» Order Application Logic Customer Order Services Authorization Sales Data Management Customers Orders Data Layer «table» Customers «table» Orders Projektowanie architektury systemu 19/20
Literatura Dennis A., Wixom B.H., Tegarden D., Systems Analysis & Design. An Object-Oriented Approach with UML, John Wiley and Sons, USA, 2002 Projektowanie architektury systemu 20/20