Split and Migrate: Resource-Driven Placement and Discovery of Microservices at the Edge

Genc Tato, Marin Bertier, Etienne Rivière, Cédric Tedeschi, Michael Wagner
<span title="2020-02-10">2020</span> <i > <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/cism4u4i3jhmlkqr5j6mc3jemi" style="color: black;">International Conference on Principles of Distributed Systems</a> </i> &nbsp;
Microservices architectures combine the use of fine-grained and independently-scalable services with lightweight communication protocols, such as REST calls over HTTP. Microservices bring flexibility to the development and deployment of application back-ends in the cloud. Applications such as collaborative editing tools require frequent interactions between the frontend running on users' machines and a back-end formed of multiple microservices. User-perceived latencies depend on their
more &raquo; ... to microservices, but also on the interaction patterns between these services and their databases. Placing services at the edge of the network, closer to the users, is necessary to reduce user-perceived latencies. It is however difficult to decide on the placement of complete stateful microservices at one specific core or edge location without trading between a latency reduction for some users and a latency increase for the others. We present how to dynamically deploy microservices on a combination of core and edge resources to systematically reduce user-perceived latencies. Our approach enables the split of stateful microservices, and the placement of the resulting splits on appropriate core and edge sites. Koala, a decentralized and resource-driven service discovery middleware, enables REST calls to reach and use the appropriate split, with only minimal changes to a legacy microservices application. Locality awareness using network coordinates further enables to automatically migrate services split and follow the location of the users. We confirm the effectiveness of our approach with a full prototype and an application to ShareLatex, a microservices-based collaborative editing application.
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.4230/lipics.opodis.2019.9">doi:10.4230/lipics.opodis.2019.9</a> <a target="_blank" rel="external noopener" href="https://dblp.org/rec/conf/opodis/TatoBRT19.html">dblp:conf/opodis/TatoBRT19</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/oeeok4xbwjc7zcq56qortowrsi">fatcat:oeeok4xbwjc7zcq56qortowrsi</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20201213125227/https://drops.dagstuhl.de/opus/volltexte/2020/11795/pdf/LIPIcs-OPODIS-2019-9.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/5a/61/5a6121e832bdb8880ff2a3e6cdefea93fed07c3b.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.4230/lipics.opodis.2019.9"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> Publisher / doi.org </button> </a>