By Jack Vaughan
Cloud providers lead you to believe you can take your existing applications and put them on the cloud with no fuss or muss. It is true, the applications can run; but you may find the performance is not what you expected. The fact is that application integration is one of the more complicated aspects of cloud computing, as Christopher M. Moyer told us recently while we discussed issues of iPaaS and application integration.
Moyer, vice president of technology at content aggregator Newstex LLC is the author of the recent Building Applications in the Cloud (Addison-Wesley, 2011). The book focuses on real world experiences with the Amazon cloud using Amazon Web Services (AWS). It discusses the Amazon Elastic Compute Cloud (ED2), Simple DB, how to properly construct Software as a Service, designing an architecture that takes good advantage of the cloud platform, patterns for executing actions on data and much more.
Moyer manages to give some good basic background on cloud concepts while covering some details of actual implementation of AWS and remaining somewhat language agnostic. No small feat, that! There is, however, a prerequisite. Moyer says that an understanding of Web services is essential to mastering any cloud environment. "You should understand how Web services operate and the concepts behind them," he said.
Yes, you can just throw your servers on to the cloud and see what happens. But, says Moyer, the problem is that people do this and find out that familiar server configurations don’t run as fast on the cloud; or - surprise - they crash.
The availability of mass quantities of elastic servers is not free of gotchas. You have to plan and think ahead to benefit from new cloud computing architecture. In Moyer’s words: "You have to think more about 'failure as feature' rather than think, 'I have this big honking machine that never goes down.'"
"Your best practice is always designing around where your possible points of failure are," he said. Also, you must figure out how you can abstract critical computations and transactions so they can run in parallel, he said. For this, Amazon gives you the tools. Still, Moyer added, these comprise "a lot more tools than one person can really use."
It seems, with cloud computing, architects need to consider a more nuanced form of scaling. "For the idea of elasticity, you can think of a rubber band. If you throw more into it, you can stretch it. With cloud, you can grow pretty much infinitely. You scale out instead of scaling up," he said.
What that means is that, "Instead of throwing a bigger or better server at a problem, you have to make things work in parallel," said Moyer. In fact, Map/Reduce cluster style tools, outlined in Building Applications in the Cloud are a key stepping stone on the way to making things work in parallel.
Discussed in the book is the n-Tier Web pattern. This middleware integration paradigm [Presentation/Application/Database] is familiar to people ranging from anyone who has sat through a client-server power point to anyone who has built a model-view controller. Moyer points to a four-tier Web pattern [Client/Representation/Application/Database] as valuable in approaching cloud cluster architecture. As the number of and variety of clients proliferate (think: "mobile") this separation of layers has many valuable uses.
All and all, Moyer's effort is laudable. It is informative, and a good read.