Cloud Computing Programming API Tutorial
Developers have a wide range of platforms to choose from in creating cloud-based applications. Two of the most popular platforms are Amazon's Elastic Computing Cloud (EC2) and the Google App Engine. In addition there are a wide variety of other platforms that have not gotten as much press, but are making traction, such as the Salesforce.com environment. In this guide, we will dive into some of the more interesting sites with development resources and tips to get the developer rolling.
Google App Engine
Google App Engine is in a preview release. It is more oriented to testing out the concept and the tools than building mission critical applications. Google is currently giving developers sample accounts with 500 megabytes of storage, 200 megacycles of CPU per day, and 10 gigabytes of bandwidth per day. This should allow most applications to serve about 5 million pageviews per month. In the future, Google plans to keep the basic accounts for free, while charging for additional resources.
Google's offering is similar to Amazon, but it does not provide a set of standalone services like Amazon's S3 for storage, EC2 for hosting. The Google offering bundles everything into one package.
One of the downsides of the Google App engine is that developers are limited to Python, although Google plans to add other programming languages in the future. Developers are also constrained to the BigTable database, which runs inside the Google File system. Although it is different than traditional databases it does offer some benefits around scalability.
Download the App Engine SDK here
Google App Engine Blog
The official blog relating to Google's Cloud deployment environment. It contains links to the Google App Engine Group, the documentation and all of the official news relating to the app engine.
The GAE APIs include:
The Python Runtime
Datastore API
Images API
Mail API
Memcache API
URL Fetch API
Users API
BigTable
A key component of the Google App Engine is BigTable, which has some key distinctions from a traditional database. It is fast and extremely large scale, which enabled by a sparse distributed multi-dimensional map, rather than traditional database rows and columns. Google App Engine has a SQL-like syntax called "GQL". Select statements in GQL can be performed on one table only. GQL intentionally does not support the Join statement.
White Paper on BigTable
Bigtable: A Distributed Storage System for Structured Data
Google App Engine Optimizations
Niall Kennedy provides a number of different optimizations for GAE development. This blog shares some of the best practices he has learned for key-based lookups, reduce indexed columns, defining favicons, and deployment.
Google App Engine Tips and Tricks
Majek presents a variety of tips and tricks for developing GAE applications. Some of the highlights include how to dynamically get application name and version, how to identify the current host, and how to set up captcha on GAE.
Using Komodo Edit as an IDE for Google App Engine
This guide explains how you can use Komodo as an alternative development environment for GAE, after the author gave up on Eclipse.
Rollin' With Google App Engine, 80's Style
Andrew Tetlaw takes you the basics of getting an application up and running on GAE. He explains the basic components of the framework and takes you through the steps of a dice rolling application. He writes, "Google App Engine represents something like the Commodore 64. You know a personal computer that doesn't do much on its own but is flexible, programmable, inspiring, and fun. You use it to tinker with stuff, finding out how stuff works, trying out ideas for new gizmos, and building custom tools."
Building Flash applications with Google App Engine
The GAE SWF Project is a resource of Flash and Flex-related knowledge specifically aimed at getting you up and running quickly with Google App Engine for building and deploying massively-scalable Flash and Flex applications.
Using Python with Google App Engine
This site provides a tutorial for using the PyAMF application with GAE.
Amazon
Amazon's EC2 is a commercial service that allows companies to rent computers to run their own computer applications. Customers rent out virtual machines through a web services interface. These can be launched and terminated on demand. The platform uses Xen virtualization of one of three sizes ranging from 1.7 gigabytes to 7.5 gigabytes of memory and 850 gigabytes of storage.
Amazon Web Services Main Site
Contains news and links to tutorials and white papers for getting started with running your own AWS applications.
The main Amazon Web Services include:
Amazon Elastic Compute Cloud (EC2)
Amazon Simple Storage Service (S3)
Amazon Simple Queue Service (SQS)
Amazon Mechanical Turk (Mturk)
Alexa Web Services for providing traffic data
Amazon SimpleDB
Amazon's SimpleDB makes it easier to work with data
Tony Patton provides an overview of how the SimpleDB works and how to work with the key elements to set up a database.
Amazon Developer Connections
The developer's gateway to Amazon development. The site contains a number of tutorials, tips, and provides source code for getting an AWS project off the ground.
Amazon Web Services Blog
Provides news and views Amazon Web Services, Products, Tools, and Developer Information. Includes links to background information, tutorials, webinars, and security.
Other Cloud Platforms
NetSuite Business Operating System (NS-BOS)
NS-BOS' primary purpose is customizing the company's accounting, sales, and ERP (enterprise resource planning) applications.
Bungee Developer Network
Bungee Connect is a lightweight developer platform that uses the companies own development framework. The company claims the platform enables applications to be built in 10% of the time of traditional programming models. Developers only have to pay for the use of the sites they developed. The company provides integration hooks with NetSuite, Oracle Siebel, Salesforce.com and SugarCRM.
SalesForce.com Apex Wiki
The official SalesForce.com developer guide to getting started with Apex, the programming language used to develop cloud applications for SalesForce.com. It includes code samples, documentation, tools, and other technical resources for building and customizing apps on the SalesForce.com platform.
Intuit's QuickBase
QuickBase is a cloud platform designed to interoperate with Quicken accounting applications. This site provides the basic information for getting stated. Intuit is working with developers to create a marketplace for applications that can integrate with the millions of QuickBooks users.
Etelos
Etelos provides a cloud computing platform for building and distributing apps built in PHP, JSP, Python and other languages. This site provides links to all of the resources to get started on the Etelos platform.
Comparing Amazon's and Google's Platform-as-a-Service (PaaS) Offerings
Compares the service offerings for developers. Showing how the databases, services, and other features line up.
Cloud Computing News Desk
News on all areas of cloud development for developers. Focused on various tools, APIs, and services available for developing massive scalable compute systems.