Whilst cloud computing has burst into the current scene as a technology that allows companies to access high computing rates at limited costs, cloud vendors have rushed to provide tools that allow developers to build software for their cloud platforms. Cloud applications are developed using those tools, which provide different cloud-specific APIs, libraries, and even different project structures that vary depending on which cloud platform the software will be hosted. Consequently, applications developed with these tools are often tightly coupled to those platform’s specific service implementations and restrictions. A scenario where component-based applications are developed for being deployed across several clouds, and each component can independently be deployed in one cloud or another, remains fictitious due to the complexity and the cost of their development.
This paper presents a cloud development framework that allows applications to be constructed as a composition of software components (cloud artefacts), where each component can be freely migrated between cloud platforms without having to redevelop the entire application. Information about cloud deployment and cloud integration is separated from the source code and managed by the framework. Interoperability between interdependent components deployed in different clouds is achieved by means of software adapters which automatically generate services and service clients. This allows software developers to segment their applications into different modules that can easily be deployed and redistributed across heterogeneous cloud platforms. This paper also analyzes the results of using the proposed framework in the development of an industrial research project as a validation of the approach.
This work has been published in the Journal of Systems and Software 86(9), 2294-2308 (2013).