Bojan Dančuo
Server, klijent, korisnik
U zlatno doba mainframe računara i terminala ispunjenih zelenim tekstom, 60-ih i 70-ih godina prošlog veka, bilo je lako napraviti razliku između servera i klijenta. Server je bila ona velika zastrašujuća naprava koja reži i brunda šepureći se u posebno klimatizovanoj prostoriji, za koju su samo mistično posvećeni imali ključ, dok su svi ostali sedeli ispred kutijastih monitora sa pripadajućom tastaturom, očigledno u ulozi korisnika te višeglave računarske hidre. U toj situaciji server je nesumnjivo bio inteligentni deo sistema, dok su terminali samo omogućavali korišćenje usluga servera i nisu zahtevali apsolutno nikakvu računarsku snagu. U celoj toj hijerarhiji jedino je inteligencija korisnika bila nepoznata veličina.
Kako zalazimo u 80-e godine, stvari se već pomalo komplikuju i mute. Počeli su da se pojavljuju poslovni, pa čak i kućni računari, dovoljno snažni da mogu da pokreću i neke servise koji su do tada bili rezervisani isključivo za mainframe računare, a pri tom se moglo i lepo poigrati na njima. Malo dalje duž vremenske ose, 90-e godine donose ekspanziju PC platformi, sa većom računarskom moći od one koju su posedovale skalamerije od pre deset godina i koje su vredele stotine hiljada dolara. Ubrzajmo još malo… dvadeset prvi je vek, računari dostižu nekada neslućene brzine. Većina servisa koji opslužuju korisnike širom sveta, mogu da se pokrenu na običnom PC računaru, koji postoji u gotovo svakom domu. Serveri su postali relikt prošlosti, prevaziđeni i zaboravljeni… ili možda ipak nije tako?
Server, klijent, šta je to?
Da bi razumeli čemu zapravo služe serveri, moramo prvo pokušati da razjasnimo šta je uopšte server. Ukratko, server je entitet koji pruža određenu uslugu klijentskom entitetu sa krajnjim ciljem da zadovolji zahtev koji je korisnik postavio. Da li je onda server računar? Odgovor bi bio: „i da i ne“. Server jeste računar, prvenstveno u smislu da se program koji implementira određeni servis mora izvršavati na nekom hardveru. Ali server je u svojoj osnovi softver, kao što je i klijent softver. Sada kada smo to raščistili, postaje jasno da zapravo ne postoji nikakva prepreka da se i serverski i klijentski program izvršavaju na istom računaru. Opet, kako je danas Internet kao globalni fenomen postao sveprisutan i skoro svaki računar je istovremeno povezan sa svima ostalima, serverski program može biti na potpuno drugom kraju zemaljske kugle. Znači, kada kažemo server, mislimo na program ili računar na kome se taj program izvršava, a koji pruža specifičnu uslugu klijent programu koji se izvršava na istom ili drugom računaru u mreži. Klijent-Server arhitektura je model koji razdvaja funkcije klijenata i servera koji mogu da se izvršavaju na istom računaru ili na različitim računarima u okviru mreže. Taj model je glavni element modernih operativnih sistema, softvera i dizajna mreža. U standardnom klijent-server odnosu, server je aktivan i čeka na zahteve klijenata, dok se klijenti pokreću kada treba da se obavi neki zadatak i pozivaju server kada se javi potreba za njegovim uslugama. Uobičajeno je da više klijenata deli servise jednog serverskog programa, a klijent i server zajedno čine jednu funkcionalnu celinu koja ispunjava neku ulogu. Šta je onda posao klijenta u okviru te arhitekture? Klijent implementira interfejs ka korisniku i prosleđuje zahteve servisima servera, a zatim prikazuje povratnu informaciju korisniku. Tipičan primer je web browser, koji na inicijativu korisnika šalje web serveru zahtev za određenom stranicom i zatim prikazuje korisniku web stranicu koju je dobio od servera.
Specifičnosti servera
Iako su današnji personalni računari dovoljno snažni da pokreću serverske programe, pa u dosta slučajeva to i rade, još uvek postoji jako veliko tržište za specifično serverski hardver. Zašto je to tako? Za početak, bilo koji server koji istovremeno opslužuje više korisnika, vrlo brzo postaje sve gladniji za resursima. Web ili database serveri danas umeju istovremeno da obrade više stotina ili hiljada zahteva, što bi klasičan PC vrlo brzo opteretilo i dovelo do slabog odziva ili u najgorem slučaju neispunjavanja nekih zahteva, zbog manjka nekog od osnovnih resursa kao što su procesorsko vreme ili memorija. Očigledno je da prioriteti kod projektovanja i sklapanja klijentskog računara i serverskog računara uopšte nisu isti. Serveru, za početak, uopšte nije bitan grafički podsistem, osim u osnovnoj varijanti u cilju omogućavanja instalacije softvera i održavanja. Sa druge strane, u zavisnosti od zahtevnosti servisa koji se pruža klijentima i broja klijenata, procesor, memorija, brzina disk podsistema i pouzdanost postaju mnogo bitniji elementi nego u klasičnoj desktop konfiguraciji. Zato se za neke servere već odavno koriste specijalizovane matične ploče sa više od jednog podnožja za procesore, kao i više mesta za memoriju, koja je često ECC (Error Correcting Code) tipa, što znači da ima ugrađenu proveru greške u same module. Tu su i hot-swap diskovi koji neretko rade u nekom od RAID modova koji povećavaju bezbednost podataka. Pored drugačijih hardverskih zahteva, postavljaju se i drugačiji zahtevi pred operativni sistem. Tako serverske verzije operativnih sistema moraju da podrže veći broj procesora i veću količinu memorije, kao i da omoguće centralizovanu i sigurnu administraciju korisnika i prava pristupa, automatizovane opcije za backup kao i optimizovan sistem koji daje prioritet servisima na račun front-end aplikacija. Microsoft, recimo, već odavno ima posebne verzije svojih operativnih sistema namenjenih serverima, a najnovija aktuelna verzija je Windows 2008 Server, koji opet dolazi u više podvarijanti, gde su osnovne: Standard, Enterprise i Datacenter, pri čemu svaka postoji u 32-bitnoj i 64-bitnoj verziji, gde recimo Datacenter u 64-bitnoj verziji podržava sistem sa do 64 procesora i 2TB ram-a. Linux distribucije, prilagođene serverskim zadacima, su isto interesantno rešenje, pogotovo kada se uzme u obzir da je Linux, kao derivat Unix-a, nasledio od njega sve osobine koje su u startu zamišljene da opslužuju višekorisničko mrežno okruženje.
Koje sve vrste servera postoje?
Vrsta i podvrsta servera praktično postoji beskonačno mnogo, jer svaki program koji ne ispunjava celokupan zadatak samostalno, već prepušta određeni deo obrade drugom programu, automatski postaje klijent, a taj drugi program server. Ipak, navešćemo ovde neke uobičajene i najčešće varijante servera koje trenutno postoje.
File server – server koji pruža uslugu čuvanja fajlova kojima je moguće pristupiti iz LAN ili WAN mreže. Najbitnija stavka je kapacitet diskova, dok u slučaju kada je sigurnost podataka bitna, treba obezbediti i neki vid RAID mirroring-a i redovnog backup-a. Operativni sistem na kojem jefile server zasnovan, postaje bitan kada se poveća broj klijenata, jer su recimo Microsoft desktop operativni sistemi ograničeni na određeni broj istovremenih konekcija, koji kada se dostigne, sistem odbija sve nove, dok se neka od postojećih sesija ne završi (Windows XP Professional na primer ima ograničenje od 10 konekcija). U kućnom okruženju, ako uključite file sharing i pristupate disku sa drugog računara preko mreže, možda niste ni svesni da ste time taj računar pretvorili u file server.
Database server – server koji host-uje jednu ili više baza podataka. Najbitnije stavke su procesorska snaga, količina memorije, kao i brzina diskova. Tipične vrste sistema za baze podataka su Microsoft-ov MS SQL Server, MySql kao besplatno rešenje koje se uglavnom koristi kao podloga za dinamičke web sajtove, kao i Oracle koji ima dugu tradiciju u rešenjima za velike sisteme.
Web server – služi da host-uje web sajtove, prihvata zahteve od web browser-a i vraća im tražene podatke. Kako danas skoro svi web sajtovi imaju dinamički sadržaj, web server mora da izvršava i neku vrstu programskog koda, uglavnom PHP ili ASP, uz obavezan database engine tipa MySql ili MS SQL Server za čuvanje podataka, koji može ali i ne mora biti na istom računaru. U zavisnosti od projektovanog opterećenja servera, kritične stavke mogu biti procesorska snaga i količina memorije. Poznatiji web serveri su recimo Apache i Microsoft-ov IIS (Internet Information Services).
Print server – služi za prijem dokumenata za štampanje i prosleđuje ih na jedan ili više priključenih štampača. Funkcija print servera uglavnom nije previše zahtevna, a u slučaju da postoji napredniji štampač sa Ethernet interfejsom u okviru mreže, često postaje nepotreban.
FTP server – praktično ima istu svrhu kao i File server, samo što je FTP (File Transfer Protocol) prilagođen za pristup i transfer preko Interneta, tako da je mnogo pogodniji za WAN (Wide Area Network) pristup. Kao i kod File servera, kritična je veličina diskova. Većina WEB servera u isto vreme nudi i usluge FTP servera da bi omogućila web hosting korisnicima da daljinski ažuriraju svoje web strane.
Application server – Serversko rešenje koje je našlo svoje mesto u višeslojnoj softverskoj arhitekturi. U sebi sadrži biznis logiku i procese koje u vidu servisa daje na korišćenje aplikacijama koje se pokreću na više klijenata. U Java svetu postoji više rešenja koje nude Oracle, Sun, IBM… , kao i open source alternative. Naravno, Microsoft ima i svoje rešenje, koje se u aktuelnoj verziji zove Microsoft Application Virtualization. Hardverska zahtevnost je u direktnoj srazmeri sa kompleksnošću biznis logike koja se na serveru izvršava.
Mail server – mail server, kako mu i samo ime kaže, služi za slanje i primanje e-mail-ova. Tu se prvenstveno misli na SMTP (Simple Mail Transfer Protocol) za slanje i POP3 (Post Office Protocol 3) i IMAP (Internet Message Access Protocol) za primanje e-mail-ova. E-mail klijenti omogućavaju pristup i korišćenje usluga tih servera, kao npr. Outlook, Eudora, Thunderbird, dok IMAP protokol uz odgovarajuće web server rešenje omogućava pristup mailovima direktno iz browser-a (Gmail radi na tom principu, iako omogućava i korišćenje klasičnih mail klijenata). Mail serveri, kao osnova za razmenu informacija u okviru ogranizacija, često imaju i mnogo veći set funkcija nego što je samo slanje i primanje mailova. Microsoft Exchange server na primer, podržava i razne sisteme za kolaboraciju, zakazivanje sastanaka i planiranje, kao i razmenu dokumenata. Od modernih mail servera se očekuje da poseduju i neki vid anti-spam i anti-virus zaštite, kao integrisan deo rešenja ili u vidu plugin-a.
Proxy server – proxy server je računar i/ili program koji opslužuje klijente tako što prosleđuje njihove zahteve drugim serverima. Klijent se povezuje na proxy server i traži neki servis, kao što je fajl, web stranica ili neki drugi resurs, koji se fizički nalazi na drugom serveru. Proxy server zatim obezbeđuje taj resurs tako što se povezuje na traženi server i traži taj resurs umesto klijenta. Proxy server opciono može da unese izmene u zahtev ili u odgovor servera, a može i da sačuva rezultat nekog zahteva u svom cache-u, pa da onda na sledeći zahtev za istim tim resursom odgovori odmah, pristupajući mu u okviru svog cache-a, umesto da prosleđuje zahtev izvornom serveru. Iako postoji dosta podvrsta proxy servera, uglavnom se misli na web proxy server, koji kešira web stranice, usput se često ponašajući i kao NAT i firewall, u kom slučaju odvaja LAN od WAN-a i omogućava veću sigurnost i kontrolu saobraćaja koji dolazi spolja ili odlazi iznutra. Neki primeri proxy servera su Microsoft-ov ISA (Internet Security and Acceleration) Server, Squid, m0n0wall, WinGate, dok recimo Apache web server može da se konfiguriše tako da se ponaša i kao proxy.
Audio/Video server – služi da omogući emitovanje audio ili video stream-ova preko mreže. Stream-ovanje je tehnologija prenosa podataka, tako da se može obrađivati kao tok, bez potrebe da se ceo sadržaj prenese pre početka reprodukcije. Klijent, pošto preuzme određenu minimalnu količinu podataka može da počne sa reprodukuje sadržaj, dok u pozadini i dalje prima podatke i smešta ih u buffer iz koga onda nastavlja da ih čita kako reprodukcija napreduje. Internet radio, YouTube kao i IPTV funkcionišu na ovom principu.
Terminal server – Terminal server je pojam koji se koristi za više vrsta servera, ali uobičajeno značenje se odnosi na server koji omogućava centralizovanu uslugu rada na sistemu koji se izvršava na njemu, dok su klijenti thin tipa i sadrže samo korisnički interfejs. Ranije se to odnosilo na servere kojima se pristupalo sa terminala ili preko konzole u tekstualnom modu, dok sada to može biti i potpuno grafičko okruženje, kao u slučaju Microsoft-ovog Remote Desktop sistema za daljinski rad na Windows operativnim sistemima.
Pouzdanost – ključna osobina
Da li banka sme sebi da dopusti da izgubi neki deo ili celu bazu podataka? Da li neki bitan i jako posećen web sajt sme sebi da dozvoli da neko vreme ne bude dostupan zato što je otkazao hard disk u računaru koji ga hostuje? Postoje uloge servera kod kojih je pouzdanost bukvalno neprocenjiva, pa nije ni čudo da iako su neka rešenja na prvi pogled jako skupa, ako se preračunaju potencijalni gubici u slučaju da se ona ne primene postane jasno da su zapravo veoma isplativa i neophodna. Neka od rešenja za povećanje pouzdanosti su RAID nizovi koji automatski prave rezervne kopije na više fizičkih diskova i u slučaju otkaza jednog potpuno normalno nastavljaju rad dok se taj neispravni disk ne zameni. Sistemi za neprekidno napajanje, dobro hlađenje komponenti i redovni backup su isto vrlo bitne stavke.
Ovaj tekst je trebalo da posluži kao uvodnik u svet servera, da razjasni njihovu ulogu i klijent/server odnos. Pošto smo videli da se i sa hardverske i softverske strane posvećeni serveri prilično razlikuju od klasičnih računara, u sledećem tesktu u ovoj seriji razmotrićemo neka od postojećih rešenja malo detaljnije i videti kakvu ulogu serveri imaju u kućnom, smb ili corporate okruženju.