Improving software performance and reliability in a distributed and concurrent environment with an architecture-based self-adaptive framework

We proposed a novel software architecture-level adaptation approach.We adopted known architectural patterns in distributed and concurrent systems.We developed a framework to support the self-adaptive mechanism.We developed and evaluated five adaptive policies.Our approach improved performance and increased reliability in our experiments. More and more, modern software systems in a distributed and parallel environment are becoming highly complex and difficult to manage. A self-adaptive approach that integrates monitoring, analyzing, and actuation functionalities has the potential to accommodate an ever dynamically changing environment. This paper proposes an architecture-level self-adaptive framework with the aim of improving performance and reliability. To meet such a goal, this paper presents a Self-Adaptive Framework for Concurrency Architectures (SAFCA) that consists of multiple well-documented architectural patterns in addition to monitoring and adaptive capabilities. With this framework, a system using an architectural alternative can activate another alternative at runtime to cope with increasing demands or to recover from failure. Five adaptation mechanisms have been developed for concept demonstration and evaluation; four focus on performance improvement and one deals with failover and reliability enhancement. We have performed a number of experiments with this framework. The experimental results demonstrate that the proposed adaptive framework can mitigate the over-provisioning method commonly used in practice. As a result, resource usage becomes more efficient for most normal conditions, while the system is still able to effectively handle bursty or growing demands using an adaptive mechanism. The performance of SAFCA is also better than systems using only standalone architectural alternatives without an adaptation scheme. Moreover, the experimental results show that a fast recovery can be realized in the case of failure by conducting an architecture switchover to maintain the desired service.

[1]  Chung-Horng Lung,et al.  An Approach to Quantitative Software Architecture Sensitivity Analysis , 2000, Int. J. Softw. Eng. Knowl. Eng..

[2]  Peyman Oreizy,et al.  An architecture-based approach to self-adaptive software , 1999, IEEE Intell. Syst..

[3]  Douglas C. Schmidt,et al.  Creating self-healing service compositions with feature models and microrebooting , 2009, Int. J. Bus. Process. Integr. Manag..

[4]  Sam Malek,et al.  A Framework for Estimating the Impact of a Distributed Software System's Architectural Style on its Energy Consumption , 2008, Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).

[5]  Bradley R. Schmerl,et al.  Evolving an adaptive industrial software system to use architecture-based self-adaptation , 2013, 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[6]  David E. Culler,et al.  USENIX Association Proceedings of USITS ’ 03 : 4 th USENIX Symposium on Internet Technologies and Systems , 2003 .

[7]  Douglas C. Schmidt,et al.  Evaluating and Optimizing Thread Pool Strategies for Real-Time CORBA , 2001, OM '01.

[8]  Richard Murch,et al.  Autonomic Computing , 2004 .

[9]  John Mylopoulos,et al.  Awareness requirements for adaptive systems , 2011, SEAMS '11.

[10]  Noel De Palma,et al.  Component-Based Autonomic Management for Legacy Software , 2009, Autonomic Computing and Networking.

[11]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[12]  Ian Gorton,et al.  Performance prediction of component-based applications , 2005, J. Syst. Softw..

[13]  Bradley R. Schmerl,et al.  Improving Architecture-Based Self-Adaptation through Resource Prediction , 2009, Software Engineering for Self-Adaptive Systems.

[14]  Muli Ben-Yehuda,et al.  NAP: a building block for remediating performance bottlenecks via black box network analysis , 2009, ICAC '09.

