Abstract
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.



















Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Notes
Open-source OSGi implementations include Apache Felix (http://felix.apache.org/site/index.html) and Knopflerfish (http://www.knopflerfish.org). Among large commercial OSGi projects are the Spring Framework (http://www.springsource.org/) and the Eclipse IDE (http://www.eclipse.org/equinox/).
The services are exposed through Apache CXF-DOSGi.
References
Andreopoulos, B., An, A., Tzerpos, V., Wang, X.: Clustering large software systems at multiple layers. Inf. Softw. Technol. 49(3), 244–254 (2007)
Andritsos, P., Tzerpos, V.: Information-theoretic software clustering. IEEE Trans. Softw. Eng. 31(2), 150–165 (2005)
Buyya, R., Yeo, C., Venugopal, S., Broberg, J., Brandic, I.: Cloud computing and emerging IT platforms: vision, hype, and reality for delivering computing as the 5th utility. Future Gener. Comput. Syst. 25(6), 599–616 (2009)
Candea, G., Fox, A.: Recursive restartability: turning the reboot sledgehammer into a scalpel. In: Proceedings of the Eighth Workshop on Hot Topics in Operating Systems, pp. 125–130 (2001)
Canfora, G., Fasolino, A., Frattolillo, G., Tramontana, P.: A wrapping approach for migrating legacy system interactive functionalities to service oriented architectures. J. Syst. Softw. 81(4), 463–480 (2008)
Dialani, V., Miles, S., Moreau, L., De Roure, D., Luck, M.: Transparent fault tolerance for web services based architectures. In: Euro-Par 2002 Parallel Processing, pp. 107–201 (2002)
Dieckmann, S., Hölzle, U.: A study of the allocation behavior of the specjvm98 Java benchmark. In: ECOOP’99: Proceedings of the 13th European Conference on Object-Oriented Programming, pp. 92–115. Springer, London (1999)
Edstrom, J., Tilevich, E.: Reusable and extensible fault tolerance for restful applications. In: The 11th IEEE International Conference on Trust, Security and Privacy in Computing and Communications, pp. 737–744 (2012)
Fang, C., Liang, D., Lin, F., Lin, C.: Fault tolerant web services. J. Syst. Archit. 53(1), 21–38 (2007)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston (1999)
JAX-WS Expert Group. JSR-224 Java API for XML-based Web services 2.0. Technical report, Java Community Process (2006)
Hall, M., Frank, E., Holmes, G., Pfahringer, B., Reutemann, P., Witten, I.H.: The weka data mining software: an update. ACM SIGKDD Explor. Newsl. 11(1), 10–18 (2009)
King, S.T., Dunlap, G.W., Chen, P.M.: Debugging operating systems with time-traveling virtual machines. In: ATEC’05: Proceedings of the Annual Conference on USENIX Annual Technical Conference (2005)
Kwon, Y.-W., Tilevich, E.: A declarative approach to hardening services against QoS vulnerabilities. In: MESOCA’11: Proceedings of the 2011 IEEE International Workshop on the Maintenance and Evolution of Service-Oriented and Cloud-Based Systems (2011)
Kwon, Y.-W., Tilevich, E., Apiwattanapong, T.: DR-OSGi: hardening distributed components with network volatility resiliency. In: Proceedings of the ACM/IFIP/USENIX 10th International Middleware Conference (Middleware 2009) (2009)
Levenshtein, V.: Binary codes capable of correcting deletions, insertions, and reversals. In: Soviet Physics Doklady, vol. 10, pp. 707–710 (1966)
Li, S., Tahvildari, L.: A service-oriented componentization framework for Java software systems. In: WCRE’06: Proceedings of the 13th Working Conference on Reverse Engineering, pp. 115–124. IEEE Comput. Soc., Washington (2006)
Liang, D., Fang, C., Chen, C.: FT-SOAP: a fault-tolerant web service. In: Tenth Asia-Pacific Software Engineering Conference, Chiang Mai, Thailand (2003)
Liu, A., Li, Q., Huang, L., Xiao, M.: FACTS: a framework for fault-tolerant composition of transactional web services. IEEE Trans. Serv. Comput. 3(1), 46–59 (2010)
Lucca, G.A.D., Fasolino, A.R., Guerra, P., Petruzzelli, S.: Migrating legacy systems towards object-oriented platforms. In: ICSM’97: Proceedings of the International Conference on Software Maintenance, pp. 122–129 (1997)
Marchetto, A., Ricca, F.: From objects to services: toward a stepwise migration approach for Java applications. Int. J. Softw. Tools Technol. Transf. 11(6), 427–440 (2009)
McGachey, P., Hosking, A.L., Moss, J.E.B.: Pervasive load-time transformation for transparently distributed Java. Electron. Notes Theor. Comput. Sci. 253, 47–64 (2009)
Mitchell, B., Mancoridis, S.: On the automatic modularization of software systems using the bunch tool. IEEE Trans. Softw. Eng. 32(3), 193–208 (2006)
OSGi Alliance. RFP 133 cloud computing. Technical report (2010)
OSGi Alliance. OSGi release 4.3 specification. Specification (2011)
Paremus Ldt. The Paremus service fabric—a technical overview (2008)
Santos, G.T., Lung, L.C., Montez, C.: FTWeb: a fault tolerant infrastructure for web services. In: IEEE International Enterprise Distributed Object Computing Conference, pp. 95–105 (2005)
Sidiroglou, S., Giovanidis, G., Keromytis, A.D.: A dynamic mechanism for recovering from buffer overflow attacks. In: Proceedings of the 8th Information Security Conference (ISC), pp. 1–15. Springer, Berlin (2005)
Spiegel, A.: Automatic Distribution of Object Oriented Programs. Ph.D. thesis, FU Berlin, FB Mathematik und Informatik (2002)
Sullivan, M., Chillarege, R.: Software defects and their impact on system availability-a study of field failures in operating systems. In: Fault-Tolerant Computing, 1991. FTCS-21. Digest of Papers., Twenty-First International Symposium, pp. 2–9 (1991)
Tatsubori, M., Sasaki, T., Chiba, S., Itano, K.: A bytecode translator for distributed execution of “Legacy” Java software. In: European Conference on Object-Oriented Programming (ECOOP) (2001)
Tilevich, E., J-Orchestra, Y.S.: Automatic Java application partitioning. In: Proceedings of the 16th European Conference on Object-Oriented Programming, ECOOP’02 (2002)
Zheng, Z., Lyu, M.: Optimal fault tolerance strategy selection for web services. Int. J. Web Serv. Res. 7(4), 21–40 (2010)
Acknowledgement
GE Global Research has provided realistic cloud migration scenarios that motivated some of the refactoring techniques discussed in the article. This research is supported by the National Science Foundation through the Grant CCF-1116565.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Kwon, YW., Tilevich, E. Cloud refactoring: automated transitioning to cloud-based services. Autom Softw Eng 21, 345–372 (2014). https://doi.org/10.1007/s10515-013-0136-9
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10515-013-0136-9