Komputer - klient czy serwer?

Dwa słowa - klient/serwer - pojawiają się od pewnego czasu w literaturze i prasie informatycznej nieomal nierozłącznie. Obu terminów używa się i będzie się zapewne używać w niedalekiej przyszłości coraz częściej - stanowią one bowiem wykładnię nowej strategii projektowania i implementowania złożonych systemów informatycznych. Dotyczy to zarówno sprzętu jak i oprogramowania. Jest to swego rodzaju znak czasów, w których skomplikowana rzeczywistość domaga się od programistów wyrafinowanych systemów do jej analizy i rozwiązywania stwarznych przez nią problemów.

Dwa słowa - klient/serwer - pojawiają się od pewnego czasu w literaturze i prasie informatycznej nieomal nierozłącznie. Obu terminów używa się i będzie się zapewne używać w niedalekiej przyszłości coraz częściej - stanowią one bowiem wykładnię nowej strategii projektowania i implementowania złożonych systemów informatycznych. Dotyczy to zarówno sprzętu jak i oprogramowania. Jest to swego rodzaju znak czasów, w których skomplikowana rzeczywistość domaga się od programistów wyrafinowanych systemów do jej analizy i rozwiązywania stwarznych przez nią problemów.

Jak wykazały lata praktyki, skomplikowane problemy najwygodniej jest rozbić na szereg prostych podproblemów. Każdemu z nich odpowiada w programie albo moduł świadczący usługi albo moduł zgłaszający takie zapotrzebowanie. Właśnie ta idea przyświeca modelowi typu klient/serwer. Każdy z tych dwu wyrazów może oznaczać zarówno moduł hardware'owy jak i software'owy, który udostępnia usługi na rzecz potencjalnych modułów klienckich w rozproszonym środowisku przetwarzania. Środowisko rozproszone... ale w sensie logicznym (nie koniecznie zaś w sensie topograficznym). Serwerem może być więc komputer w sieci, który udostępnia łączącym się z nim maszynom swoje pliki. Może być nim także oprogramowanie na nim uruchomione, którego zadaniem jest obsługa żądań zgłaszanych przez odpowiednie porty ze strony "zagranicznych" komputerów (a raczej pracujących na nim aplikacji). Jednocześnie w systemach wielozadaniowych żądania obsługi przychodzą bardzo często od aplikacji wykonujących się równolegle na tym samym procesorze. W każdym z rozważanych przypadków mamy do czynienia z klientem i serwerem. Na początku prawdopodobnie najłatwiej o nich myśleć w kategoriach dwu maszyn, które komunikują się ze sobą oraz wymieniają informacje poprzez łącza sieciowe. Kiedy jednak uświadomimy sobie, że tak naprawdę to nie bezrozumne maszyny, lecz inteligentne programy na nich pracujące, porozumiewają się ze sobą, to łatwo dojdziemy do wniosku, że środowisko rozproszone - w którym egzystują programy typu klient/serwer -jest takie nie ze względu na odległości fizyczne, ale podział zadań pomiędzy procesy.

Przeciwieństwem takiego podejścia, są komputery osobiste. Osobiste, a więc przeznaczone dla potrzeb indywidualnych osób, bez możliwości dzielenia zasobów.

