Application partitioning provides the ability to define a clear distribution of the presentation, process, and data components of an application. The distributed components may cross multiple machines and/or memory address spaces.
Application Development using application-partitioning tools
Application partitioning distributes application processing across all system resources, in order to maximize the benefits of the multitiered computing model.
Application partitioning provides a critical step necessary to achieve true N-Tiered distributed computing.
With application partitioning, the number of tiers is limited only by the number of available computers. Because the processing load is theorectically distributed across any number of processors, application partitioning provides the ultimate in N-Tier client/server scalability.
Application partitioning overcomes the limitations of previous renditions of client/server architectures, such as overloaded clients, low reliability, reduced performance and network bandwidth, inflexibility, and high maintenance.
The partitioning of application components provides two major benefits: it reduces the turnaround time for the data result, and it decreases the amount of network traffic necessary to transfer the data to the client.
Application partitioning fills a critical void in large-scale client/server systems, flexibly distributing application logic for optimal performance.
Successful partitioning depends on tools that leverage emerging technologies such as object-oriented technology and peer-to-peer communications in order to provide the reliability, performance, flexibility, and transparency required for large-scale enterprise-wide computing.
Application partitioning gives a client/server application development team the ability to support a N-Tier application architecture and to construct a truly distributed application.
Benefits of Application Partitioning
Using application-partitioning tools, the developer need only design the application on a single client PC, then relocate portions of it (application objects) to any server accessible by the network.
Developers should be able to view the application as a single logical program. Exactly which components will be deployed on clients and which components will be deployed on servers, or whether the client machines will be Windows PC's or Macintoshes, should be of no concern to developers.
After the application has been built and tested as a single application, it can be partitioned. In theory, it's as easy as dragging an application object to a server icon. In the background, the application-partitioning tools generate and compile native 3GL code on the target servers to perform the processing.
The result is a client program and one, two, or more service programs.
These programs are then targeted to run on specific hardware and to interface with specific software (GUI, operating system, database management system, communications mechanism, or middleware) in one or more deployment environments.
The benefits of application partitioning are many and varied. Some are technical; others are business-oriented.
Objects and Components
Today, performance considerations are often paramount. Users of first-generation client/server application development tools have all too often learned that simple applications, consisting of interpreted 4GL code running completely on PC's or workstations, may provide adequate response times to small groups of users, but when the number of users increases, or for more complex applications, performance (i.e., perceived user response times) may be woefully inadequate.
Deploying application components that do major business processing on a powerful UNIX server accessible to all client PC's may free scarce resources on the PC clients for the presentation components.
Similarly, placing application components that do most of the interactions with the RDBMS on the same machine as the RDBMS may significantly reduce the amount of network traffic and the contention for network resources.
Increased application performance (data processing logic can be near the data, business processing logic can be on a fast application server, etc.)
The benefits of application partitioning include:
Services may be partitioned to facilitate sharing, not only among clients within a particular application, but also among clients from several applications.
- Application scalability
- Support of multiple, diverse hardware/software configurations
- Security; sensitive or business-critical processes can be isolated
- Ease of maintenance; often-changing components of the application can be isolated, and only one or a few copies of the components utilized
- Object and component reuse; services can be shared within and among applications
- Support of the structure of an organization; business data and business processing logic can be deployed in close physical proximity to its owners or users
- Separation of business rules from presentation and data
This modular approach to application design coupled with the definition and use of well-defined component interfaces, allow pieces of business processing logic (business rules) to be defined in Business Objects and reused among multiple applications.
This reuse promotes both consistency across the organization and ease of maintenance because the reusable components can be used in many places but defined and maintained in just one place.
Furthermore, any one component of an application can be updated without impacting other components.
It's possible to change the platform on which specific components are running--for example, to upgrade a server machine to a newer model having more processing power--without having to change any components running on clients or on other servers.
Application-partitioning tools, such as Dynasty Technologies' Dynasty and Forté Software's Forté, enable developers to partition a single logical application, dynamically over several tiers (or servers).
©Micromax Information Services Ltd. 1999