We have an existing system with the structure explained in below (Also refer the attached image).
We have one database and several web servers (load balanced) and several tasks running on its own.
We have two types of web servers. API web server which gives xml response and regular web server, servers web pages.
Also we have couple of tasks/cron jobs that are running on its own.
Problem with this Approach:
All the services are for same business and though we can increase the web servers easily, business logic are scattered. Some time, we need to do same functionality in the Tasks and as well as in web servers. Several functions are duplicated though we converted it in to separate .net dlls. So maintaining them in different location becoming unmanageable now.
For example, caching data are really challenging and tracking data changes are impossible now. PLEASE REFER ATTACHMENT.
Can we build an intermediate app server (or some thing similar) so that all the business logic lies there and our web servers + API Servers + Tasks will act like Proxy and intern it should call application server for the required function.
Points to Note:
- All the services, Tasks and database are located in the same network.
- Our existing services are in Asp.Net and Tasks are windows console application (c#).
In order to build this, which is the best way?
- Can we build an internal application server (or http based web services)
- How to build in an expandable way?