Separating an application into components that run on multiple servers. Programming languages and development systems that support this architecture, known as "three-tier client/server," may allow the program to be developed as a whole and then separated into pieces later. Security and Load Balancing Running programs in multiple servers may be required for security. For example, if a proprietary financial application runs in a separate server, that server can be made more secure than the others processing more mundane business logic. In addition, separating business logic onto multiple servers may be necessary to balance the processing load across the enterprise or across multiple datacenters. 3GL Vs. 4GL Application partitioning can always be accomplished by writing in a third-generation (3GL) programming language. However, writing custom code takes time. In the 1993-1994 time frame, products such as Forte and DYNASTY were the first to provide application partitioning at a 4GL level, and the capability has been added to other development systems. Such products differentiate themselves by their ability to perform partitioning with simple programming functions or visual programming (drag & drop). See client/server, Forte, DYNASTY and 4GL.