For my Software Architecture class, I'm trying to do a project on what software architectures work best with the cloud to create a scalable and agile application. I'm having trouble finding a starting place to research on what kinds of architectures work well with the cloud. Does anyone know any good books, blogs, articles, architectures, etc... that will help?
A good starting article is http://www.infoq.com/presentations/Horizontal-Scalability. The basic concepts revolve around shared nothing elements and message passing - similar concepts that you'll find in functional programming languages.
Hi,
I suppose you have already read this post: http://stackoverflow.com/questions/2600454/cloud-computing-over-client-server-differences-cons-and-pros
As a book, I can suggest "Cloud Computing, A Practical Approach".
I wrote this series for Java World last year about developing in the cloud. You'll see manifestations of the patterns appear in different cloud platforms (Microsoft Azure, Google AppEngine, Appistry CloudIQ, GigaSpaces XAP, etc.) in different ways, but the basic principles still apply at various levels for anyone implementing applications on these public and private cloud platforms.
The principles of atomicity, statelessness, idempotence, and parallelism are covered in respect to their effect upon availability, reliability, scaling up on cores, and scaling out across servers, etc.
One or two of the code examples are bolluxed, and I could never get the editors to update/fix them, so apologies on that.
Here are the articles:
Building cloud-ready, multicore-friendly applications, Part 1: Design principles
Building cloud-ready, multicore-friendly applications, Part 2: Mechanics of the cloud