(ibi, Br. 48, siječanj 1996)

Radomir Vukina dipl.ing.

Klijent/Server informatička tehnologija

Potreba ili pomodarstvo?

Ljudi koji se dulje vremena bave informatikom znaju da se u redovnim razmacima javljaju nove, revolucionarne informatičke tehnologije, o kojima se priča, oko kojih se lome koplja, koje će/ neće riješiti sve svjetske probleme, a neki ih čak i primjene. Neke od tih tehnologija kroz izvjesno vrijeme postanu svakodnevnica (npr. tko danas razvija informatičke sustave a da ne koristi relacijske baze podataka i pridružene alate?), a neke jednostavno nestanu, bez da su pustile dublje korijene (da li ste čuli za "Bubble" memorije?).

Klijent/Sever tehnologija je jedna od trenutno "In" tema. Pred neko vrijeme, kad je ovo postajala vruća tema, na nekoj elektroničkoj okružnici sam našao dobru usporedbu:

Klijent/server je poput tinejdžerskog seksa:

-          svima je to na pameti sve vrijeme

-          svi o tome pričaju sve vrijeme

-          svi misle da svi drugi to rade

-          skoro nitko to stvarno ne radi

-          malobrojni koji to ipak rade, to rade loše:

-          '... drugi će puta biti bolje'

-          ne rade to na siguran način

-          svi se hvale svojim uspjesima, makar ih je malo uspjelo

Šalu na stranu, Klijent/server tehnologija svakako spada u red onih koje će pustiti korijenje, jer se ne radi samo o ezoteričnim informatičkim metodama i alatima, nego o tehnologiji čije rezultate krajnji korisnik informatičkih sustava itekako vidi, a mogućnosti su takve da će mu se to što vidi i svidjeti.

O čemu se zapravo radi

Svaka obrada podataka se može logički podijeliti na nekoliko dijelova:

-          postavljanje pitanja

-          pronalaženje podataka

-          sastavljanje odgovora na pitanje

-          prikaz odgovora

Nekad je sve to radio jedan program, koji se vrtio na jednom procesoru (drugog nije ni bilo).

Razvojem informatičke tehnologije, naročito otkad je počela šira upotreba baza podataka i alata koji obično idu uz njih, došlo je i do podjele posla:

-          korisnikov aplikacijski program se brine za formulaciju pitanja (npr. maska na ekranu terminala, s rubrikom za upis šifre recimo kupca, te parametre koji će odrediti da li glede tog kupca želimo ovo ili ono), a kad se pitanje složi, pošalje ga database programu

-          database program (ili skupina programa) se brine da s diska pokupi slogove koji zadovoljavaju kriterije definirane pitanjem, da iz njih povadi potrebna polja i sve to uputi korisnikovom programu

-          korisnikov program doradi podatke (npr. zbroji dugovanja i potraživanja, izračuna saldo), pa te rezultate prezentira korisniku (npr. druga ekranska maska, s popisom svih otvorenih stavki, i zbrojevima duguje/potražuje te saldom, ili slično, ali na papiru)

Sve ovo se još uvijek odvija na jednom te istom kompjuteru, samo je posao podijeljen na više programa, koji međusobno razgovaraju.

Masovna upotreba osobnih računala (PC-ova) i razvoj mreža doveli su do slijedećeg koraka - podjele poslova ne samo na više programa, nego i na više kompjutera. Na kompjuteru u knjigovodstvu se vrte salda konti i plaće, na kompjuteru u kompleksu skladišta se vrti robno poslovanje, na kompjuteru u prodaji obrada narudžbi i fakturiranje, na radnim stanicama i PC-ovima u projektnom birou se vrte posebni programi za projektiranje itd. Svi kompjuteri su vezani u mrežu, i s bilo kojeg terminala vezanog na bilo koji kompjuter (ili s bilo kojeg PC-a) se može pristupiti bilo kojoj aplikaciji, na bilo kojem stroju.

