i just need a suggestion what path should i take to educate myself further.
Situation:
We've got in our company internal (LAN only) application that, among other things, serves something like ordering app. Main functionality is - people can schedule some service(eg. technical consultation, fixing electronics etc.) for a particular date.
Today outside customers have to personally come to the employee who will create their ticket.
Boss said that we can no longer live in caves so we have to develop web app for scheduling orders.
Background:
- our internal system is based on Java(swing) + DB(postgres)
- DB server is on dedicated machine
- data in DB is fragile (in sense of security)
- because this is a little legacy code, most of logic is in stored procedures on DB
- we would like to use Vaadin to develop web-app
- host web-app on other machine
Main tasks:
- separate internal server (DB) from outside world
- serve only portions of data from DB required to create a ticket from web-app
- find and secure or eliminate weakest link between internet web-app and internal DB system in chosen solution
- web-app has to be synchronized with internal ordering app (no condition race for scheduling for particular date)
So how to make it right?:
- host web-app on local machine (other than DB, and in DMZ) or use external commercial hosting
- create Web-Service which will proxy web-app requests with customers orders to DB and then process them?
- use maybe JMS for user requests and then poll from JMS to DB (using maybe Apache Camel to process and store to DB)?
- create second database instance just for web-app, and then synchronize master-DB and web-app-DB in some sophisticated way?
- in web-app data access layer we would like to develop high abstraction just in case we will have to switch from one of above to another
What are your suggestion, which of these, or maybe something completely different should we consider in this project?