Unsupervised learning approach for web application auto-decomposition into microservices

Abstract Nowadays, large monolithic web applications are manually decomposed into microservices for many reasons including adopting a modern architecture to ease maintenance and increase reusability. However, the existing approaches to refactor a monolithic application do not inherently consider the application scalability and performance. We devise a novel method to automatically decompose a monolithic application into microservices to improve the application scalability and performance. Our proposed decomposition method is based on a black-box approach that uses the application access logs and an unsupervised machine-learning method to auto-decompose the application into microservices mapped to URL partitions having similar performance and resource requirements. In particular, we propose a complete automated system to decompose an application into microservices, deploy the microservices using appropriate resources, and auto-scale the microservices to maintain the desired response time. We evaluate the proposed system using real web applications on a public cloud infrastructure. The experimental evaluation shows an improved performance of the auto-created microservices compared with the monolithic version of the application and the manually created microservices.

[1]  Autoflex: Service Agnostic Auto-scaling Framework for IaaS Deployment Models , 2013, 2013 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing.

[2]  Jie Li,et al.  Cloud auto-scaling with deadline and budget constraints , 2010, 2010 11th IEEE/ACM International Conference on Grid Computing.

[3]  Marios D. Dikaiakos,et al.  DevOps as a Service: Pushing the Boundaries of Microservice Adoption , 2018, IEEE Internet Computing.

[4]  Josef Spillner,et al.  Towards Quantifiable Boundaries for Elastic Horizontal Scaling of Microservices , 2017, UCC.

[5]  Rubby Casallas,et al.  Infrastructure Cost Comparison of Running Web Applications in the Cloud Using AWS Lambda and Monolithic and Microservice Architectures , 2016, 2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid).

[6]  Waheed Iqbal,et al.  Low Cost Quality Aware Multi-tier Application Hosting on the Amazon Cloud , 2014, 2014 International Conference on Future Internet of Things and Cloud.

[7]  Waheed Iqbal,et al.  Dynamic workload patterns prediction for proactive auto-scaling of web applications , 2018, J. Netw. Comput. Appl..

[8]  Wilhelm Hasselbring,et al.  Microservice Architectures for Scalability, Agility and Reliability in E-Commerce , 2017, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW).

[9]  Christof Fetzer,et al.  Lightweight Automatic Resource Scaling for Multi-tier Web Applications , 2014, 2014 IEEE 7th International Conference on Cloud Computing.

[10]  Waheed Iqbal,et al.  Adaptive resource provisioning for read intensive multi-tier applications in the cloud , 2011, Future Gener. Comput. Syst..

[11]  Cheng-Zhong Xu,et al.  A Reinforcement Learning Approach to Online Web Systems Auto-configuration , 2009, 2009 29th IEEE International Conference on Distributed Computing Systems.

[12]  Claus Pahl,et al.  Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation , 2017, IEEE Cloud Computing.

[13]  Colin J. Fidge,et al.  Migrating Enterprise Legacy Source Code to Microservices: On Multitenancy, Statefulness, and Data Consistency , 2018, IEEE Software.

[14]  Pooyan Jamshidi,et al.  Migrating to Cloud-Native Architectures Using Microservices: An Experience Report , 2015, ESOCC Workshops.

[15]  Paulo F. Pires,et al.  Evaluating REST architectures - Approach, tooling and guidelines , 2016, J. Syst. Softw..

[16]  Felix Lösch,et al.  Investigating Performance Metrics for Scaling Microservices in CloudIoT-Environments , 2018, ICPE.

[17]  Thilo Kielmann,et al.  Autoscaling Web Applications in Heterogeneous Cloud Infrastructures , 2014, 2014 IEEE International Conference on Cloud Engineering.

[18]  Ricardo Terra,et al.  Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems , 2016, ArXiv.

[19]  Olaf Zimmermann,et al.  Service Cutter: A Systematic Approach to Service Decomposition , 2016, ESOCC.

[20]  James R. Cordy,et al.  Towards a framework for migrating web applications to web services , 2011, CASCON.

[21]  Randy H. Katz,et al.  Selecting the best VM across multiple public clouds: a data-driven performance modeling approach , 2017, SoCC.

[22]  Takuya Nakaike,et al.  Workload characterization for microservices , 2016, 2016 IEEE International Symposium on Workload Characterization (IISWC).

[23]  Luciano Baresi,et al.  Supporting the Decision of Migrating to Microservices Through Multi-layer Fuzzy Cognitive Maps , 2017, ICSOC.

[24]  Erik Elmroth,et al.  A virtual machine re-packing approach to the horizontal vs. vertical elasticity trade-off for cloud autoscaling , 2013, CAC.

[25]  Rajarshi Das,et al.  A Hybrid Reinforcement Learning Approach to Autonomic Resource Allocation , 2006, 2006 IEEE International Conference on Autonomic Computing.

[26]  Minlan Yu,et al.  CherryPick: Adaptively Unearthing the Best Cloud Configurations for Big Data Analytics , 2017, NSDI.

[27]  Yan Liu,et al.  Online machine learning for cloud resource provisioning of microservice backend systems , 2017, 2017 IEEE International Conference on Big Data (Big Data).