Zvuči kao znanstvena fantastika, zar ne? Međutim, danas je to već sasvim normalna situacija - danas su i kod nas rijetke organizacije koje imaju više od 2-3 PC-a, a da svoju informatičku opremu nemaju povezanu u ovakvu ili onakvu mrežu. Stvaranje (bar jednostavnijih) mreža više stvarno nije problem - kupite PC-ove s već pred-instaliranim hardware i software komponentama, spojite ih, kažete koje vaše diskove dajete na raspolaganje drugima, potražite disk na koleginom PC-u, ... i stvar radi (s većim mrežama je ipak malo složenije, no već mnogo ljudi zna kako se to radi ).

Znači, to je Klijent/Server? E, nije! To su umreženi kompjuteri. Umreženi kompjuteri su nužni, no ne i dovoljni uvjet za Klijent/ Server način rada.

Ako preko mog PC-a, koji je vezan na kompjuter A (preko Ethernet kabla i lokalne mreže), koji je zatim (preko modema i komutirane telefonske linije i daljinske mreže) vezan na kompjuter B, koji je (preko satelita) vezan na kompjuter C, ...... koji je vezan (preko goluba pismonoše) konačno dođem na kompjuter Z (koji mi treba jer su na njemu podaci koje želim i programi koji ih obrađuju), to je uspostavljanje veze između moje tipkovnice i ekrana i željenog kompjutera, ne Klijent/Server način rada. Moj kompjuter simulira neinteligentni terminal, svi kompjuteri i sva ona znan-fan oprema između mene i Z-a simulira komad žice, a sav posao se stvarno obavlja na kompjuteru Z. Logički, imamo slučaj kao da je najobičniji terminal vezan direktno na Z. Sve ostalo su detalji i nijanse.

Za pravi Klijent/Sever trebamo barem dva programa, koji međusobno razgovaraju i svaki obavlja svoj dio posla. Stručnjaci i znalci se svađe oko toga kako se posao mora podijeliti da to bude pravi a ne quasi Klijent/server, no takve rasprave prelaze moje trenutne ambicije - za sada će biti dovoljno da se dogovorimo da trebamo barem dva programa koji rade u sprezi. Obično se podrazumijevaju i barem dva kompjutera, po jedan od programa na svakom (strogo uzevši prava Klijent/Server obrada može ići i na jednom jedinom kompjuteru, no cijela stvar dobiva puni praktični smisao tek ako imamo i više procesora).

Program koji pokreće neki postupak (Klijent), zada zadatak, preda ga programu koji će obaviti idući dio posla (Server) i čeka da ovaj obavi posao. Prvi server može i sam zatražiti od nekog trećeg programa da taj obavi dio od preuzetog posla (tada on postaje klijent za tog drugog servera) itd. Kad se obavi sav potreban serverski posao, rezultati se vraćaju Klijent programu, koji ih pogleda, umota ih u celofan i prezentira svom klijentu, tj. čovjeku koji je postavio pitanje.

Analogna situacija

Zamislite si da ste otišli s nekom dragom i zanimljivom osobom u restoran na večeru. Ono što želite od te večeri, jest interesantan razgovor, u ugodnom ambijentu, uz dobru hranu i piće. (Ja bih i cigaru, ali nije dozvoljeno potsticanje na taj porok, a o eventualnim drugim željama džentlmeni ne pišu javno.) Kad konobaru predate narudžbu, ne interesira vas kako će je on izvršiti - važno je da hrana i piće stižu u odgovarajuće vrijeme, da su ukusni i da se možete posvetiti svom razgovoru.

Vi ste očito Klijent. Konobar je vaš Server. Vas se to ne tiče, no konobar, da bi ispunio vašu narudžbu mora otići na šank po piće, u kuhinju po hranu. Barmen i kuhar su tada njegovi Serveri, a on je njihov Klijent. Za cijelu priču vjerojatno i nije bitno tko je kome u kojem trenutku klijent, a tko server, važno je da svaki točno zna što se od njega očekuje i što treba napraviti, te da cijeli posao ide glatko i bez zastoja.

A čemu to sve služi?

Nadam se da je sada strpljivim čitateljima potpuno jasno što je to Klijent/Server način rada (nakon što sam ovo napisao, meni je).

Klijent/Server omogućava da se u punoj mjeri iskoriste relativne prednosti i izbjegnu relativne mane pojedinih vrsta kompjutera.

