Modularizacija programa

Programiranjem pomoću "three-tier" raslojavanja programa stvaraju se rješenja koja korisnicima omogućuju da imaju radno okruženje koje im je najugodnije, a programeru se ostavlja sloboda da radi na platformi koja je najoptimalnija za razvoj. Program se postavlja na računlao koje može biti na internetu, ili u lokalnoj mreži. Korisnička računala spajaju se preko računalne mreže na računalo gdje se izvodi program. Računalo gdje se izvodi program naziva se SERVER, a računalo korisnika se naziva KLIJENT. Terminologija KLIJENT/SERVER dolazi od jednostavne činjenice da korisnik svojim tipkanjem i klikanjem po browseru (pregledniku interneta) šalje upite prema serveru. Server treba razumijeti upite i servirati odgovore, tj. poslati nazad prema browseru internet stranice sa rezultatima korisnikovih upita. U tom ping-pongu, tj. seriji upita i odgovora, korisnik obavlja svoje zadaće. Naravno, korisnik ne zna da kod korištenja programa signali mogu putovati stotinama kilometara do servera i nazad. 

Osim tog programiranja u više slojeva (kao torta), serveri omogućavaju da se više korisnika spoji na servis (program) i u isto vrijeme opslužuju mnoštvo korisnika. Pri tom se javlja kompleksnost da za svaki za upit koji prema serveru dođe, server treba znati koji korisnik ga je poslao i upravo tom korisniku vratiti njegov rezultat. Bilo bi jako pogrešno vratiti odgovor na upit jednog korisnika drugom korisniku.

Programiranje u tri (ili više) slojeva jeste puno kompleksnije od programiranja za jedno računalo. Podešavanje GNU/Linux sustava je kompleksnije od podešavanja sustava zatvorenog programskog koda. Stoga i ne čudi što jako puno mojih kolega programera zazire od korištenja tih tehnologija. Vidljivi rezultati mogu se postići i programima koji rade na jednom računalu, a korisnici često ne mogu primijetiti razliku između tehnologija. Sve je u savršenom redu dok ne treba spojiti više stotina korisnika na sustav, tada nastaje problem održavanja jedne inačice programa na stotinama klijentskih računala, rad s programom se neminovno uspori, zaposlenici postaju nezadovoljni i produktivnost pada.

Klijent/server programska rješenja uvelike podsjećaju na računalstvo iz 70tih godina prošlog stoljeća. Vrijeme je pokazalo da se cijeli niz problema iz poslovnog svijeta najbolje rješava upravo klijent/server tehnologijama. Naravno, klijent/server nije rješenje za sve primjere, pogotovo ne za grafički intenzivne aplikacije, programe koji rade sa zvukom, ili računalne igre.