Client/Server Model

Alternative to a monolithic app Advantages Rendezvous problem Application protocol Hardware versus software processes
The terms client and server most generically refer to software processes.

Machines with operating systems where server processes execute are often called "servers", but it's the process that is the real server.

Machines with operating systems where client processes execute are often called "clients", but it's the process that is the real client.

Servers
Servers maintain, or can find, data stored permanently (database) used to answer client requests.

Servers need to worry about authenticating clients.

Servers should be robust and reliable.

Servers tend to be complex for these reasons.

Clients
Cients interact with users.

Clients need nice interfaces.

Clients assume servers are available and operating correctly, making their development simpler.

Alternative models
The client/server model is a good example of lazy evaluation. No work is done until the client needs data and makes a request of the server. The work is demand driven.

An alternative model which also solves the rendevous problem is to pre-compute responses and store them, anticipating the needs of clients. Since this model isn't demand driven it has the potential to waste resources. But it has the advantage of possibly working even when the network goes down, since the answer sought may already be found locally.

Scaling is a problem with this approach, though some applications use it (ruptime example from Comer).