Microservices Are Dying, A New Method for Module Division Based on Universal Interfaces
Qing Wang, Yong Zhang
TL;DR
The paper addresses the problem that microservices fail to guarantee complete module independence due to dependency diffusion. It introduces the Impact Scope Metric ($ISM$) to quantify how changes propagate across an Application ($A_{aname}$), its Modules ($M_{mid}$), and Services ($S_{sid}$) under static, runtime, and non-runtime contexts, and derives independence conditions via Theorem 1 and related corollaries. Building on this, it proposes the Substance-Connection Model ($SCM$) and Similar-Concept Interfaces ($SCI$) to realize truly independent modules connected at runtime through universal interfaces, forming an ideal system where developers can remain ignorant of other modules’ implementations. The instantiated platform, EIGHT, demonstrates in-process dynamic loading/unloading and bridging via scripts, backed by a runtime linker and a set of 15 SCIs, enabling flexible module composition and deployment with lower resource use and easier maintenance than microservices. Collectively, the work offers a new architectural path beyond microservices and monoliths, combining modularity metrics, runtime decoupling, and universal-interfaces-based module division to support highly dynamic, resource-constrained environments.
Abstract
Although microservices have physically isolated modules, they have failed to prevent the propagation and diffusion of dependencies. To trace the root cause of the inter-module coupling, this paper, starting from the impact assessment approach for module changes, proposes a conceptual method for calculating module independence and utilizes this method to derive the necessary conditions for module independence. Then, a new system design philosophy and software engineering methodology is proposed, aimed at eliminating dependencies between modules. A specific pattern is employed to design a set of universal interfaces, serving as a universal boundary between modules. Subsequently, this method is used to implement a platform architecture named EIGHT, demonstrating that, as long as module independence is guaranteed, even a monolithic application within a single process can dynamically load, unload, or modify any part at runtime. Finally, the paper concludes that this architecture aims to explore a novel path for increasingly complex systems, beyond microservice and monolithic architectures.
