<!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>
      <journal-title-group>
        <journal-title>EMLS</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>On the Modernization of ExplorViz towards a Microservice Architecture</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Christian Zirkelbach, Alexander Krause, and Wilhelm Hasselbring Software Engineering Group Kiel University</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>5</volume>
      <fpage>39</fpage>
      <lpage>42</lpage>
      <abstract>
        <p>Software systems evolve during their lifetime and therefore face several challenges. Changing requirements or upcoming feature requests make modi cations or extensions inevitable. Especially long-living software systems have often been built as monolithic applications and are based on obsolescent architectures and technologies. This circumstance makes it di cult for developers to maintain or extend software. In this paper, we report on the modernization process of our open source research project ExplorViz { moving from a monolithic towards a microservice architecture. We describe our previous version within the project and present how we solved the modernization and handled occurring problems. Afterwards, we illustrate our modernized software system and point out the obtained bene ts. Finally, we delineate open questions for the ongoing development.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Software systems evolve over time and encounter di
culties during their life cycle. Often these systems are
modi ed or extended, induced by new requirements
or upcoming requests from customers. In the context
of long-living software systems, these systems have
often been built in form of monolithic applications and
are comprised of obsolescent architectures and
technologies. A key problem of monolithic applications is
that all components are developed on a single
codebase among several developers. This basically means,
that if a developer wants to modify code or add a
new feature, he needs to be certain that the
remaining code and provided services are still working
after his changes [10]. A solution to this problem can
be employing a di erent architectural style, namely
a microservice architecture, composed of several
selfcontained systems [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. This style o ers more
exibility and scalability on the one hand and replaceability
of single components on the other hand [12]. Since
2012, we develop the open source research project
ExplorViz,1 a web-based monitoring and visualization
tool for large software landscapes [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. ExplorViz
features two di erent visualizations { an abstract
software landscape and a detailed application level
visualization, which are built-upon collected monitoring
information. Since the rst version, we have
continually developed and improved our software, e.g.,
by replacing single components or adding new
features. Thus, it was inevitable to make changes to the
code and even architectural amendments. This
circumstance made it more and more di cult over time,
to maintain and extend our software, especially for
external developers, e.g., computer science students.
Overcoming these problems was our initial incentive
for the modernization. Similar decision triggers for
developers in other projects are depicted in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. We
performed an architectural modernization of our open
source project ExplorViz and provided a simple way
to enhance our software via extensions.
      </p>
      <p>The remainder of this paper is organized as follows.
In Section 2, we describe the monolithic architecture
of our open source project, referred to as ExplorViz
Legacy , and point out problems during development.
Afterwards, we present our approach to address the
presented problems in Section 3. In Section 4, we
discuss related work regarding our approach. Finally, the
conclusions are drawn and open questions are
delineated.
2</p>
    </sec>
    <sec id="sec-2">
      <title>ExplorViz Legacy</title>
      <p>
        The idea behind ExplorViz was initially
conceptualized in 2012 and rst published a year later [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Since then, the project has evolved greatly in feature
count, source lines of code, and research interests.
For instance, we investigated alternative visualization
approaches with cutting-edge input and output
devices in the context of program comprehension [
        <xref ref-type="bibr" rid="ref7 ref8">7,
8</xref>
        ]. These have been developed in terms of extensions,
e.g., a Virtual Reality mode. Most of these extensions
are the result of student's theses or seminar papers.
As of today we count a growing number of twenty
student's theses and more than ten Git branches in
the context of the visualization functionality, i.e.,
landscape and application renderings.
Java and its Remote Procedure Calls (RPC) are
taught early in lectures, therefore we utilized the
Google Web Toolkit (GWT) as primary web
framework for our project. GWT enables writing Java
code for both server- (backend) and client-logic
(frontend) in a single project. It compiles client-related
Java- to respective JavaScript-code (JS), thus
enabling the execution in web browsers. Additionally,
the toolkit introduces GWT RPC (GRPC) for
triggering actions on the server or exchanging data over
HTTP. Therefore, client-server communication is
easily usable for non-professional developers and does not
require manual parsing of Java objects to obtain a
common transport format, e.g., JavaScript Object
Notation (JSON). This particular technology of network
communication eases the development, especially for
our students.
      </p>
      <p>&lt;&lt;device&gt;&gt;</p>
      <p>Server
&lt;&lt;component&gt;&gt;
ExplorViz Legacy
In Figure 1 the deployment and simpli ed software
stack of our GWT-based ExplorViz Legacy is shown.
It can be deployed on a single server node. On startup,
ExplorViz Legacy automatically creates a database
for user management. The lesystem is facilitated to
store serialized landscape objects, i.e., the underlying
data models, that are retrieved from monitoring data
and used for visualization.</p>
      <p>The presented project setup was used since 2012
and published in 2013 on Github.2 During
subsequent development we frequently migrated client code
from Java to JS using GWT's JavaScript Native
Interface (JSNI), i.e., embedded JS code in Java methods.
The reason behind this alteration of GWT's intended
work ow was the utilization of modern JS libraries
to simplify the usability for users. The result was a
fragmentation of ExplorViz's codebase in JSNI- and
Java-methods. This was further deteriorated when we
substituted GWT's WebGL implementation with the
JS-based library three.js. three.js provides a high level
of abstraction for 3D rendering and thus o ers a better
maintainability and extensibility for new developers.</p>
      <p>In 2016 we stopped the development of new
features in ExplorViz. GWT seemed to disappear in a
variety of other projects. Additionally, there was no
major update of the toolkit for at least a year.
Meanwhile Google released a new programming language
which can also be used for web development, called
2https://github.com/ExplorViz/Explorviz
Dart. This language is used by Google itself to build
many applications as noted on the related website.3
Since it was announced that JSNI will be removed
with the release of GWT 3, we were in need of
migrating code once again. At this time ExplorViz Legacy
contained a great amount of JS code. Therefore, we
decided to drop GWT as sca old and modernize the
monolithic project with new technologies and less
dependencies to modules of the underlying web
framework.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Modernization Procedure</title>
      <p>
        Two major communication technologies emerged from
practical realization when implementing web services.
Research shows that SOAP-based services are in fact
less performant and do not support mobile devices
as good as their RESTful counterparts [5].
Furthermore, the latter eases the development and in uences
the characteristics of a system, e.g., scalability and
exibility [
        <xref ref-type="bibr" rid="ref3">3, 5</xref>
        ].
      </p>
      <p>In [13] the authors present how the German
ecommerce provider Otto modernized the underlying
software system of their online shop. Instead of
refactoring the old monolithic system, they completely
reimplemented the functionality, using a microservice
architecture. The developed microservices
communicate only by accessing REST APIs. This redesign
resulted in a highly scalable and fault tolerant software
system.</p>
      <p>The previously mentioned issues in ExplorViz
Legacy (see Section 2) and the experience reports
about successful utilization of alternative
technologies, e.g., RESTful APIs, were triggers for a
modernization of the ExplorViz project. We no longer saw
advantages of preferring GWT over other web
frameworks. Therefore, we decided to split the codebase
into two separated projects, i.e., backend and
frontend. The backend is implemented as a Java-based
web service providing a RESTful API for clients.
Since client-side code is mostly written in JS
nowadays, we choose this programming language for the
frontend.</p>
      <p>Figure 2 depicts the new architecture and
simplied software stack of ExplorViz. Backend and
frontend are now two self-contained microservices. Thus,
they can be deployed on di erent server nodes. In
detail, we employ distinct technology stacks with
integrated storage. This allows us to exchange a single
or both microservices, as long as we take our speci ed
interfaces into account.</p>
      <p>The backend provides a RESTful API for
frontend instances and is based on the Jersey framework,4
which implements the Servlet 3.0 speci cation. This
is utilized to implement a web service without the
need to state a web.xml le, i.e., the servlet con
guration le. Instead, we use javax.servlet.annotations to
3https://webdev.dartlang.org
4https://jersey.github.io
&lt;&lt;device&gt;&gt;</p>
      <p>Server A
&lt;&lt;microservice&gt;&gt;</p>
      <p>Backend
&lt;&lt;component&gt;&gt;
ExplorViz (Jersey)
de ne servlet declarations and mappings. We expect
this approach will ease the development, especially for
students.</p>
      <p>ExplorViz's new frontend uses the client-side JS
framework Ember.js (Ember), 5 which allows us to
use to provide software visualizations with a
WebGLenabled browser. Ember is based on the Model View
ViewModel architectural pattern. As a result,
manual Document Object Model accesses are not
necessary and developers need less code. Ember allows
and emphasizes the use of components in web sites,
i.e., self-contained, reusable, and exchangeable user
interface fragments. We employ this feature to
encapsulate visualization modes. Therefore, they can be
included, containing all necessary logic by inserting
a single line of code. Network communication, e.g.,
fetching a landscape from the backend, is abstracted
by so-called adapters. These make it easy to send or
request data by using convention over con guration,
if the backend applies the same rules for URL de
nitions.</p>
      <p>The introduced microservices represent the core of
ExplorViz. As for future extensions, we implemented
clean and comprehensive interfaces for both
components, that allow the registration of extensible
functionalities. A student implementing new mechanics
will therefore use a template extension as starting
point. Those extensions access core mechanics only
by a de ned read-only API, which is implemented by
the backend, respectively frontend. The
modularization enables us to improve the backend or frontend,
while not breaking extension support.</p>
      <p>In summary, both frameworks are exchangeable
with respect to their language domain. The backend
would primarily need to de ne new ways to provide
data. Since client-side JS frameworks have similar
elements and approaches, we think substituting Ember
can be done with little e ort.</p>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], the authors conduct a case study addressing
the evolution of a software system, which has been
scarcely documented. The case study involves
architecture recovery and planning and execution of several
evolution cycles. Compared to our approach, we did
not recover the architecture, since we did not want to
keep the obsolete monolithic architecture, which was
provided by GWT. Furthermore, we did not need to
apply a series of refactoring iterations to modernize
our software system.
      </p>
      <p>[10] compares the development and cloud
deployment of an enterprise application based on a
monolithic approach and a microservice architecture. Their
approach contains common elements to our applied
process. They employ modern technologies for
separate microservices, e.g., Java in the backend and JS
in the frontend. Contrary to their results, we did not
face any of the mentioned problems during the
migration, like failures or timeouts.</p>
      <p>According to [5], RESTful services can improve
system exibility, scalability, and performance in
comparison to SOAP-based web services. Additionally,
REST-based services are easier to consume and
compose, based on well-de ned standards and
heterogeneous operations. They provide an approach to
migrate SOAP-based to RESTful services.
Unfortunately, their approach is not applicable for us, since
our project is based on GWT instead of SOAP.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], the authors present a survey of various
approaches to move from legacy systems towards
a Service-Oriented-Architecture (SOA) environment.
Basically, they distinguish between four di erent
categories { replacement, wrapping, redevelopment, and
migration. While Replacement is self-explanatory,
wrapping employs a new interface for existing
components to make them accessible in form of services.
Redevelopment employs reverse and reengineering
approaches to add necessary functionality to the legacy
system. Finally, a migration moves a legacy system to
the more exible environment. Thus, the original
system's data and functionality can be preserved. Based
on the type of legacy system, tool support, and
further criteria, a di erent technique or strategies can
be employed. Unfortunately, their present migration
and redevelopment strategies are not adaptable for
our process, since these focus on SOA environments
instead of microservices.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>In this paper, we report on our modernization
process of ExplorViz from a monolithic towards a
microservice architecture. We pointed out encountered
problems during our development since 2012,
especially those related to the architecture underneath
our software. Consequently, we described ExplorViz
Legacy , the previous version of our open source
research project, and presented solutions to address the
existing problems. Afterwards, we revealed our
modernized software system and emphasized the obtained
bene ts. Even though our modernization process is
still in progress, we were already able to employ a
microservice architecture in order to ease
maintainability on one hand, and extensibility on the other hand.
Finally, we would like to delineate some of our open
questions:</p>
      <p>How can we derive best practice guidelines from
our migrations for other projects?
Does the rapid evolution of JS frontend
frameworks in uence the ongoing evolution of
ExplorViz?
How can we reposition ExplorViz as an open
source visualization framework for diverse data,
as exemplarily shown in [14]?</p>
      <p>B. Upadhyaya et al. \Migration of SOAP-based
services to RESTful services". In: Proceedings
of the 13th IEEE International Symposium on
Web Systems Evolution (WSE). Sept. 2011,
pp. 105{114.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Koskinen</surname>
          </string-name>
          et al. \
          <article-title>Software Modernization Decision Criteria: An Empirical Study"</article-title>
          .
          <source>In: Proceedings of the 9th European Conference on Software Maintenance and Reengineering. Mar</source>
          .
          <year>2005</year>
          , pp.
          <volume>324</volume>
          {
          <fpage>331</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          et al. \
          <article-title>A Case Study on Software Evolution towards Service-Oriented Architecture"</article-title>
          .
          <source>In: Proceedings of the 22nd International Conference on Advanced Information Networking and Applications</source>
          . Mar.
          <year>2008</year>
          , pp.
          <volume>1399</volume>
          {
          <fpage>1404</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Vinoski. \RESTful Web Services Development Checklist</surname>
          </string-name>
          <article-title>"</article-title>
          .
          <source>In: IEEE Internet Computing 12.6</source>
          (
          <issue>Nov</issue>
          .
          <year>2008</year>
          ), pp.
          <volume>96</volume>
          {
          <fpage>95</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Almonaies</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Cordy</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Dean</surname>
          </string-name>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>\Legacy system evolution towards serviceoriented architecture"</article-title>
          .
          <source>In: Proceedings of the International Workshop on SOA Migration and Evolution. 2010</source>
          , pp.
          <volume>53</volume>
          {
          <fpage>62</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Fittkau</surname>
          </string-name>
          et al. \
          <article-title>Live trace visualization for comprehending large software landscapes: The ExplorViz approach"</article-title>
          .
          <source>In: Proceedings of the First IEEE Working Conference on Software Visualization (VISSOFT)</source>
          .
          <source>Sept</source>
          .
          <year>2013</year>
          , pp.
          <volume>1</volume>
          {
          <fpage>4</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Fittkau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Krause</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Hasselbring</surname>
          </string-name>
          . \
          <article-title>Exploring software cities in virtual reality"</article-title>
          .
          <source>In: Proceedings of the 3rd IEEE Working Conference on Software Visualization (VISSOFT)</source>
          .
          <source>Sept</source>
          .
          <year>2015</year>
          , pp.
          <volume>130</volume>
          {
          <fpage>134</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Fittkau</surname>
          </string-name>
          , E. Koppenhagen, and
          <string-name>
            <given-names>W.</given-names>
            <surname>Hasselbring</surname>
          </string-name>
          . \
          <article-title>Research Perspective on Supporting Software Engineering via Physical 3D Models"</article-title>
          .
          <source>In: Proceedings of the 3rd IEEE Working Conference on Software Visualization (VISSOFT)</source>
          . IEEE, Sept.
          <year>2015</year>
          , pp.
          <volume>125</volume>
          {
          <fpage>129</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Newman</surname>
          </string-name>
          .
          <article-title>Building microservices: designing ne-grained systems</article-title>
          .
          <source>O'Reilly</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>M. Villamizar</surname>
          </string-name>
          et al. \
          <article-title>Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud"</article-title>
          .
          <source>In: Proceedings of the 10th Computing Colombian Conference (10CCC)</source>
          .
          <source>Sept</source>
          .
          <year>2015</year>
          , pp.
          <volume>583</volume>
          {
          <fpage>590</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</given-names>
            <surname>Fittkau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Krause</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Hasselbring</surname>
          </string-name>
          . \
          <article-title>Software landscape and application visualization for system comprehension with ExplorViz"</article-title>
          .
          <source>In: Information and Software Technology</source>
          (
          <year>2016</year>
          ). http://dx.doi.org/10.1016/j.infsof.
          <year>2016</year>
          .
          <volume>07</volume>
          .004.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <given-names>T.</given-names>
            <surname>Salah</surname>
          </string-name>
          et al. \
          <article-title>The evolution of distributed systems towards microservices architecture"</article-title>
          .
          <source>In: Proceedings of the 11th International Conference for Internet Technology and Secured Transactions (ICITST)</source>
          .
          <source>Dec</source>
          .
          <year>2016</year>
          , pp.
          <volume>318</volume>
          {
          <fpage>325</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <given-names>W.</given-names>
            <surname>Hasselbring</surname>
          </string-name>
          and
          <string-name>
            <surname>G. Steinacker.</surname>
          </string-name>
          \
          <article-title>Microservice Architectures for Scalability, Agility and Reliability in E-Commerce"</article-title>
          .
          <source>In: Proceedings of the International Conference on Software Architecture Workshops (ICSAW)</source>
          .
          <source>Apr</source>
          .
          <year>2017</year>
          , pp.
          <volume>243</volume>
          {
          <fpage>246</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <given-names>C.</given-names>
            <surname>Zirkelbach</surname>
          </string-name>
          . \
          <article-title>Juggling with Data: On the Lack of Database Monitoring in Long-Living Software Systems"</article-title>
          .
          <source>In: Proceedings of the 4th Collaborative Workshop on Evolution and Maintenance of Long-Living Software Systems (EMLS)</source>
          .
          <source>Softwaretechnik-Trends 2</source>
          .
          <year>2017</year>
          , pp.
          <volume>62</volume>
          {
          <fpage>65</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>