<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>High Performance Recommendation and Adaptation Platform for Enterprise Applications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jānis Kampars</string-name>
          <email>s@rtu.lv</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lauma Jokste</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jānis Grabis</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Information Technology, Riga Technical University</institution>
          ,
          <addr-line>Kalku 1, Riga</addr-line>
          ,
          <country country="LV">Latvia</country>
        </aff>
      </contrib-group>
      <fpage>239</fpage>
      <lpage>244</lpage>
      <abstract>
        <p>Modern enterprise applications have high degree of complexity. Usage recommendations help to address this complexity from the user perspective. The paper uses recommendations to guide business process execution in enterprise applications. To provide timely support, the recommendations should be generated in near real-time without compromising performance. That is achieved by developing a platform integrating data streams and generating recommendations autonomously of the enterprise application. The platform is shown capable of processing high volume data streams and generate recommendations in near real-time. Keyword : Software development, performance testing, load testing</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Enterprise applications (EA) such as ERP systems are used by companies to execute
their business processes. They have a large number of functions and high complexity.
Despite of recent developments towards better integrated and more open systems [
        <xref ref-type="bibr" rid="ref1 ref2">1,
2</xref>
        ], many EAs are still self-contained systems and their modification poses multiple
challenges. That results in a relatively low usability, underutilization of useful
functionality and high maintenance costs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Adaptation helps to address these challenges [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In the case of EAs special care
should be devoted to ensuring that processes are executed consistently, users are not
obstructed by adaptive features and performance does not suffer [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Enterprises also
increasingly rely on real-time analytics to interact with partners as well as to run
internal operations [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ]. To address these concerns, this research proposes to develop
recommendations generation functionality as an external module to EAs (referred as
to Recommendation and Adaptation Platform or RaAP). The externalization not anlo
helps to address technical factors but also simplifies development and modification of
enterprise applications [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Recommendations in this paper are treated as a form of
adaptation [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] suggesting users actions to perform in EAs while adaptation is
perceived as automated change of the course of action.
      </p>
      <p>
        This paper investigates an ability of the proposed solution to handle large volumes
of incoming data and generate recommendations in near real-time. RaAP is developed
as a specialization of the data streams processing solution described in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. It
incorporates additional features specific to EAs with emphasis on facilitating reusability.
      </p>
      <p>The rest of the paper is organized as follows. Section 2 describes the conceptual
model of the adaptation and recommendation platform. Section 3 describes
architecture of the platform. The experimental studies on performance of the platform are
reported in Section 4. Section 5 concludes.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Foundations</title>
      <p>
        Reliability, process execution consistence, performance and user acceptance are
among key requirements for EAs [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Therefore, recommendations are often more
favorable instead of outright adaptation possibly leading to low user acceptance and
challenges to ensure process execution consistency [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. In order to minimize
software development effort and workload, it is proposed that the recommendation
modcullaessisAduetocSocuapleled from the core EA.
      </p>
      <p>Context Provider</p>
      <p>Entity
Measurable Property</p>
      <p>0..*
uses
1
0..*
0..*
Context Calculation</p>
      <p>0..*
associated with 0..*
measures
1
0..* 0..*
Calculates</p>
      <p>Context Element
1</p>
      <p>1..*
uses 1..*
Trigger
1
1..*
performson
1..*</p>
      <p>1..*
uses
0..*
trigers
0..*</p>
      <p>Action</p>
      <p>1
Recommendation
1
Adaptation</p>
      <p>It is assumed that an EA consists of software entities (e.g., forms, reports, lists)
(Fig. 1). The entities are executed in specific context defined by context elements
(CE), which are measured using measurable properties (MP). MP are raw data from
various sensors and CE are logical interpretation of these data (e.g., user experience,
customer importance). The distinction between MP and CE acts as a filter to reduce
processing of unnecessary data and to simplify definition of recommendations. If CE
assume specific values (e.g., inexperienced user confirms orders one-by-one) a
recommendation is triggered. The recommendation is combination of software entity and
action (e.g., suggest mass-processing function). It is important to note that software
entities and actions are standardized and can be reused to specify multitude of
recommendations.</p>
    </sec>
    <sec id="sec-3">
      <title>Platform</title>
      <p>RaAP is developed as an independent module, which is integrated with an EA in a
loosely coupled manner. This way it can handle various data sources, generate
recommendations for different EAs in a uniform manner, separate computational effort
needed for generating recommendations from the core application and decouple
recommendation and adaptation logics from business logics of the EA. The platform is
specifically geared towards generating recommendations from live data streams and
ensuring scalability of data processing. The architecture of RaAP is shown in Fig. 2.
Horizontally scalable stream processing units are responsible for receiving data from
context providers (1) and handling internal data streams. The archiving jobs store MP
in persistence storage and CE jobs use MP to evaluate CE and their values are sent to
internal stream processing (4), where they are forwarded for evaluation of
recommendations triggers (6). If triggering conditions are met (7), a recommendation is
generated and posted to EA (8,9). All potentially computationally intensive tasks are
executed in dedicated containers in cluster to ensure high performance. There are alternative
possibilities for enacting recommendations in EA depending on preferences of EA
developers. One alternative is recommendation window though direct execution of
recommendations is also possible, for instance, using sockets.</p>
      <sec id="sec-3-1">
        <title>Stream processing (SP)</title>
      </sec>
      <sec id="sec-3-2">
        <title>Context</title>
        <p>providers
1</p>
      </sec>
      <sec id="sec-3-3">
        <title>Archiving jobs</title>
        <p>3,5</p>
      </sec>
      <sec id="sec-3-4">
        <title>Persistent storage ...</title>
        <p>10
P1
PL
2
K1
4</p>
      </sec>
      <sec id="sec-3-5">
        <title>Context evaluation (CoE)</title>
        <p>...
6
CE
jobs
KM
7</p>
      </sec>
      <sec id="sec-3-6">
        <title>Triggering jobs</title>
        <p>9
Recommendation and adaptation
engine (RAE)
R1 ... RN</p>
      </sec>
      <sec id="sec-3-7">
        <title>Enterprise application</title>
        <p>SP is implemented Apache Kafka1 streaming platform. CoE is built using Apache
Spark2 big data analytics engine and RAE is based on Docker3 containers. The
infrastructure is provided using CloudStack4 cloud infrastructure tools.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Performance Evaluation</title>
      <p>The platform currently is being piloted on an ERP system specialized of
municipalities. It has around 30 000 users and highly variable workload. The context data
sources are log files, live user observation as well as external data sources. The
platform provides recommendations to improve the system’s usage efficiency.</p>
      <p>To evaluate an ability of RaAP to generate near real-time recommendations, high
volume data streams are simulated and processed by the platform. The platform’s
throughput, recommendations generation time and workload generated on EA are
evaluated. Three configurations of the platform are considered: C1) 1 core for every
SP, CoE and RAE, C2) 2 cores for every SP, CoE and RAE and C3) 3 cores for every
SP and RAE. The data stream flow rate S is varied from 5000 requests per second to
20 000 rps.</p>
      <p>Fig. 3a shows ability of the configurations to handle high volume data streams.
The throughput without queuing tails-off after the capacity limit is achieved (e.g., C1
has its limit at S-5000 rps). This should be sufficient for medium to large deployments
of EA (in the example considered peek flow is less than 1.5 MB/s). Recommendations
are generated within 536 ms and 793 ms for C1 and C3 and S=1000 rps, respectively,
and 1078 ms for C3 and S=15 000 rps. C3 has higher throughput thought the latency
increases implying that oversized configuration is not desirable for low data streams.
Fig. 3b shows workload created by RAE on EA. T denotes recommendation
processing time by EA (received to be displayed) and z characterizes how often
recommendations are generated (i.e., what is a share of input requests transformed into
useful recommendations and sent to EA). If many recommendations are generated,
nonscalable EA is not able to handle the incoming flow. In the case of z=40% many
requests are dropped. EA can be designed to handle large flow of recommendations
though that diverts development and computational resources from the core needs of
enterprise applications. That demonstrates that RaAP is important to filter out useful
information.
1 https://kafka.apache.org/
2 https://spark.apache.org/
3 https://www.docker.com/
4 https://cloudstack.apache.org/
RaAP allows generating recommendations for users of EAs. It allows specification
and implementation of recommendations in reusable manner without altering the
business logics of the core EA and generates recommendations in near real-time. The
platform is highly scalable and is able to handle high volume of incoming data and
reduces overhead associated with generating recommendations.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Färber</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sang</surname>
            ,
            <given-names>K.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Primsch</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bornhövd</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sigg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lehner</surname>
            ,
            <given-names>W. SAP</given-names>
          </string-name>
          <article-title>HANA database - Data management for modern business applications</article-title>
          ,
          <source>SIGMOD Record</source>
          ,
          <volume>40</volume>
          ,
          <issue>4</issue>
          ,
          <fpage>45</fpage>
          -
          <lpage>51</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Yazdani</given-names>
            <surname>Rashvanlouei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Thome</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Yazdani</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          <article-title>Functional and technological evolution of enterprise systems: An overview"</article-title>
          ,
          <source>IEEE International Conference on Industrial Engineering and Engineering Management</source>
          , pp.
          <volume>67</volume>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Parks</surname>
            ,
            <given-names>N.E.. Testing</given-names>
          </string-name>
          <article-title>&amp; quantifying ERP usability</article-title>
          ,
          <source>RIIT'12 - Proceedings of the ACM Research in Information Technology</source>
          ,
          <fpage>31</fpage>
          -
          <lpage>3</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Akiki</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bandara</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>Y. RBUIS</given-names>
          </string-name>
          :
          <article-title>Simplifying enterprise application user interfaces through engineering role-based adaptive behavior</article-title>
          ,
          <source>EICS 2013 - Proceedings of the ACM SIGCHI Symposium on Engineering Interactive Computing Systems</source>
          ,
          <volume>3</volume>
          -
          <fpage>12</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Singh</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wesson</surname>
            ,
            <given-names>J. Improving</given-names>
          </string-name>
          <article-title>the usability of ERP systems through the application of adaptive user interfaces</article-title>
          .
          <source>ICEIS 2009 - 11th International Conference on Enterprise Information Systems, Proceedings</source>
          , pp.
          <fpage>208</fpage>
          , (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Romero</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vernadat</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <article-title>Enterprise information systems state of the art: Past, present and future trends</article-title>
          , Computers in Industry,
          <volume>79</volume>
          ,
          <fpage>3</fpage>
          -
          <lpage>13</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Akiki</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bandara</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>Y.. Engineering</given-names>
          </string-name>
          <string-name>
            <surname>Adaptive</surname>
          </string-name>
          Model
          <article-title>-Driven User Interfaces</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>42</volume>
          , no.
          <issue>12</issue>
          , pp.
          <fpage>1118</fpage>
          -
          <lpage>1147</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Bormane</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bērziša</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Role of “bridge person” in software development projects</article-title>
          .
          <source>Communications in Computer and Information Science 756</source>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Hannon</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knutov</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Bra</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pechenizkiy</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mccarthy</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smyth</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>Bridging recommendation and adaptation: Generic adaptation framework - Twittomender compliance case-study</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          , 1-
          <fpage>9</fpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kampars</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grabis</surname>
            ,
            <given-names>J. Near</given-names>
          </string-name>
          <string-name>
            <surname>Real-Time</surname>
          </string-name>
          Big
          <article-title>-Data Processing for Data Driven Applications</article-title>
          ,
          <source>International Conference on Big Data Innovations and Applications</source>
          ,
          <volume>35</volume>
          -
          <fpage>42</fpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Topi</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucas</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babaian</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <article-title>Identifying usability issues with an ERP implementation</article-title>
          .
          <source>ICEIS 2005 - Proceedings of the 7th International Conference on Enterprise Information Systems</source>
          , pp.
          <volume>128</volume>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Oreizy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.N.
          <article-title>Runtime software adaptation: Framework, Approaches, and Styles</article-title>
          .
          <source>Proceedings - International Conference on Software Engineering</source>
          , pp.
          <fpage>899</fpage>
          -
          <lpage>909</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>