Healing Web applications through automatic workarounds
Tóm tắt
We develop the notion of automatic workaround in the context of Web applications. A workaround is a sequence of operations, applied to a failing component, that is equivalent to the failing sequence in terms of its intended effect, but that does not result in a failure. We argue that workarounds exist in modular systems because components often offer redundant interfaces and implementations, which in turn admit several equivalent sequences of operations. In this paper, we focus on Web applications because these are good and relevant examples of component-based (or service-oriented) applications. Web applications also have attractive technical properties that make them particularly amenable to the deployment of automatic workarounds. We propose an architecture where a self-healing proxy applies automatic workarounds to a Web application server. We also propose a method to generate equivalent sequences and to represent and select them at run-time as automatic workarounds. We validate the proposed architecture in four case studies in which we deploy automatic workarounds to handle four known failures in to the popular Flickr and Google Maps Web applications.
Tài liệu tham khảo
Baresi, L., Guinea, S.: Dynamo and self-healing BPEL compositions. In: ICSE COMPANION ’07: Companion to the Proceedings of the 29th International Conference on Software Engineering, pp. 69–70. IEEE Computer Society, Washington, DC (2007). doi:10.1109/ICSECOMPANION.2007.31
Baresi, L., Guinea, S., Pasquale, L.: Self-healing BPEL processes with dynamo and the jboss rule engine. In: ESSPE ’07: International Workshop on Engineering of Software Services for Pervasive Environments, pp. 11–20. ACM, New York (2007). doi:10.1145/1294904.1294906
Candea, G., Kawamoto, S., Fujiki, Y., Friedman, G., Fox, A.: Microreboot - a technique for cheap recovery. In: OSDI’04: Proceedings of the Sixth Conference on Symposium on Operating Systems Design & Implementation. USENIX Association, Berkeley (2004)
Candea, G., Kiciman, E., Zhang, S., Keyani, P., Fox, A.: JAGR: An autonomous self-recovering application server. In: Active Middleware Services, pp. 168–178. IEEE Computer Society, Washington, DC (2003)
Carzaniga, A., Gorla, A., Pezzè, M.: Self-healing by means of automatic workarounds. In: SEAMS ‘08: Proceedings of the 2008 International Workshop on Software Engineering for Adaptive and Self-Managing Systems, pp. 17–24. ACM, New York (2008)
Dallmeier, V., Lindig, C., Wasylkowski, A., Zeller, A.: Mining object behavior with ADABU. In: WODA ’06: Proceedings of the 2006 International Workshop on Dynamic Systems Analysis, pp. 17–24. ACM, New York (2006). doi:10.1145/1138912.1138918
Denaro, G., Pezzè, M., Tosi, D.: Adaptive integration of third-party web services. In: DEAS ’05: Proceedings of the 2005 Workshop on Design and Evolution of Autonomic Application Software, pp. 1–6. ACM, New York (2005). doi:10.1145/1083063.1083088
Denaro, G., Pezzè, M., Tosi, D.: SHIWS: A self-healing integrator for web services. In: ICSE COMPANION ’07: Companion to the Proceedings of the 29th International Conference on Software Engineering, pp. 55–56. IEEE Computer Society, Washington, DC (2007). doi:10.1109/ICSECOMPANION.2007.66
Diaconescu, A., Murphy, J.: A framework for using component redundancy for self-optimising and self-healing component based systems. In: WADS ’03: Proceedings of the Workshop on Software Architectures for Dependable Systems. Portland, Oregon (2003)
Doong R.K., Frankl P.G.: The ASTOOT approach to testing object-oriented programs. ACM Trans. Softw. Eng. Methodol. 3(2), 101–130 (1994). doi:10.1145/192218.192221
Fuad, M.M., Deb, D., Oudshoorn, M.J.: Adding self-healing capabilities into legacy object oriented application. In: ICAS ‘06: Proceedings of the International Conference on Autonomic and Autonomous Systems. IEEE Computer Society, Washington, DC (2006). doi:10.1109/ICAS.2006.10
Fuad, M.M., Oudshoorn, M.J.: Transformation of existing programs into autonomic and self-healing entities. In: ECBS ‘07: Proceedings of the 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems, pp. 133–144. IEEE Computer Society, Washington, DC (2007). doi:10.1109/ECBS.2007.74
Fugini, M.G., Mussi, E.: Recovery of Faulty Web Applications through Service Discovery. In: SMR ’06: First International Workshop on Semantic Matchmaking and Resource Retrieval: Issues and Perspectives. Seoul, Korea (2006)
Ghezzi, C., Mocci, A., Monga, M.: Efficient recovery of algebraic specifications for stateful components. In: IWPSE ’07: Ninth International Workshop on Principles of Software Evolution, pp. 98–105. ACM, New York (2007). doi:10.1145/1294948.1294972
Gurguis, S.A., Zeid, A.: Towards autonomic web services: achieving self-healing using web services. In: DEAS ’05: Proceedings of the 2005 Workshop on Design and Evolution of Autonomic Application Software, pp. 1–5. ACM, New York (2005). doi:10.1145/1082983.1083069
Henkel, J., Diwan, A.: A tool for writing and debugging algebraic specifications. In: ICSE ’04: Proceedings of the 26th International Conference on Software Engineering, pp. 449–458. Edinburgh, Scotland (2004)
Horn, P.: Autonomic computing: IBM perspective on the state of information technology. In: AGENDA 01. Scottsdale, AR (2001). http://www.research.ibm.com/autonomic
Kephart J.O., Chess D.M.: The vision of autonomic computing. Computer 36(1), 41–50 (2003). doi:10.1109/MC.2003.1160055
Koren I., Krishna C.M.: Fault Tolerant Systems. Morgan Kaufmann Publishers Inc., San Francisco (2007)
Liao, B.S., Gao, J., Hu, J., Chen, J.J.: A federated multi-agent system: autonomic control of web services. In: Proceedings of the 2004 International Conference on Machine Learning and Cybernetics (2004)
Lorenzoli, D., Mariani, L., Pezzè, M.: Inferring state-based behavior models. In: WODA ’06: Proceedings of the 2006 International Workshop on Dynamic Systems Analysis, pp. 25–32. ACM, New York (2006). doi:10.1145/1138912.1138919
Modafferi, S., Mussi, E., Pernici, B.: SH-BPEL: a self-healing plug-in for ws-bpel engines. In: MW4SOC ’06: Proceedings of the First Workshop on Middleware for Service Oriented Computing, pp. 48–53. ACM, New York (2006). doi:10.1145/1169091.1169099
Naccache, H., Gannod, G.: A self-healing framework for web services. In: ICWS ’07: Proceedings of the 2007 IEEE International Conference on Web Services, pp. 398–345 (2007). doi:10.1109/ICWS.2007.16
Naccache H., Gannod G.C., Gary K.A.: A self-healing web server using differentiated services. In: Dan, A., Lamersdorf , W. (eds) ICSOC ’06: Proceedings of the Fourth International Conference on Service Oriented Computing, Lecture Notes in Computer Science, vol. 4294, pp. 203–214. Springer, Heidelberg (2006)
Pullum L.L.: Software Fault Tolerance Techniques and Implementation. Artech House Inc., Norwood (2001)
Sadjadi, S.M., McKinley, P.K.: Using transparent shaping and web services to support self-management of composite systems. In: ICAC ’05: Proceedings of the Second International Conference on Automatic Computing, pp. 76–87. IEEE Computer Society, Washington, DC (2005). doi:10.1109/ICAC.2005.64
Zhang, R.: Modeling autonomic recovery in web services with multi-tier reboots. In: ICWS’07: Proceedings of the IEEE International Conference on Web Services (2007). doi:10.1109/ICWS.2007.127