<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Model-Integrating Microservices: A Vision Paper</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Mahdi</forename><surname>Derakhshanmanesh</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">University of Koblenz-Landau Institute for Software Engineering</orgName>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">Marvin</forename><surname>Grieger</surname></persName>
							<email>marvin.grieger@uni-paderborn.de</email>
							<affiliation key="aff1">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">University of Paderborn</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Model-Integrating Microservices: A Vision Paper</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">257FA572F90571B70B38B46500E8E841</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T01:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Model-integrating development is a novel approach that aims to provide a comprehensive conceptual framework for the engineering of flexible software systems. The atomic building blocks for architecting model-integrating software are modelintegrating components which support the modular cooperation of flexible models and efficient code at runtime. Model-integrating components achieve flexibility by using models at runtime and operations on them like querying, transforming and interpreting. Microservices achieve flexibility by upgrading whole components at runtime. In this short paper, we sketch the vision of Model-Integrating Microservices (MIMs) that combine the strengths of model-integrating components with microservices to support continuous software engineering. With this early work, we intent to initiate a fruitful discussion about architectural design considerations in the community.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Background and Motivation</head><p>Model-Integrating Development (MID) <ref type="bibr" target="#b3">[Der15]</ref> is a novel approach that aims to provide a comprehensive conceptual framework for the design and development of flexible software that can be adapted easily and -in parts -even autonomously <ref type="bibr" target="#b9">[ST09]</ref>. Moreover, being able to make changes quickly and to evolve software easily also supports longevity [GRG + 15]. We observe that these capabilities are similarly useful in the emerging trend of Continuous Software Engineering (CSE).</p><p>The building blocks for MID are Model-Integrating Components (MoCos) which we have presented and implemented in previous research <ref type="bibr" target="#b2">[DEIE14]</ref>. MoCos result from the symbiosis of Component-Based Development (CBD) <ref type="bibr" target="#b8">[SGM02]</ref> and Model-Driven Development (MDD) <ref type="bibr" target="#b0">[BCW12]</ref> concepts. A MoCo is a non-redundant, reusable and executable combination of logically related models and code in an integrated form where both parts are stored together in one component.</p><p>In traditional MDD, models (e.g., UML activity models, feature models, component models) are used at design time. In contrast, in MID models are used directly at runtime, too. As a result, the internals of MoCos can be easily monitored and analyzed using model queries, as well as systematically modified using repeatable model transformations. The same techniques can be used for evolving components using an editor during development and maintenance, and adapting them at runtime using an administration panel or an autonomic adaptation manager component.</p><p>By combining the strengths of modeling languages (e.g., abstraction, separation of con-cerns) and programming languages (e.g., performance) within components, the MoCo concept yields flexible and well-performing software.</p><p>Being able to evolve software easily and quickly is also a main goal of the current trend of microservices <ref type="bibr" target="#b7">[New15]</ref>. Microservices support a fine-grained approach to the modular implementation of distributed, flexible, fault-tolerant and highly responsive software systems. In contrast to the MoCo approach, which concentrates on the technical means for adaptability of component internals at runtime, the microservice approach concentrates on upgradeability of individual, reasonable-sized software components as a whole.</p><p>To summarize, we observe that our ongoing work on MoCos has the potential to fulfill goals similar or complementary to microservices. In order to understand the opportunities and challenges, we sketch an initial vision of a novel software architecture concept that aims to combine the strengths of MoCos with the capabilities of microservices. This concept is introduced subsequently and shall serve as an initial baseline for discussion.</p><p>The architecture concept of Model-Integrating Microservices (MIMs) builds on top of the established MoCo concept. An MIM is a MoCo that is realized with microservice technology. Therefore, an MIM adds a couple of additional benefits to the MoCo concept.</p><p>The benefits of MoCos over other component concepts are: (i) enhanced flexibility because the software system and its individual components can be observed using model queries, can be modified by adapting models using an editor or model transformations and can be executed using model interpreters, (ii) support of separation of concerns because each model targets a concern, (iii) understandability and maintainability because models are assumed to be easier to understand and easier to handle than code, (iv) selfdocumentation because a well designed modeling language is assumed to be a documentation and (v) no synchronization problem because there is no redundancy between model and code within a MoCo unless it is introduced willfully, e.g., to realize reflection.</p><p>The expected added value of MIMs over the MoCo concept are: (i) self-containment because a MIM is deployed together with its full infrastructure and dependencies, (ii) distribution because MIMs communicate over a network and (iii) decentralization w.r.t. data because each MIM manages its own data; especially including its models.</p><p>An example of two MIMs is depicted schematically in Figure <ref type="figure">1</ref>. A description from an external point of view and an internal point of view is given subsequently. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">External View</head><p>Externally, each MIM runs in its own process and is deployed in a standardized container<ref type="foot" target="#foot_0">1</ref> that can be executed on any (virtual) server node. In the given example, there is one in Container A (MIM A) and one in Container B (MIM B).</p><p>Encapsulation supports full compatibility with other microservices as MIMs can be used in a black-box manner. Conceptually, and in line with the original MoCo concept, each MIM offers its application functionality via a group of interfaces at the PFunction port. When using these interfaces, consumers do not notice any difference to other microservices. Optionally, an MIM can offer invasive management functionality -such as transformations on its encapsulated models -via secured interfaces at the PManage port. A similar splitting between a functional interface and a control interface is discussed in related work <ref type="bibr" target="#b6">[Kra09]</ref>.</p><p>To realize MIMs, the Container-Specific Infrastructure comprises an Execution Environment and also a Modeling Infrastructure. In the tradition of microservices, each MIM comes with all required dependencies and with the infrastructure for handling models at runtime (e.g., model query and transformation engines, model interpreters).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Internal View</head><p>Internally, MIMs stress the microservice idea of technology diversification where each team can choose the tools and languages that suit their skills and goals best.</p><p>On the one hand, to leverage existing code and the ability of skilled people to develop software in a well-known programming language such as Java, each MIM can have a code portion. This is sketched by the right side of each MIM in Figure <ref type="figure">1</ref>.</p><p>On the other hand, to leverage the powerful capabilities of existing modeling languages and technologies, each MIM can have a model portion. This is sketched by the left side of each MIM in Figure <ref type="figure">1</ref>. Any kind of modeling language can be (re)used for this purpose. For instance, textual, visual and hybrid Domain-Specific Modeling Languages (DSMLs) can express application logic and data structures.</p><p>Importantly, in contrast to MDD, no code is generated for these designed models. Models such as process descriptions and can be executed by model interpreters that traverse the model's abstract syntax graph representation at runtime. In this regard, DSMLs serve a similar purpose like interpreted scripting languages.</p><p>Models are integrated systematically with code inside of an MIM. This approach assumes that, from a technical point of view, code objects and model objects can both be handled equally, i.e., they can be referenced and their behavior can be invoked by calling methods of a facade. Objects from the code portion and the model portion can be connected in a hard-coded manner but there are flexible alternatives, too. For example, the mediator pattern [GHJV95] can be followed as illustrated in Figure <ref type="figure">1</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Impact and Synergy Effects</head><p>Based on experience from our established and ongoing research on MoCos, we are convinced that using microservices to realize the MoCo concept in the form of MIMs will enable the engineering of even more flexible software systems. This is due to the fact that the MoCo concept and the microservice concept address complementary concerns to achieve dynamism and to support continuous software engineering.</p><p>MoCos focus primarily on the internals of components, i.e., on the use of domain-specific and general-purpose modeling languages and modeling capabilities such as querying, transforming and interpreting for the systematic analysis and adaptation of parts of components during design and at runtime. Microservices focus primarily on the outside of components and their containers, i.e., on component size and boundaries, aspects of distribution, updatability and rapid (re)deployment.</p><p>Next, we describe an excerpt of opportunities and challenges related to the MIM concept.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Opportunities</head><p>In terms of opportunities, the MIM concept brings a couple of advantages over traditional microservices and vice-versa.</p><p>Most notably, the MIM approach brings the whole world of modeling and especially models at runtime to the microservice world. This enables the use of various kinds of generalpurpose and domain-specific modeling languages, thus supporting all advantages of modeling like abstraction and separation of concerns via different views. Central to MIMs is the added flexibility of using models at runtime, so changes to component internals can be made systematically without swapping the whole component.</p><p>To illustrate this benefit in the context of CSE, take for example the timeline depicted in Figure <ref type="figure" target="#fig_1">2</ref>. In this example, the evolution of an MIM over time is shown. The merits of the MoCo concept allow to perform manual or automatic micro-adaptations by transforming the integrated models. Such changes are lightweight but limited in scope. In contrast, the Moreover, realizing the existing MoCo concept using microservices, related technology and best practices, the more general MoCo concept can be optimized for one specific kind of technological space and community. Thereby, the original MoCo concept also benefits from the MIM vision, because microservices and available container technologies support realizing dynamically evolving software from an infrastructure perspective. This point has been a weak point in MoCos, so far.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Challenges</head><p>In terms of challenges, the MIM concept brings a couple of open issues to be tackled.</p><p>For instance, the MIM concept strongly requires the rapid and smooth development of DSMLs. However, current meta-tools are not quite there, yet. Moreover, the fast (re)deployment of the modeling infrastructure together with MIMs needs to be supported.</p><p>Obviously, the introduction of modeling comes with a technological overhead. Despite offering this approach to handling complexity, microservices already come with their own technological and organizational overhead. Therefore, adding the extra costs for the design and use of DSMLs needs to be considered with care. Regarding fundamental conceptual issues, we discussed challenges for the required modeling infrastructure such as (i) modularization and integration of metamodels, (ii) links between distributed models, (iii) specification of model semantics as well as (iv) data and control flow between models and code in earlier work on MoCos <ref type="bibr" target="#b1">[DEG15]</ref>.</p><p>Further challenges are inherited from the nature of traditional microservices. For example, eventual consistency must be managed because data may exist redundantly (e.g., across models in different MIMs that are distributed across a network) and fault tolerance must be supported because MIMs can become unavailable (e.g., during model processing).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Concluding Remarks</head><p>We believe that the symbiosis of architectural concepts from the worlds of MoCos on the one hand, and microservices on the other hand, opens doors for interesting opportunities in continuous software engineering. With MIMs, software engineers can benefit from the flexibility of modeling languages across the full software lifecycle including runtime. By presenting this early work, we hope to initiate a discussion on architectural design considerations. Moreover, we plan to realize an MIM variant of the MoCo infrastructure <ref type="bibr" target="#b3">[Der15]</ref> as a technical basis for carrying out additional feasibility studies.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Figure 1: High-Level Sketch of two Connected Model-Integrating Microservices</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Example Timeline of an Evolving Model-Integrating Microservice</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Docker containers are a contemporary example (https://www.docker.com/what-docker).</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgements. This work is supported by the Deutsche Forschungsgemeinschaft (DFG) under grants EB 119/11-1 and EN 184/6-1. We thank Gregor Engels for pointing us at microservices and we thank Jürgen Ebert for his feedback on the text.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Model-Driven Software Engineering in Practice</title>
		<author>
			<persName><forename type="first">Marco</forename><surname>Brambilla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jordi</forename><surname>Cabot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Manuel</forename><surname>Wimmer</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>Morgan &amp; Claypool</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Challenges for Model-Integrating Components</title>
		<author>
			<persName><forename type="first">Mahdi</forename><surname>Derakhshanmanesh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jürgen</forename><surname>Ebert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marvin</forename><surname>Grieger</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2nd International Workshop on Model-Driven Engineering for Component-Based Software Systems co-located with 18th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2015)</title>
				<meeting>the 2nd International Workshop on Model-Driven Engineering for Component-Based Software Systems co-located with 18th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2015)<address><addrLine>Ottawa, Kanada</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2015">September 28, 201. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Model-Integrating Software Components</title>
		<author>
			<persName><forename type="first">Mahdi</forename><surname>Derakhshanmanesh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jürgen</forename><surname>Ebert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><surname>Iguchi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gregor</forename><surname>Engels</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model Driven Engineering Languages and Systems, 17th International Conference, MODELS 2014</title>
				<editor>
			<persName><forename type="first">Juergen</forename><surname>Dingel</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Wolfram</forename><surname>Schulte</surname></persName>
		</editor>
		<meeting><address><addrLine>Valencia, Spain; Valencia, Spain</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014-10-03">September 28 -October 3, 2014. 2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">Model-Integrating Software Components -Engineering Flexible Software Systems</title>
		<author>
			<persName><forename type="first">Mahdi</forename><surname>Derakhshanmanesh</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2015">2015</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Design Patterns: Elements of Reusable Object-Oriented Software</title>
		<author>
			<persName><forename type="first">Erich</forename><surname>Gamma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Richard</forename><surname>Helm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ralph</forename><surname>Johnson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><surname>Vlissides</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1995">1995</date>
			<publisher>Addison-Wesley Longman Publishing Co., Inc</publisher>
			<pubPlace>Boston, MA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Design for future: managed software evolution</title>
		<author>
			<persName><surname>Grg + ; Ursula</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ralf</forename><forename type="middle">H</forename><surname>Goltz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><surname>Reussner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wilhelm</forename><surname>Goedicke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Lukas</forename><surname>Hasselbring</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Birgit</forename><surname>Märtin</surname></persName>
		</author>
		<author>
			<persName><surname>Vogel-Heuser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Science -Research and Development</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="issue">3-4</biblScope>
			<biblScope unit="page" from="321" to="331" />
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Component Control</title>
		<author>
			<persName><forename type="first">Sacha</forename><surname>Krakowiak</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Middleware Architecture with Patterns and Frameworks (Distributed under a Creative Commons license)</title>
				<imprint>
			<date type="published" when="2009">2009</date>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="page">5</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Building Microservices</title>
		<author>
			<persName><forename type="first">Sam</forename><surname>Newmann</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2015">2015</date>
			<publisher>O&apos;Reilly and Associates</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Component Software -Beyond Object-Oriented Programming</title>
		<author>
			<persName><forename type="first">Clemens</forename><surname>Szyperski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dominik</forename><surname>Gruntz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stephan</forename><surname>Murer</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
	<note>second edition</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Self-Adaptive Software: Landscape and Research Challenges</title>
		<author>
			<persName><forename type="first">Mazeiar</forename><surname>Salehie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ladan</forename><surname>Tahvildari</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Auton. Adapt. Syst</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page">42</biblScope>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
