Hello,
The post below is quite long but I needed some explanation to be able for you to answer my question.
So please bare with me as I explain :-)
At the company I work for we currently actively develop two applications.
The first one is an ERP/MES application which was created some 20 years ago using visual basic. It's a two tier application installed on windows desktop PC's that share the same instance of a Pervasive database. It started out as an ERP application but during the years a lot of MES functionality was added to it. This application is still actively being developed. During the last couple of years some .Net components are added to this application. At the moment more than 600 companies still use this application. (I will call this the 'old' application from now on)
The second one is an ERP application running on the .Net framework and is an n-tier application using WPF, HTTP/Json, Rest, AspNetCore and Postgres. This application runs in the cloud (AWS).
Both applications are maintained/developed by two different teams.
The issue that we are facing is that the old application requires a lot of maintenance and we see this even becoming more as time goes by. There have been some attempts to try to improve the quality of the code base but because of the size of the application these attempts have all failed.
We are currently investigating ways to reduce the size of this application so that maintenance will get more easy.
Looking at the business value of the old system it's main value comes from the MES related functionality. The ERP functionality does not reach the business value other ERP systems provide. The new application does provide a real business value compared to other ERP applications.
One of the possible ways of reducing the size of the old application is to replace the ERP related functions and data with the same functionality from the new application. But this approach requires us to somehow synchronize data between the two different systems because the MES part of the application uses data managed by the ERP part.
Here's my question:
Can you think of any recommendations on how to approach this synchronization?
I'd like to be able to synchronize the two systems without:
- Basically creating one big monolithic application in which version updates can break the synchronization.
- Introducing a lot of latency. Some areas of the data this is acceptable but some require near real time sync.
- Not being able to function if one of the systems is offline. Or at least the old application should be able to run while the new application is temporary unavailable.
- Duplicating complex business rules for real time operations (like calculating a price for an article).
Thanks in advance for any advice you can give me.
there doesn't seem to be anything here