Cloud refactoring: automated transitioning to cloud-based services

Using cloud-based services can improve the performance, reliability, and scalability of a software application. However, transitioning an application to use cloud-based services is difficult, costly, and error-prone. The required re-engineering effort includes migrating to the cloud the functionality to be accessed as remote cloud-based services and re-targeting the client code accordingly. In addition, the client must be able to detect and handle the faults raised in the process of invoking the services. As a means of streamlining this transitioning, we developed a set of refactoring techniques—automated, IDE-assisted program transformations that eliminate the need to change programs by hand. In particular, we show how a programmer can extract services, add fault tolerance functionality, and adapt client code to invoke cloud services via refactorings integrated with a modern IDE. As a validation, we have applied our approach to automatically transform two third-party Java applications to use cloud-based services. We have also applied our approach to re-engineer a suite of services operated by General Electric to use cloud-based resources to better satisfy the GE business requirements.

[1]  Deron Liang,et al.  FT-SOAP : A Fault-tolerant web service , 2003 .

[2]  Eli Tilevich,et al.  A declarative approach to hardening services against QoS vulnerabilities , 2011, 2011 International Workshop on the Maintenance and Evolution of Service-Oriented and Cloud-Based Systems.

[3]  Deron Liang,et al.  Fault tolerant Web Services , 2007, J. Syst. Archit..

[4]  Ian H. Witten,et al.  The WEKA data mining software: an update , 2009, SKDD.

[5]  Ladan Tahvildari,et al.  A Service-Oriented Componentization Framework for Java Software Systems , 2006, 2006 13th Working Conference on Reverse Engineering.

[6]  Antony L. Hosking,et al.  Pervasive Load-Time Transformation for Transparently Distributed Java , 2009, Electron. Notes Theor. Comput. Sci..

[7]  N. D. Durie,et al.  Digest of papers , 1976 .

[8]  Giuseppe A. Di Lucca,et al.  Migrating legacy systems towards object-oriented platforms , 1997, 1997 Proceedings International Conference on Software Maintenance.

[9]  Burkhard Monien,et al.  Euro-Par 2002 Parallel Processing , 2002, Lecture Notes in Computer Science.

[10]  Urs Hölzle,et al.  A Study of the Allocation Behavior of the SPECjvm98 Java Benchmark , 1999, ECOOP.

[11]  Shigeru Chiba,et al.  A Bytecode Translator for Distributed Execution of "Legacy" Java Software , 2001, ECOOP.

[12]  George Candea,et al.  Recursive restartability: turning the reboot sledgehammer into a scalpel , 2001, Proceedings Eighth Workshop on Hot Topics in Operating Systems.

[13]  Periklis Andritsos,et al.  Information-theoretic software clustering , 2005, IEEE Transactions on Software Engineering.

[14]  Zibin Zheng,et al.  Optimal Fault Tolerance Strategy Selection for Web Services , 2010, Int. J. Web Serv. Res..

[15]  Filippo Ricca,et al.  From objects to services: toward a stepwise migration approach for Java applications , 2009, International Journal on Software Tools for Technology Transfer.

[16]  Yannis Smaragdakis,et al.  J-Orchestra: Automatic Java Application Partitioning , 2002, ECOOP.

[17]  Angelos D. Keromytis,et al.  A Dynamic Mechanism for Recovering from Buffer Overflow Attacks , 2005, ISC.

[18]  André Spiegel,et al.  Automatic distribution of object oriented programs , 2002 .

[19]  Deron Liang,et al.  Fault tolerant Web service , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

[20]  Mark Sullivan,et al.  Software defects and their impact on system availability-a study of field failures in operating systems , 1991, [1991] Digest of Papers. Fault-Tolerant Computing: The Twenty-First International Symposium.

[21]  Gerardo Canfora,et al.  A wrapping approach for migrating legacy system interactive functionalities to Service Oriented Architectures , 2008, J. Syst. Softw..

[22]  Qing Li,et al.  FACTS: A Framework for Fault-Tolerant Composition of Transactional Web Services , 2010, IEEE Transactions on Services Computing.

[23]  Michael Luck,et al.  Transparent Fault Tolerance for Web Services Based Architectures , 2002, Euro-Par.

[24]  Rajkumar Buyya,et al.  Article in Press Future Generation Computer Systems ( ) – Future Generation Computer Systems Cloud Computing and Emerging It Platforms: Vision, Hype, and Reality for Delivering Computing as the 5th Utility , 2022 .

[25]  Samuel T. King,et al.  Debugging Operating Systems with Time-Traveling Virtual Machines (Awarded General Track Best Paper Award!) , 2005, USENIX Annual Technical Conference, General Track.

[26]  Vladimir I. Levenshtein,et al.  Binary codes capable of correcting deletions, insertions, and reversals , 1965 .

[27]  Eli Tilevich,et al.  DR-OSGi: Hardening Distributed Components with Network Volatility Resiliency , 2009, Middleware.

[28]  Lau Cheuk Lung,et al.  FTWeb: a fault tolerant infrastructure for Web services , 2005, Ninth IEEE International EDOC Enterprise Computing Conference (EDOC'05).

[29]  Xiaogang Wang,et al.  Clustering large software systems at multiple layers , 2007, Inf. Softw. Technol..

[30]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[31]  Eli Tilevich,et al.  Reusable and Extensible Fault Tolerance for RESTful Applications , 2012, 2012 IEEE 11th International Conference on Trust, Security and Privacy in Computing and Communications.