Looks like there is some disconnect in this thread, a few replies express concerns that the proposal IMO doesn't imply.
There is already a REST API that backs all of the CLI functionality. Modern UIs run in the browser, and so what was proposed (unless I misunderstood) would be based on the same REST API and nothing extra. The only additional thing the AM has to do is serve static files. And AFAIK it would actually simplify the UI implementation when files and REST API have the same origin. To me where files are coming from is actually a smaller piece and something that can be augmented. But before proposing solutions outside of Apex or additional deployment requirements, please consider the user experience. It should be really simple to setup and use the UI. I would expect that a large part of the discussion evolves around the UI functionality that helps the target persona. Thanks, Thomas On Tue, Jun 12, 2018, 8:05 PM Shubhrajyoti Mohapatra <sjmohapat...@gmail.com> wrote: > Hi Community, > > I would like to propose a slightly different approach on having an UI for > Apex. > > The details are below: > > 1. This involves having an external web-server installed along side of > apexCli. We will basically mimic all the functionalities that apexCli > currently provides. > 2. We will develop the necessary REST APIs for fetch/update operations > which apexCli currently supports. > 3. Because most of the information and operations needed by a typical > user are already there in apexCli, it will of great help to end users > and > which may increase the adoption rate. > > About Chinmay's proposal of having the STRAM hosting the apps, please find > my comments below: > > 1. It may increase load on STRAM if we were to provide real time display > of information. I am aware that apexCli fetches info from STRAM apis but > continuous polling can cause extra over-head. > 2. The UI will have limited scope for the particular application. Users > would definitely love to have a comprehensive UI for the management of > Apex > Apps as a whole. > 3. UI might be able to affect the whole application through STRAM hence > giving direct access to STRAM APIs might not be good idea. > 4. Because STRAM can't have a comprehensive UI hosted inside, anyways we > will have to develop an external one. > > So I would like propose the plan on action like this. > > 1. We develop the wrapper UI for apexCli in the first phase and give > user all the management options as REST APIs. > 2. If some of information we require are not in the current apexCli > implementation, we can add those feature to apexCli and if required to > STRAM APIs in subsequent phases. > 3. In future we can even remove the REST server from STRAM if we could > provide something like MetricsStore functionality which was there in > DataTorrent RTS. > > -- > Thanks and Regards, > Shubhrajyoti Mohapatra > > > > > On Tue, Jun 12, 2018 at 2:49 AM Vlad Rozov <vro...@apache.org> wrote: > > > IMO it will be hard to provide UI that meets everyone expectation. An > > external webUI can serve two goals > > > > 1. provide reference UI implementation > > 2. ensure that REST API have all necessary entry points > > > > by embedding webUI directly into stram it will be tempting to shortcut > > some calls to use stram classes directly. > > > > Thank you, > > > > Vlad > > > > On 6/11/18 12:18, Pramod Immaneni wrote: > > > I too think that a comprehensive UI works better standalone but given > > that > > > stram already runs a webapp server, provides web services and RM > > provides a > > > proxy with mapped url space for it, we can extend stram to provide > better > > > visual output. Overall I am +1 on the idea. > > > > > > On Mon, Jun 11, 2018 at 8:59 AM Vlad Rozov <vro...@apache.org> wrote: > > > > > >> Clarification: I am -0 on making UI part of the stram. I am +1 on > > >> providing reference webUI application outside of the stram. > > >> > > >> Thank you, > > >> > > >> Vlad > > >> > > >> On 6/9/18 07:05, Vlad Rozov wrote: > > >>> -0: stram provides REST API to query runtime information and IMO this > > >>> is sufficient to build an external webUI application(s). > > >>> > > >>> Thank you, > > >>> > > >>> Vlad > > >>> > > >>> On 6/6/18 11:17, Ambarish Pande wrote: > > >>>> +1 For this feature. It would be really helpfull for users to > > >>>> visualize all > > >>>> this information and the DAG. > > >>>> > > >>>> +1 for ReactJS + MaterialUI > > >>>> A great choice, given its flexibility and performance. > > >>>> > > >>>> I would like to contribute to this effort. > > >>>> > > >>>> On Wed, 6 Jun 2018 at 8:13 PM, Chinmay Kolhatkar < > chin...@apache.org> > > >>>> wrote: > > >>>> > > >>>>> 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. > > >>>>> > > >> > > > > >