The "new" thing in computing these days is the notion of a multi-tiered "client/server" system.
It is hardly a new notion; computer systems have been doing this sort of thing for many years now.
Recent developments involve splitting complex applications into increasingly many pieces, commonly including such components as the following:
Data resides within a relational database system.
Presentation Server (often called the "client")
The user interacts with this server
Transaction Processor (or TP Monitor)
This provides a "proxy" that manages updates to the database. A user may ask to update information about an invoice; the TP Monitor manages ensuring that all of the resulting database updates are performed.
This is an "execution environment" where one can run application code, typically involving the business logic for things like reports or batch processing.
It is somewhat preferable for this "tier" to be able to run on a variety of sorts of hardware, which would encourage the use of platform-independent systems such as Java.
Alternatively, or perhaps in combination, it makes sense to use standardized "application splitting" schemes such as CORBA (Common Object Request Broker Architecture) whereby the application would be split into object components that communicate through an Object Request Broker (ORB).
Quite a lot of application server systems are available for Linux.
Message Server, Lock Server
It may prove worthwhile to provide additional servers for more specialized services.
SAP's R/3 system is one of the more sophisticated such multi-tier systems. The only component of those listed above that it does not really visibly separate out as a separate component is the TP Monitor.
One can commonly characterize other "simpler" multiuser client server systems based on how they split out their functionality:
Traditional mainframe systems are a pathological case where the "presentation server" was a 3270 terminal, and all other aspects of system logic ran on the mainframe server.
PC/LAN systems provide the opposite pathological case where there would be a file server where shared files would reside, and substantially all system logic resided as part of a program running on each PC.
In between came the two-tier client/server systems where the "server" was database server, and substantially all logic would reside on the "client" PCs.
By adding the additional "tiers," processing may be split across many servers, thus allowing the systems to handle more complex requirements without bogging down.