Cloud computing underpins an important part of economic activity today. It has the potential to enable an increasing amount of such activity, and make a significant contribution to the growth of world Gross Domestic Product (GDP).
In the Spring of 2010, the World Economic Forum published a report that evaluated the impact of cloud computing technologies and highlighted the large potential benefits of adoption, ranging from economic growth and potentially sizeable improvements in employment to enabling innovation and collaboration [WEF-1]. While recognizing the many benefits of cloud, the report also highlighted very significant issues that could limit our ability to benefit from cloud computing. A second report, published in 2011 [WEF-2], identified eight areas in which governments and industry can take action to accelerate the deployment and adoption of public cloud technologies. Two of these are data portability and interoperability.
On data portability, the report says that:
“The fear of vendor lock-in holds back many potential users of cloud, while many government stakeholders are concerned about maintaining competitiveness in the cloud market. These concerns are lessened if it becomes quicker, easier, and cheaper for users to move data, and perhaps applications, between different cloud providers and between user premises and the cloud.”
While data portability is identified as the primary concern, these words apply equally to applications portability, which the report also recognizes as an issue.
On interoperability, the report makes a call for action:
“Industry players should pursue the evolution of cloud offerings with the goal of facilitating interoperability among multiple (private and public) clouds. This will accelerate the growth of the overall cloud ecosystem.”
Cloud portability and interoperability are not just matters of technical concern. They are questions of economic importance. Governments, and bodies such as the World Economic Forum, recognize the potential of cloud computing, and they understand that lack of portability and interoperability can prevent this potential being fulfilled.
For cloud computing to deliver the anticipated benefits, it must be easy to use and cost-efficient. This means that enterprises and individuals must be able to use cloud products and services as far as possible “off the shelf”. The products and services should work together, and minimal effort should be needed to incorporate them into a user’s systems. It should be possible to write any user-specific software that may be required so that it is based on commonly available components that can easily be sourced from multiple suppliers.
Portability and interoperability standards enable the development of such products and services, and of user-specific software that works with them. The availability of these products and services in a free market will stimulate the growth of cloud computing and of businesses that use it.
The Internet provides an excellent example of how portability and interoperability can enable economic growth. It is a hugely valuable world resource, supporting a massive amount of commercial and other activity. It has a few basic, well-defined components (host, router, network, etc.) that have clearly defined interface standards, such as the TCP and IP communications protocols [TCP, IP] and the sockets programming interface [SOCK]. Companies can procure products that conform to these interfaces easily, and knowing that they will work together “out of the box”. It has even reached the point that members of the general public, with no specialist knowledge, can do this. The vast and growing use of the Internet, and the consequent benefits, are largely due to this high level of portability and interoperability.
The Internet is one of the foundations of cloud computing, and the current growth in cloud computing is partly due to the portability and interoperability that comes from conforming to the Internet standards. But cloud computing is more than the Internet: it provides information processing and storage, as well as communication and display. It has a different set of basic components to deliver this functionality, and the interfaces between these components do not have universally accepted, clearly defined standards.
Cloud computing has the potential to support commercial and other activity to an even greater extent than the Internet. The economic and social benefits that could flow from this are truly enormous. But this potential will not be realized without portability and interoperability. They are important – some would say vital – because of their ability to enable this technology-based revolution.
Portability of and interoperability between system components requires standards that define how the components behave. These standards must cover not only what the components do, but also some aspects of how they do it. In particular, they must allow reasonable speed of execution and security.
The creation of such standards is hard, for three main reasons. First, vendors may see their immediate commercial advantage in discouraging their customers from using products supplied by other vendors. They may therefore decide not to support applicable standards. Second, the detailed definition of effective standards requires agreement between producers on specific details of the interfaces. This may be hard to achieve, even when the producers have the desire to achieve it. Finally, the identification and description of the requirements that the standards place on products or services requires skill, judgment, and experience of the subject matter. Poor standards, defined without bringing these qualities to bear, place a burden on implementers and users, without delivering real benefits. Unfortunately, poor standards are not uncommon.
The technical parameters that must be addressed in defining a good standard are quite complex. For cloud computing, and many other areas of IT, they include not only functionality but also aspects of the quality of delivery of that functionality. Two of these qualities are particularly important for cloud computing portability and interoperability: security and performance. Because they are so important, the description of the Distributed Computing Reference Model contains dedicated sections on them.
Many types of cloud computing component can have simple interfaces that can be defined in standards to which all instances can conform. This is, however, not the case for applications. Each application is different. There is reason to standardize the interfaces to some applications to enable collaboration in particular industry sectors, but otherwise it is desirable to allow variation, so that the interfaces can reflect specific product functionality, and individual vendors are free to introduce the functionality that they believe meets the needs of their customers.
Interoperability between applications “out of the box” is therefore not generally possible. Integration of applications can, however, be more or less easy, depending on how they are designed. An important aspect of cloud interoperability is that integration of applications should be as easy as possible. Addressing this issue is a major theme of this Guide.
Kirk Avery, Technical Working Group Vice-Chair of the Future Airborne Capability Environment (FACE) Consortium, made a very interesting remark in his presentation to The Open Group conference in Washington in July 2012. He said:
“One of the key factors inhibiting portability and interoperability of software components today is tight coupling.”
Portability and interoperability need technical standards defining interfaces, but they also need something more: simple principles for the arrangement of the components.
The arrangement of Internet components is well understood, and the components are in fact loosely coupled. Standardization of cloud platform, management, and marketplace interfaces, as recommended by this Guide, will bring about a similar situation for cloud computing except, for the reasons given above, at the application level. The aim at this level should be to minimize the effort required to integrate components with each other.
This can be achieved if developers of cloud applications and application services follow principles such as loose coupling. The chapter of this Guide on Application Design Principles puts forward a set of principles to minimize the cost of integration for cloud computing applications and application services.
Ecosystems and Enterprise Architectures enable interoperability and portability by defining building blocks with standard interfaces that can be realized by products and services that will work together without the need for a large amount of integration effort. Many of these products and services will be available commercially, “off the shelf”, from multiple vendors. Those that are developed specially will interwork and can be used with standard components.
These architectures are often considered to have three domains, as in the TOGAF standard [TOGAF], from which the following definitions are taken:
|Cloud computing impacts on all of them.|
Cloud computing brings new dimensions to Data Architecture, by introducing cloud data storage services, and by facilitating processing of “big data”. Cloud data storage services include services based on new storage paradigms, including those characterized as “NoSQL”, particularly the simple key-value pair paradigm. Big data typically means a collection of data sets so large and complex that it becomes difficult to process using on-hand database management tools. Social networking and other cloud services form an important source of such data, and cloud resources lend themselves to bursts of computationally-intense processing to obtain results from it.
To take full advantage of cloud services, an enterprise needs an architecture based on loosely-coupled services, not on information silo applications with tightly-coupled components. This Guide contains a set of Application Design Principles that will assist the development of Enterprise Architectures that use cloud services to full advantage.
Cloud computing introduces new platform services and technology components, leading to Technology Architectures that are quite different from those that support traditional applications. This Guide contains a Distributed Computing Reference Model with Portability and Interoperability Interfaces to assist the development of Technology Architectures that incorporate cloud components and support cloud-based applications and data.
Components must not only behave functionally in the cloud exactly as they do in in-house systems. They must also perform equally well, with equally good execution and response times, and they must be as secure in the cloud as they are in-house.
Large cloud suppliers operate multi-nationally. An enterprise using their services is likely to have processing performed in, and data moved between, different jurisdictions. This can place constraints on the processing that can be performed, on the movement of the data, and on the degree of control that the enterprise has.
Cloud computing can, however, be seen in this context as an opportunity, rather than a problem. For example, the growth of cloud computing could contribute to achieving the objectives of the European Union for improved interoperability of IT systems across national borders.