Rekli smo da za Klijent/Server način rada obično imamo barem dva kompjutera. Najčešće, jedan od njih je osobno računalo (PC) a drugi neki veći stroj, recimo UNIX server ili mainframe kompjuter. Molim uočite razliku između servera (s malim slovom s) kao UNIX server i Servera (s velikim S), kao Klijent/Server.

PC-ovi su izvrsni za izradu i pokazivanje lijepih slika, po želji praćenih i ugodnom glazbom, video spotom ... Na njima se lako uređuju tekstovi, lako mijenja sustav izračunavanja nekog koeficijenta. Na serverima ili mainframe kompjuterima je teško mijenjati i tip slova, a o govornom komentaru i zvučnim efektima da se ne govori.

S druge strane, veći kompjuteri imaju više snage za obradu velike količine podataka, po volji mnogo prostora na diskovima za spremanje tih podataka, po volji oštru sigurnosnu kontrolu pristupa, veliku sigurnost i pouzdanost u radu, na njima se može garantirati konzistentnost podataka, automatski uzimati sigurnosne kopije itd.

Na velikom kompjuteru se teško mijenjaju stvari, na PC-u lako. Na velikom kompjuteru možemo biti sigurni da će se desiti točno ono što želimo, na PC-u ne. Na PC može doći klinac i staviti disketu s igrama i virusima, na velikom stroju postoje brojni mehanizmi zaštite. Na velikom stroju postoji kompleksni operacijski sustav koji će se brinuti za sigurnosne kopije i profesionalni operater kojemu je posao da zna na kojoj polici je kazeta sa sigurnosnom kopijom. Na PC-u postoji DOS, a većina mojih kolega nema niti praznu disketu na koju bi stavila sigurnosnu kopiju, niti naviku da redovno uzimaju kopije.

Relativna krutost većih sustava je prednost kad je u pitanju snaga i pouzdanost, no mana kad je potrebna fleksibilnost. Na PC-u se mogu na brzinu napraviti krasne stvari, na većem stroju ne. PC ima ekran u boji i zvučnik, veliki strojevi imaju linijske štampače (strojeve za redni tisak?) sa samo velikim slovima. Na PC-u je moguće u trenu izračunati porez po novoj stopi, na velikom stroju će programer o tome moći početi razmišljati kroz mjesec dana.

Podjela posla po Klijent/Server principu nam omogućava da iskoristimo najbolje iz oba svijeta, i izbjegnemo mane.

Stvari za koje je potrebna snaga i pouzdanost radimo na mainframe ili server Serverima, oni su izmišljeni za to.

Stvari za koje je potrebna fleksibilnost i ljepota radimo na PC klijentima.

Podjela je moguća i dosta logična - osnovni podaci koji se obično čuvaju u salda-kontiju kupaca se nisu znatno izmijenili otkad su mletački trgovci izmislili dvojno knjigovodstvo. Kompjuter-Server će se brinuti da se čuvaju i ažuriraju i poslati ih, u sirovom obliku kompjuteru-Klijentu.

Ono što se često mijenja je interpretacija tih podataka - poreske stope, novi direktor želi izvještaj u novom obliku. Na kompjuteru-klijentu se način prikazivanja lako mijenja. Nije problem imati ni

nekoliko različitih inačica Klijent software-a, za razne kategorije Klijent-kompjutera (neinteligentni terminal, PC s kolor ili c/b monitorom ...).

A koja korist od toga?

Vlasnik informacijskog sustava plaća samo što mu u danom trenutku na danom mjestu treba. Može biti siguran da je njegova informatička infrastruktura pouzdana i da su mu temeljni podaci sigurni.

Krajnji korisnik dobiva točno one informacije koje treba, prezentirane. Izgled i logika prezentacije informacija se mijenja.

Informatički profesionalac ima na raspolaganju prikladne alate i za Klijent i za Server strane i razvija sustave obrada brzo i fleksibilno, ne kompromitirajući niti sigurnost niti kontrolu, niti vanjski izgled aplikacije. Ima mogućnost koristiti dobre i prokušane elemente postojećih aplikacija, čija je jedina mana da izgledaju staromodno.

Sve to Klijent/Server čini značajnom tehnologijom koja će dati novi zalet informatici i ostaviti trajni utjecaj na razvoj informatike.