Why segregate an application?
- When a portion of your application has outgrown a single system's processing capability.
Your current application started out as a small process required by a select set of users. Those users were so happy with this application that they expounded the benefits to others. Then those others wanted access to the application, but, also needed additional functionality.
Now as more and more users require more and more functionality, the application no longer fits on the original processor. There are two common solutions:
- Get a bigger processor.
- Split the processing among several machines.
The second solution is by far the best. Once the application can run on two separate processors, it is relatively easy to further scale the application when more processor power is necessary.
- When a portion of your application has special processor requirements or needs to be readily portable.
Some applications require extensive computational functionality such as vector processing. The average processor does not have this feature. Giving applications the ability to load-up a special processor with only this heavy portion of the functionality can easily justify the cost of this machine.
When the above computational functionality needs moving to a mainframe during exceptional use periods, portability is paramount.
- When a portion of your application needs isolating because of security or data access reasons.
Security is a concern for every company. The simplest method to secure an application is to place it on its own virtual machine. This is coarse grain security.
Another coarse grain security feature is to restrict sensitive data to a select machine and only allow the local virtual machines access.
- When a portion of your application needs needs a background function.
Timing of requests and the autonomous request are the standard background functions.
Request brokering with multi-threading is fast becoming the most popular method of processing.
- When an application needs concurrent access by a multitude of clients with load balancing.
Scalability is difficult. With concurrent access to your facility from clients all over the world at all times of the day, being able to segment the application onto multiple machines is mandatory. As more and more clients access the application, bringing more machines on-line and balancing the load is the solution.
- When a large and/or complex application needs to implement a structure of independent agents.
Agents are independent. Using a series of RMI Servers each with agent capabilities means that an application may start the "function" here and have each agent process a unique part of the application. Communication flows between agents until the "function" completes.