dimanche 3 mars 2019

Backand technology and architecture for an Angular map based app

I am sorry if this question is too generic, but here goes.

My team and I are developing a web application using Angular 7 which handles very dynamic data that consists of plots and similar data. The app displays the data in real-time on a map using Cesiumjs and (sort of) a table, allowing the users to perform different opeartions on the entities.

Currently, the app is polling a single server written in Java for multiple entity types through a different HTTP request for each type every 500ish miliseconds and receives the entire state of the application (most updated state of the plots, tracks etc...) as json. The application is then distributing it through the application using Ngrx Store.

There is also a nodejs service that handles user actions and authentication related issues.

The Java service is based on some legacy code, is complicated and big and is full of bugs, so the team decided we want to completely refactor the server side of the application. Its current job is:

  • To serve as a listener of an external Pub-Sub network that publishes the data relevant to the application.
  • Fuse the data and store it in container classes in a way that suites the client
  • Serve as an HTTP server for the client to query.

My questions are as following:

  1. According to the latest say in server side technologies, what would be a good way to design and implement a server side for a real-time app like I just described? A constraint is that atleast some part has to be in Java because of the external Pub-sub network.
  2. What is the best method to receive and handle data in an Angular application that works with Ngrx store? should we retrieve the entire state every HTTP request and "replace" the entire data state every cycle or should we move over to only retrieving relevant updates and handling that differently in the client? Is there maybe a third and better way to tackle this issue?

Thank you very much!




Aucun commentaire:

Enregistrer un commentaire