Since cloud computing is often thought of as "platform as a service," it is important to understand what the boundaries of the term "platform" might be. Some might call it "infrastructure as a service" instead, but that is equally vague and adds little to the overall understanding of what cloud resources might look like. When discussing clouds such as the Force.com cloud and Google's App Engine, for example, the "resources" of the cloud include more than just hardware and an operating system. They contain "middleware," which manages the connections between the software and the cloud, and database tools. This makes them easier to use with the applications they target, but it can also decrease their versatility if the software is taken beyond its range.
Salesforce.com's Force.com cloud is designed to integrate with Salesforce.com's application tools. The cloud is built on Salesforce.com's Apex On-Demand Platform and the Apex language is used to create hosted applications. There are also toolkits available to integrate client-side applications, developed using any popular programming language, with Apex-based hosted components. An Apex "sandbox" is also available to develop and test applications. While Apex is a Salesforce language, it is similar in syntax to Java or C#, and most developers report little difficulty in learning and using the language. Developers can list their completed applications on Salesforce AppExchange.
There is no requirement that Apex applications integrate with Salesforce.com services, but that has been an obvious focus. The majority of non-Salesforce applications are those with special interest to the Salesforce community, but there are applications that do not connect to Salesforce in either a customer relationship management (CRM) or a business and marketing sense. Force.com Edition is the platform that provides for custom hosting on the cloud, and there is a per-user per-month charge for this service in addition to the basic Apex platform charges applied to Salesforce.com applications.
For those extending a Salesforce application through a customized client, there is an API set that provides a link to the cloud-hosted services. This set is based on SOAP and compatible with most popular development languages and Integrated Development Environments. The APIs provide access to the cloud data model for the application, and the developer tools to build these client-side interfaces are very flexible and well-documented. It is important to remember, however, that these applications are not running in the cloud but, rather, acting as cloud clients.
The Force.com PaaS has a highly visual interface that can be used to customize the GUI of applications, along with modifying their data model and workflow. This simplifies many customization tasks and helps to tune the applications to specific workers or groups. The platform is secure and reliable: Enterprises that use Salesforce.com services find it to be a valuable way of expanding their Salesforce application or building new applications that have a common look and feel to go with generalized application administration.
Google's App Engine cloud offering is targeted at web developers and web hosting applications. App Engine is essentially a hosted version of a CGI handler; it would normally be operated as part of a web server application, and its applications can be accessed via only HTTP/HTTPS on a standard port. A special Google domain is available to developers (appspot.com), or private domain names can be directed at the applications.
The only programming languages currently supported by the App Engine are Python and Java. Python is used by most developers as a scripting language for web applications. Not all Python features are supported, though, so it's important to review its limitations before planning a development. Most Python web frameworks, however, will work with App Engine and can be loaded with minimal tuning. Python is easy to learn and use, but it is not known to be a highly execution-efficient language. Java is more broadly used as a development language and is also highly portable. Some developers may be concerned that more "efficient" languages such as C or C++ are not supported, and Google may add these later.
There is a free account available for Google App Engine, but Google also now offers additional resources based on in and out bandwidth, CPU hours and gigabytes of data storage. The prices are comparable to other cloud offerings, there is a daily budget feature designed to prevent users from running up their bills and any data storage is separate.
The typical stages of App Engine development would be to create and test an application in the development sandbox, followed by deployment. If the application requires persistent data storage, it must be provided externally through the App Engine Datastore; many App Engine applications obtain data from the request or from program-integrated variables. The Datastore is an object-oriented database with an object type and properties, and it can be accessed using a filter data model with SQL-like syntax. Concurrency control and locking is provided at a basic level, and applications can also send emails and access both a shared memory cache and external (web) URLs.
App Engine is not a general-purpose cloud, but is rather more a higher-level platform-as-a-service offering designed for a fairly specific mission in support of web applications. The "architecture" of the applications best fits as a server-side CGI-like processing capability. For applications that process web forms or use Ajax and Web 2.0, however, the structure of App Engine fits the application requirements exactly. Google also offers attractive service terms, prices and management tools to facilitate implementation and deployment.
These two cloud offerings show the range of options developing in cloud computing, in both the abundance of suppliers and the different levels of each application's "philosophy". Force.com exploits the Salesforce architecture and, thus, inherits the platform's Apex language, the on-demand hosting focus, and the client-customization capabilities. App Engine is a very web-server-centric offering perfect to develop server-side applications for general web client systems and devices. The limitations in these platforms are, for their particular areas of focus, more than outweighed by easier development, deployment and management.
|Tom Nolle, is president of CIMI Corporation, a strategic consulting firm specializing in telecommunications and data communications since 1982. He is a member of the IEEE, ACM, Telemanagement Forum, and the IPsphere Forum, and is the publisher of Netwatcher, a journal in advanced telecommunications strategy issues.td>|