We have a product built on the Client-Server architecture. Some details about the technology stack used.
- Client - Java Swing
- Server - RMI
- Java Database - Oracle
The clients are located at different parts of the world but the java server & the oracle database are located on the same machine at Sweden. Because of this there is a lot of Network latency. The performance of the clients at distant locations have terrible performance. The application is used for processing files with the size of over 50MB. Each operation in general requires about over 1000 Network calls.
Based on your experience, how do you tackle this problem and improve the performance?
EDIT: To answer a few questions
- Files contains the actual business data which needs to be processed and updated in database and cannot be sent in part.
- Some of the network calls can be batched but it would require major refactoring of the code. This is a very old application written way back in 2001. And the design of the application is such that, the server holds all the services and they are made reusable across the code and the business logic is written on the client side. So, this business logic calls server numerous times and hence the astronomical figure.
-Snehal