The basic characteristics of client/server architectures are:
1) Combination of a client or front-end portion that interacts with the user, and a server or back-end portion that interacts with the shared resource.
The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The server process acts as a software engine that manages shared resources such as databases, printers, modems, or high powered processors.
2) The front-end task and back-end task have fundamentally different requirements for computing resources such as processor speeds, memory, disk speeds and capacities, and input/output devices.
3) The environment is typically heterogeneous and multivendor. The hardware platform and operating system of client and server are not usually the same.Client and server processes communicate through a well-defined set of standard application program interfaces (API’s) and RPC’s.
4) An important characteristic of client-server systems is scalability. They can be scaled horizontally or vertically. Horizontal scaling means adding or removing client workstations with only a slight performance impact. Vertical scaling means migrating to a larger and faster server machine or multiservers.