[15]  Jeff Magee,et al.  Self-Managed Systems: an Architectural Challenge , 2007, Future of Software Engineering (FOSE '07).

[16]  Xiaola Lin,et al.  Analysis of optimal thread pool size , 2000, OPSR.

[17]  Marek Hatala,et al.  Combining service-orientation and software product line engineering: A systematic mapping study , 2013, Inf. Softw. Technol..

[18]  Dorina C. Petriu,et al.  The Future of Software Performance Engineering , 2007, Future of Software Engineering (FOSE '07).

[19]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[20]  QUTdN QeO,et al.  Random early detection gateways for congestion avoidance , 1993, TNET.

[21]  Daniel Pierre Bovet,et al.  Understanding the Linux Kernel , 2000 .

[22]  Neha Pawar,et al.  Managing application level elasticity and availability , 2014, 10th International Conference on Network and Service Management (CNSM) and Workshop.

[23]  Luciano Baresi,et al.  Adaptive Goals for Self-Adaptive Service Compositions , 2010, 2010 IEEE International Conference on Web Services.

[24]  Thomas Engel,et al.  Threat-model-driven runtime adaptation and evaluation of intrusion detection system , 2009, ICAC '09.

[25]  Xu Zhang,et al.  Towards Architecture-based Autonomic Software Performance Engineering , 2010, CAL.

[26]  João Pimentel,et al.  Requirements and architectural approaches to adaptive software systems: A comparative study , 2013, 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[27]  Erik M. Fredericks Automatically Hardening a Self-Adaptive System against Uncertainty , 2016, 2016 IEEE/ACM 11th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[28]  Bradley R. Schmerl,et al.  Analyzing Latency-Aware Self-Adaptation Using Stochastic Games and Simulations , 2016, ACM Trans. Auton. Adapt. Syst..

[29]  Qi Zhang,et al.  Autocorrelation-driven load control in distributed systems , 2009, 2009 IEEE International Symposium on Modeling, Analysis & Simulation of Computer and Telecommunication Systems.

[30]  Takayuki Osogami,et al.  Optimizing system configurations quickly by guessing at the performance , 2007, SIGMETRICS '07.

[31]  Samuel Ajila,et al.  Cloud Client Prediction Models Using Machine Learning Techniques , 2013, 2013 IEEE 37th Annual Computer Software and Applications Conference.

[32]  Michiel van Genuchten,et al.  Early Design Decisions , 2012, IEEE Software.

[33]  Julie A. McCann,et al.  A survey of autonomic computing—degrees, models, and applications , 2008, CSUR.

[34]  Chung-Horng Lung,et al.  Towards an Autonomic Auto-scaling Prediction System for Cloud Resource Provisioning , 2015, 2015 IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems.

[35]  Bradley R. Schmerl,et al.  Optimal planning for architecture-based self-adaptation via model checking of stochastic games , 2015, SAC.

[36]  Klaus Marius Hansen,et al.  An empirical investigation of architectural prototyping , 2010, J. Syst. Softw..

[37]  Van Jacobson,et al.  Random early detection gateways for congestion avoidance , 1993, TNET.

[38]  Claudio Gutierrez,et al.  Survey of graph database models , 2008, CSUR.

[39]  Xu Zhang,et al.  Improving Software Performance and Reliability with an Architecture-Based Self-Adaptive Framework , 2010, 2010 IEEE 34th Annual Computer Software and Applications Conference.

[40]  Prashant J. Shenoy,et al.  Agile dynamic provisioning of multi-tier Internet applications , 2008, TAAS.

[41]  Bradley R. Schmerl,et al.  Software Architecture-Based Self-Adaptation , 2009, Autonomic Computing and Networking.

[42]  Rogério de Lemos,et al.  Software Engineering for Self-Adaptive Systems [outcome of a Dagstuhl Seminar] , 2009, Software Engineering for Self-Adaptive Systems.

[43]  J. Banks,et al.  Discrete-Event System Simulation , 1995 .

[44]  Guilherme Galante,et al.  A Survey on Cloud Computing Elasticity , 2012, 2012 IEEE Fifth International Conference on Utility and Cloud Computing.

[45]  Anna Perini,et al.  Requirements Engineering for Self-Adaptive Systems: Core Ontology and Problem Statement , 2011, CAiSE.

[46]  C. Murray Woodside,et al.  Enhanced Modeling and Solution of Layered Queueing Networks , 2009, IEEE Transactions on Software Engineering.

[47]  George Candea,et al.  Microreboot - A Technique for Cheap Recovery , 2004, OSDI.

[48]  Sebastián Uchitel,et al.  Controller synthesis: From modelling to enactment , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[49]  Chung-Horng Lung,et al.  A Green Computing Based Architecture Comparison and Analysis , 2010, 2010 IEEE/ACM Int'l Conference on Green Computing and Communications & Int'l Conference on Cyber, Physical and Social Computing.

[50]  Mary Shaw,et al.  Engineering Self-Adaptive Systems through Feedback Loops , 2009, Software Engineering for Self-Adaptive Systems.

[51]  Chung-Horng Lung,et al.  On building architecture-centric product line architecture , 2014, Requirements Engineering.

[52]  Joseph L. Hellerstein,et al.  A configuration complexity model and its application to a change management system , 2007, IEEE Transactions on Network and Service Management.

[53]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[54]  Takeo Kanade,et al.  Software Engineering for Self-Adaptive Systems II , 2013, Lecture Notes in Computer Science.

[55]  Steffen Becker,et al.  Model-driven performance engineering of self-adaptive systems: a survey , 2012, QoSA '12.

[56]  José Antonio Lozano,et al.  A Review of Auto-scaling Techniques for Elastic Applications in Cloud Environments , 2014, Journal of Grid Computing.