Patterns for Migration of SOA Based Applications to Microservices Architecture
Keywords:Distributed Systems, service oriented architecture, microservices, migration, migration patterns
Service oriented architecture (SOA) has been widely used in the design of enterprise applications over the last two decades. Though SOA has become popular in the integration of multiple applications using the enterprise service bus, there are few challenges related to delivery, deployment, governance, and interoperability of services. To overcome the design and maintenance challenges in SOA, a new architecture of microservices has emerged with loose coupling, independent deployment, and scalability as its key features. With the advent of microservices, software architects have started to migrate legacy systems to microservice architecture. However, many challenges arise during the migration of SOA to microservices, including the decomposition of SOA to microservice, the testing of microservices designed using different programming languages, and the monitoring the microservices. In this paper, we aim to provide patterns for the most recurring problems highlighted in the literature i.e, the decomposition of SOA services, the size of each microservice, and the detection of anomalies in microservices. The suggested patterns are combined with our experience in the migration of SOA-based applications to the microservices architecture, and we have also used these patterns in the migration of other SOA applications. We evaluated these patterns with the help of a standard web-based application.
T. Salah, M.J. Zemerly, C.Y. Yeun, M. Al-Qutayri, and Y. Al-Hammadi. The evolution of distributed systems towards microservices architecture. In International Conference for Internet Technology and Secured Transactions (ICITST), pp. 318–325, IEEE 2016.
L. Garces-Erice. Building an enterprise service bus for real-time SOA: A messaging middleware stack. In 33rd Annual IEEE International Computer Software and Applications Conference. Vol. 2, pp. 79–84, 2009.
V. Raj, and S. Ravichandra. Microservices: A perfect SOA based solution for Enterprise Applications compared to Web Services. In 3rd IEEE International Conference on Recent Trends in Electronics, Information & Communication Technology (RTEICT), pp. 1531–1536, 2018.
N. Dragoni, S. Giallorenzo, A.L. Lafuente, M. Mazzara, F. Montesi, R. Mustafin, and L. Safina. Microservices: yesterday, today, and tomorrow. In Present and ulterior software engineering. Springer, Cham. pp. 195–216, 2017.
J. Thönes. Microservices. In IEEE software, 32(1), pp. 116–116, 2015.
K. Brown and B. Woolf. Implementation patterns for microservices architectures. In Proceedings of the 23rd Conference on Pattern Languages of Programs, pp. 1–35, 2016.
M. Villamizar, O. Garcés, H. Castro, M. Verano, L. Salamanca, R. Casallas, S. Gil. Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud. In 10th Computing Colombian Conference (10CCC), pp. 583–590, IEEE 2015.
B. Boehm and R. Turner. Management challenges to implementing agile processes in traditional development organizations. IEEE software, 22(5), pp. 30–39. 2005.
S. Tyszberowicz, R. Heinrich, B.Liu, and Z. Liu. Identifying microservices using functional decomposition. In International Symposium on Dependable Software Engineering: Theories, Tools, and Applications, (pp. 50–65). Springer, Cham. 2018.
J. Zalewski. Real-time software architectures and design patterns: Fundamental concepts and their consequences. Annual Reviews in Control, 25, pp. 133–146. 2001.
F. Lakhani. and M.J. Pont. Using design patterns to support migration between different system architectures. In 5th International Conference on System of Systems Engineering, (pp. 1–6). IEEE. 2010.
J. Soldani, D.A. Tamburri, and W.J. Van Den Heuvel. The pains and gains of microservices: A systematic grey literature review. Journal of Systems and Software, 146, pp. 215–232, 2018.
S. Hassan and R. Bahsoon. Microservices and their design trade-offs: A self-adaptive roadmap. In IEEE International Conference on Services Computing (SCC), pp. 813–818, 2016.
A. Balalaie, A. Heydarnoori, and P. Jamshidi. Migrating to cloud-native architectures using microservices: an experience report. In European Conference on Service-Oriented and Cloud Computing, pp. 201–215. Springer, Cham. 2015.
A. Balalaie, A. Heydarnoori, and P. Jamshidi. Microservices architecture enables devops: Migration to a cloud-native architecture. IEEE Software, 33(3), pp. 42–52. 2016.
A. Balalaie, A. Heydarnoori, P. Jamshidi, D.A. Tamburri, and T. Lynn. Microservices migration patterns. Software: Practice and Experience, 48(11), pp. 2019–2042. 2018.
D. Taibi, V. Lenarduzzi, and C. Pahl. Processes, motivations, and issues for migrating to microservices architectures: An empirical investigation. IEEE Cloud Computing, 4(5), pp. 22–32. 2017.
Leymann, F., Fehling, C., Wagner, S. and Wettinger, J. Native cloud applications: Why virtual machines images and containers miss. In Proceedings of the 6th International Conference on Cloud Computing, pp. 7–15. SciTePress. 2016.
H. Knoche, and W. Hasselbring. Using microservices for legacy software modernization. IEEE Software, 35(3), pp. 44–49. 2018.
A. Yanchuk, A. Ivanyukovich, and M. Marchese. Towards a mathematical foundation for service-oriented applications design. Journal of Software 1(1):32–9. 2006.
P. Bhallamudi, S. Tilley, and A. Sinha. Migrating a Web-based application to a service-based system-an experience report. In 11th IEEE International Symposium on Web Systems Evolution pp. 71–74. IEEE. 2009.
V. Raj, and S. Ravichandra. A service graph based extraction of microservices from monolithic services of SOA. Software: Practice and Experience. 2020;.
Tajamolian M, Ghasemzadeh M. A Versioning Approach to VM Live Migration. International Journal of Engineering. 2018 Nov 1;31(11):1838-45.
Jeyanthi N, Shabeeb H, Durai MS, Thandeeswaran R. Reputation based Service for Cloud User Environment. International Journal of Engineering (IJE) Transactions B: Applications. 2014 Aug 1;27(8):1179–84.