Variations of services
Cloud computing is certainly an important development in IT. It generates a lot of fantasies about how cloud computing will change the world of digital users, professionals, students and so on. Cloud computing is about providing software or IT-related capabilities, like storage, as a service. These services are hosted in large datacenters, and can be accessed from the internet and internet connected devices. There are very different cloud computing offerings though.
I will briefly categorize the offerings by function and viewpoint.
For non-corporate individuals and groups
There are applications and collaboration services for the individual user, self-employed professionals, families, students, and so on. Some of these applications are suitable for corporate professionals too, but using them will be an individual choice.
- There are applications, like a word processing application, that are not installed on a computer or device and can be accessed and used with a web-browser. Device-independency and sharing/collaborating with the data are the main advantages. Google documents is an example of these applications. The applications are generally provided with basic (most used) functions. These applications are useful for collaborating on an ad-hoc basis, but are often not sufficient for professional work.
- There are also web-based applications combined with installed applications on devices. Online storage, sharing, collaboration with rich applications are the key benefits and one can use the rich and advanced application functions for work with high standards and requirements. Apple’s Iwork ’09 and ILife ’09 is designed for creating rich documents, spreadsheets, online photo albums, web-sites and so on. Similar to the Microsoft Office 2007 and Windows Life services, like Live Mesh, Skydrive and Live Groups and Windows Life essentials services.
- Next, there are the web 2.0 services like social networks, blog and messaging applications, and so on, where sharing ideas and life in general with groups seems to evolve to communities where one can collaborate, contribute and get rewarded. Delivering API’s for programmers so they can deliver device-based “rich” applications to connect from a device to the cloud service seems to be a good idea. Unfortunately, most applications made today to connect to such a service lack the rich functionalities one hope for. There’s a whole market out there!
For corporate users and commercial hosting
For organizations, working with cloud services is a de facto practice. Organizations themselves host these services. Mobile email, portals, remote desktops, remote applications, follow-me telephony, instant messaging: we are working this way right now. The idea of cloud computing however is to outsource these services, because the corporate cloud computing offerings are very attractive from an investment, cost and operational point of view. For commercial services the same , owning servers, renting rack-space and so on all belongs to the past.
- Applications like email services, accountancy programs, CRM-applications, project management apps, and so on, are offered in the cloud, most of the time with a pay per user model.
- One can write an application and host these applications in the cloud. The cloud-service provider offer scalability, and a SLA to guarantee uptime. No knowledge of systems and networking is needed.
- One can host machines and server-infrastructures in the cloud, from a virtual server to server-farms with virtual networks and virtual storage solutions. Scalability, ease of operation and pay per use are key concepts.
Comparing Microsoft, Amazon and Google Cloud offerings
Microsoft is offering their Azure platform, where services like .Net services, SQL services, Live Services supports the hosting of web-services. Azure is a developer-centric solution for creating and
hosting scalable applications. With Visual Studio, developers can develop their applications and simply deploy their applications in the cloud right away. Azure does support the use of non-Microsoft tools and languages such as Eclipse, Ruby, PHP, and Python. The “platform” is managed thru a web portal, where you can deploy and scale your services quickly and easily. No operating system or networking knowledge is required for using this platform. Build and deploy your app, and scale as needed.
Amazon, offers Amazon Web Services, which is a set of Cloud services, like the Elastic Compute Cloud platform (EC2), the SimpleDB, Simple Storage Service (S3), CloudFront
and Simple Queue Service (SQS). One can say that these services together, offer what Azure offers, with one big difference: with the Elastic Cloud Computing offering you can run a virtual machine with an operating system and services of choice. Amazon Cloud Services is more System-Centric, especially with their Elastic Cloud Computing platform, which is basically a machine. As with Azure, one can easily manage and scale the environment thru a simple web service interface. For the server OS instances a flexible and fast commissioning or decommissioning of server images is provided.
Google offers their Google App Engine, in a preview release. It is a developer centric solution which is based around the Python Language with somewhat limited functionalities (no support for writing to disk - databases stored on disk - most modules written in C are disabled). The Django development
framework (Django v0.96.1) is included with the Google App Engine SDK. The environment also make use of Google’s BigTable database/storage system and Google File System (GFS). There are API’s provided like the Python Runtime (in which the app runs; CGI, sandbox features, application caching, logging), the Datastore API (effective use of the scalable datastore), the Images API (for image data manipulation), the Mail API, the Memcache API (distributed memory), the URL Fetch API (for accessing other Internet hosts) and the Users API (for integration with Google Accounts).
Integration with on premise services and applications
The Azure and the Amazon platform is designed to let cloud services and applications interact with local, on-premise data, IT services and applications. Google Apps is not de
signed with this kind of integration in mind. This type of integration is essential for corporate use. In most corporations and organizations, hundreds of applications are used. With the rise of loosely coupled services and functions, integration of application data is made possible. Regardless of the need for data-integration, there is always an need for interface integration. When one uses many applications and many data sources, it is convenient to bring those applications and data sources together, for instance with portal software, like IBM WebSphere and Microsoft Office SharePoint Server (MOSS). It is possible to create a unified desktop and user interface, regardless of the device you’re working on. Application, desktop and machine-virtualization techniques are widely used and users simply don’t know where the program is running, where the data is stored. There should be no difference at all in the user experience between working with on-premise or cloud apps and data.
SOA
Cloud computing is connected to Service Oriented Architecture, where services or functions are loosely coupled designed. In the last decades application f
unctions like data handling and business logic were designed with decoupling and partitioning in mind. Decoupling and partitioning of functions was necessary for service scalability, interoperability and to diminish the number of mutual dependences and failures.
With Service Oriented Architecture a next step was made in decoupling business logic from the applications. With SO
A, data retrieval and handling is possible from and to any data source to any device/interface. Without an Enterprise Service Bus each connection between applications for data-exchange must be programmed and configured separately. With an Enterprise Service Bus all applications are connected to each other thru the Bus, which handles all protocols for data-exchange and logic.
Portals, like WebSphere and Microsoft Office SharePoint Server are a good way to open up different applications in a single interface.
Evidently this decoupling of application logic and data handling made it possible to couple data from different sources to interfaces for different roles, like customers, factories, suppliers and resellers. A customer who orders a car composed of a certain set of properties, leads immediately to orders in the supply chain, for instance an order for a particular set of tires or a navigation system.
Working like we do
Now, with Cloud Services, the next step is within reach. We can choose to host an application in the cloud in stead of in our own datacenter. As stated earlier you don’t have to worry about server systems, backup, restore, about networking, storage or scalability. You don’t have to invest in systems upfront: you pay per use. Cloud computing could be a smart deal. And with loosely coupled service designs in place it really doesn’t matter where the applications and data is hosted. Moreover, we actually work this way today in our business networks.
Thinking protocols
When cloud computing is going to be used a few issues has to be addressed. Technically, there are no reasons not to use cloud computing. But there could be legal or corporate policy issues that prohibits the use of cloud computing.
Ownership
First issue is the issue of ownership: who owns the machines, the data, the applications. For an individual this seems less of an issue. But even then, there are cases of information being removed by the provider of the service, like blog services. So, using a cloud application and services rises this question: who owns the data and what is done with the data you store? For example the Google Docs Terms of use: “By submitting, posting or displaying the Content you give Google a worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute any Content which you submit, post or display on or through the Service for the sole purpose of enabling Google to provide you with the Service in accordance with its Privacy Policy.”
It seems wise to really read the terms of use and privacy policies before sending classified information to these services. Besides company policies, law’s like the USA Patriot Act do raise questions about privacy and ownership. Again: think it over.
Legal
Legislation prohibits the storage of some data. The EU Data Protection Directive places restrictions on the transfer of personal data from Europe to nations (such as the U.S.) whose data protection laws are not judged “adequate” by EU standards. For some data special measures has to be taken to ensure the data is not tampered with or altered. Some governments (like the
Canadian) forbids IT organizations to use services which stored or hosted the government’s data outside their sovereign territory.
Protocols/Algorithms
So clearly, it not allowed to store all kind of data anywhere. Companies and organizations should think about there own classifications of data. What data must reside on owned computers and storage, what data is permitted to be stored in the cloud. Again, this is not about techniques, it’s about law’s, terms of use and company policies. In designing integrated on premise and cloud computing infrastructures, we should not only think of how data can be transferred from one application to the other (as we do nowadays), but about how we decide where data is stored, for how long it will be stored. Data must be classified (which is for sure not common practice today) and/or an algorithm or protocol should be in place that makes decisions about storage locations.
As with SOA business logic services, we know how to do this.
Cloud computing architects and consultants should focus on these protocols: making decisions, whether or not automated. For the small businesses and individuals, essentially the same decisions apply: what do I store online, where do I draw the line?
Conclusion
Cloud computing is doing smart business, brings us many attractive possibilities, like ease of scaling, no worries about systems and infrastructures and no investments upfront. Cloud computing seems a natural next step for loosely coupled services and SOA. Before cloud computing is used, one has to think about protocols: what do I permit and what don’t I permit to live in the cloud and under what conditions. The possibilities are there, but infrastructure and application architects should go back to the drawing board to work things out and advise wisely!

Eric Groot Cloud Computing Cloud Computing