Jak wszyscy dobrze wiemy człowiek (...pracujący przy komputerze) jest osobą społeczną i dość szybko zaczął odczuwać potrzebę komunikowania się ze światem zewnętrznym, a były to wspólne drukarki i dyski. ...Nie bądźmy takimi idealistami, oczywiście zadecydowały o tym pieniądze, gdyż nie stać było ludzi na postawienie na każdym biurku drogiej drukarki. Zaszła więc potrzeba połączenia komputerów w sieć i kierowania wydruków na wspólną drukarkę. I był to historyczny moment, gdyż trzeba było wymyśleć tzw. serwer drukowania. Mógł to być osobny komputer, który przejmował na siebie wszystkie obowiązki związane z przyjmowaniem dokumentów do wydruku, odpowiednim ich kolejkowaniem, przydzielaniem priorytetów zleceniom (w zależności od kogo przyszły) i wysyłaniem na drukarkę w momentach, gdy była włączona i nie realizowała innego zlecenia. Ten komputer stał się więc pośrednikiem pomiędzy maszynami-klientami poszczególnych użytkowników, a drukarką. Jego zadaniem było świadczenie usług związanych z drukowaniem, tak aby indywidualny użytkownik (a raczej aplikacja, z którą pracował) nie musiał się już więcej martwią, czy wysłany przez niego dokument trafi do drukarki w chwili, gdy będzie ona zajęta. Niech troszczy się o to serwer, gdyż takie jest jego jedyne zadanie! Komputer osobisty musi jedynie wysłać żądanie do serwera i nie "marnować" więcej czasu. Korzyść więc z tego podwójna: wystarcza jedna (nawet trochę lepsza i droższa) drukarka, oraz zaoszczędzony czas procesora komputera klienta.

Obok serwerów drukarek, zaczęły się pojawiać serwery dysków czy innych nie najtańszych urządzeń, które można było uwspólnić. Takie były początki rozwoju technologii klient/serwer dla komputerów osobistych. Serwery były swego rodzaju inteligentnymi przełącznikami" drogiego hardware'u: drukarek i dysków. Nieco inna idea przyświecała tworzeniu serwerów na minikomputerach i dużych komputerach (mainframe), na których przetwarzane są bazy danych. Oczywiście serwer nadal obsługuje zgłaszające się do niego aplikacje klienckie, niemniej jego podstawową funkcją jest zapewnienie dostępu do wspólnych zasobów informacji. Pierwotnie olbrzymie bazy danych umieszczano i przetwarzano na potężnych komputerach z uwagi na ich ogromną moc obliczeniową (w stosunku do komputerów osobistych). W naturalny więc sposób serwery baz danych przejmowały nie tylko funkcje bezmyślnego manipulowania danymi (tworzenia rekordów, ich sortowania, indeksowania), ale również utrzymywania spójności danych przy pracy wielodostępnej. Koniecznością stało się blokowanie dostępu do plików używanych już przez jednego użytkownika. Z czasem podwyższono sprawność systemów przez wprowadzenie blokowania na poziomie poszczególnych rekordów. Serwer stał się więc nie tylko usługodawcą, ale i strażnikiem koherentności oddanej mu do dyspozycji wiedzy.

Komputery osobiste, pomimo ogromnego postępu technologicznego, nadal nie dorównują we wszystkim

superkomputerom. Niemniej, powstało dla nich wiele aplikacji baz danych wykorzystujących mechanizm klient/serwer. Gdy jeszcze kilkanaście lat temu drobna firma nie mogła sobie pozwolić na kupno dużego komputera do prowadzenia na nim obsługi sieci swych placówek, to teraz pokuszą się może na zakup systemu bazy danych pracującego na małym serwerze.

Podsumowując nasze wstępne rozważania o serwerach i klientach możemy uciec się do następującej analogii: komputer osobisty w roli klienta jest swego rodzaju elektroniczną ladą, przy której niespokojnie oczekujemy na wykonanie zlecenia (nerwowo bębniąc w blat palcami). Po drugiej stronie znajduje się niezmordowany serwer, urzędnik elektronicznego biura, gotowy na każde nasze zawołanie... Może czasem trzeba mu wybaczyć i chwilkę zaczekać, ale to tylko dlatego, że obsługuje innych. Jest na swoim miejscu nie tylko po to, by dostarczyć nam żądanej informacji, ale cały czas czuwa, by była ona pełna i aktualna. Tak przynajmniej dzieje się to w świecie komputerów... Może powinniśmy brać z nich wzór (!?).

Zamieszczony materiał jest fragmentem książki Davida Vaskevitcha "Client/Server Strategies" wydanej przez IDG Books. Tłumaczenie całości ukaże się w br.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200