Cloud Computing Tools For Managing Amazon, Google ServicesCloud Computing Tools For Managing Amazon, Google Services
Getting the most out of Amazon's Web Services or Google's App Engine requires the right tools. We run down the benefits of Elastra, Coghead, Heroku, Enomaly, and Hyperic CloudStatus.
Why have only one server when you can have as many as you need, on demand? That's the premise behind cloud computing -- harnessing whole reams of processor and storage power without actually having to provision them yourself. But if you're without the right tools for the job, it's that much harder to reap the full gamut of benefits from working in the cloud.
The tools you have at your disposal are likely to be limited, if not dictated entirely, by the cloud computing service you've chosen. A good deal of this is due to cloud computing interfaces -- the application programming interfaces mainly -- not being interchangeable. The applications themselves that are run in the cloud, the stuff you provide, are only part of the picture. How you get it into the cloud, and deal with it from that point on, is also crucial.
To that end, the tools I'll be exploring deal with two things: 1) creating new apps or moving existing ones into a cloud-computing environment, and 2) managing them once you get them there. Most of the tools available right now concentrate on the most popular and well-known of the cloud-computing infrastructures out there -- namely, Amazon Web Services -- although some of them also offer services for Google's App Engine.
Amazon Web Services
Thanks at least in part to the name-brand recognition of parent company Amazon.com, Amazon Web Services is one of the most popular (or at least one of the most well-known) cloud-computing systems out there. Small wonder AWS sports a bevy of third-party tools to aid the use of its services. Sometimes this comes in the form of another service -- a kind of mediator between you and AWS.
Elastra's Cloud Server is one example of such a system. An application that uses MySQL, Ingres, or EnterpriseDB can be deployed into Amazon EC2, with its data stored in Amazon S3. Failover, replication, and elastic clustering (the ability to add or delete nodes based on demand) are all handled automatically by Elastra. The application side of things is more your responsibility, but you're essentially given a Linux 2.6.16 platform in one of three basic instance configurations that you can write apps in.
Another mediator is RightScale, which also offers a tiered approach to elasticity. A free developer edition lets you get your feet wet right away with 10 free hours of EC2 usage. The other tiers (starting at $500 a month) allow you access to expanded functionality -- scalable batch processing, scripting, multiple server deployment, and for-pay support and consulting.
The folks at Coghead use the term "platform as a service" to describe their Web app development platform, which includes a Flex-driven in-the-browser development environment and, of course, Amazon's cloud stack. It's clearly been designed for those who do not already have an existing application set, but rather want to create something from scratch without learning a great deal of programming along the way. Intridea's Scalr is "a fully redundant, self-curing, and self-scaling hosting environment utilizing Amazon's EC2," according to its Google Code site. What sets it apart is that it is available as an open-source project or as a service unto itself, depending on the degree of involvement you want to have. Experts can opt for the former; pros the latter.
Eucalyptus sports easily the biggest acronym of anything seen lately: Elastic utility computing architecture for linking your programs to useful systems. According to its creators, it's "an open source software infrastructure for implementing 'cloud computing' on clusters." Amazon EC2 is the default cloud interface, but the whole idea is to make it a system that can be extended to connect with all manner of other cloud environments; EC2, being one of the most broadly used, was a logical first choice.
Other systems are more limited, but also that much more focused. If your application was written with Ruby on Rails, for instance, and you want an AWS interface that concentrates on Rails performance, there's Heroku. Code and data can be edited directly in a Web browser, and existing Rails apps and data can be added to Heroku using git and yaml_db. Those who already have experience with Rails should have an easy time migrating into Heroku or starting there anew. (Another Rails-centric hosting service that doesn't use Amazon but does have elasticity of a sort is Engine Yard.)
Enomaly is a kind of two-in-one product -- it allows you to turn your own existing datacenter into an elastic-computing cloud, and use Amazon EC2 as an expansion system of sorts if you so choose.
This is a convenient way to split loads between local and remote farms depending on need, and existing virtual machines (Xen, KVM, and some OpenVZ support, among others) can be added to a cloud. Enomaly is available as a free and open source package under the Affero General Public License, with support available separately, and as a commercially licensed version for those who are reluctant to be asked to commit changes back to the community.
Java programmers looking for aid in deploying their work on an Amazon EC2 instance ought to benefit from the cloudtools project collection over at Google Code. Among the goodies in this package are Maven, a plug-in to automatically launch and provision EC2 instances with one or more MySQL instances to go with it; and the Grails plug-in, used for deploying -- as the name implies -- a Grails application to EC2. Google App Engine
Google's App Engine is the search giant's first major foray into making its massive server farm into a cloud computing infrastructure that most anyone can use. Because the Google App Engine is still very new, it doesn't yet have the breadth of third-party support as Amazon. It's also limited in terms of its app support: the only kinds of applications that can run on the engine are Python apps.
That said, some intrepid folks have already stepped into this space and have started offering ways to plug in to Google's cloud. Hyperic CloudStatus doesn't deal with programming support per se, but offers another function that's fairly critical to anyone planning to do serious work with cloud computing: health and performance monitoring. Clouds are still somewhat flaky beasts, so any way to keep an eye on them automatically is a big help. CloudStatus sports plug-ins for both Google App Engine and Amazon Web Services, so it's not limited to monitoring any one cloud service either.
Cohesive FT takes a slightly different approach to aiding development of App Engine apps. They allow you to create a local instance of Google's Dev Web Server -- a way to run App Engine applications outside of Google's cloud -- and also run it in any number of elastic environments, such as Amazon EC2. This is useful if you want to develop for GAE in a "disconnected" fashion, something possible with Google Gears, but given an additional level of flexibility this way.
Here and there, people are also discovering little ways to augment the work they do with GAE. Since GAE has no formal integrated development environment -- all the programming is done in Python, so any IDE that respects Python syntax will do -- one programmer decided to whip up a way to turn the Komodo Edit program into an integrated IDE for GAE. This reduces the amount of window-switching and "by-hand" heavy lifting needed to set up and maintain a GAE project.
Where To From Here?
Because cloud computing as we currently know it is still so new -- and, consequently, so prone to being reinvented on the fly -- the toolsets themselves are bound to evolve with it.
The most critical tools to come will be more ways to migrate existing data and code into the cloud, since few people interested in reaping the benefits of the cloud will want to completely reinvent all of their wheels.
Another key area ought to be profiling -- not just uptime monitoring, but products that can analyze existing code for performance bottlenecks and optimizations that are specific to cloud-computing environments. A given application that works fine on a conventional server may also work fine in the cloud as-is, but any programmer would want to know if there was more he or she could do for the sake of speeding up cloud performance.
Be sure to check out information's Virtualization Briefing Center for case studies and whitepapers on virtualization, as well as our new site, PlugIntoTheCloud.com, for detailed day-by-day analysis of cloud computing's ins and outs.
About the Author
You May Also Like