Hi Community,

I want to propose a feature in apex-core to have a UI component in stram.
This is influenced by how basic runtime information is shown on UI by spark.

This includes following features:
1. Webpage will be hosted by stram and will be available for user to view
in one of the two ways (I'll prefer approach b):
   a. Hosted on a static port in which case we'll need to add a new servlet
to stram
   b. The webpage will be hosted on the same port as that of stram
webservice but at a different path. Say, http://
<stram_host>:<webservice_port>/ui

2. The webpage will be a static page and depending on the framework we
chose, it can show the realtime metric data from stram.

3. There will be a categories of readonly information (maybe dynamically
changing) that will be shown on the UI:
   a. Application level information
       i. Status
       ii. Number of tuples processed/emitted
       iii. Start time/ Running span
       iv. Stram events
       v. Total memory used/available
       vi. Number of container allocated/deployed
       v. Other information which is available in stram
   b. Logical Operator level information
       i. Status
       ii. Number of tuples processed/emitted
       iii. Important events related to logical operator
       iv. Container list in which the operator is deployed
       v. Any other information available in stram
       vi. Logical DAG View
   c. Container level information
       i. Status
       ii. Number of tuples processed/emitted
       iii. Important events related to logical operator
       iv. Any other information available in stram
       v. Physical DAG View

4. In second phase, there will be control related operations allowed from
the UI, as follows:
   a. Stop/Kill application
   b. Stop/Kill containers
   c. Stack trace dump of containers
   d. Logs related?
   d. etc...??

The above implementation can be done in phases as follows:
1. Have webpage display application level information only (read-only).
Static display first (i.e. page needs to refresh to see latest data), next
dynamically changing data.
2. Have jenkins build tools updated as needed by UI framework.
3. Update the backend (stram) to serve the UI pages
3. Extend the webage to display logical operator information.
4. Extend the webage to display physical operator information
5. Implement control operations on UI.


To implement above functionality, I propose ReactJS as UI framework and
MaterialUI (based on Google's material design) for theme/controls/CSS
support.

Please let me know what you think about the same.

Also, please let know if anyone is interested in contributing to this
feature.

Thanks,
Chinmay.

Reply via email to