CNET también está disponible en español.

Ir a español

Don't show this again


Fine-tuning applications for cloud environments

Java is slowly making its way to the cloud. Considerations must be taken to ensure applications run they way they are supposed to.

Last week, Google updated App Engine with support for the Java programming language, opening up another chapter in the development-stack-in-the-cloud concept.

Still the most popular programming language--if only by a margin--Java support could mean potentially more apps being built and more developers using App Engine. Does this mean developers will simply be more productive and can deploy apps that just work? Or are there hidden issues in pushing those apps into the cloud?

The latter is more likely, says Ben Chelf, CTO and co-founder of Coverity, which is set to introduce a new offering Tuesday to tackle these hidden issues. "There's a lot to consider when moving apps into the cloud. Race conditions, deadlocks, and performance problems due to poor locking decisions--these are the 21st century problems multithreaded applications face and you've got to be ready for them when you move to the cloud."

If applications aren't designed to be executed in a massively parallelized environment like the cloud provides, they could have flaws--flaws that while hidden in the comforts of your own home desktop, will be exposed to their very core when running in the cloud. A lot is going to come down to the execution of the application. Here are three areas that Chelf thinks developers need to consider to build their application right for the cloud:

  1. Will the application be run satisfactorily if each thread runs slowly? While your desktop machine might be screaming with processors churning at 3GHz or more, the situation up in the cloud might be different. You don't control the processor speed. You just get lots of them.
  2. Will the application be OK if it runs in parallel 10 ways? 100? The cloud affords you the luxury of potentially running your applications in a highly distributed environment. This means coordination between threads to ensure you don't corrupt memory as dozens of threads are simultaneously carrying out the work you've so carefully programmed them to. Is your application ready for that type of scale?
  3. Will the application scale? Imagine having thousands, tens of thousands, or more people pounding on your application. With the cloud, now you are not limited by hardware as much anymore, but will the performance of the app you've developed handle that type of usage scale?

When we talk about what can go wrong with cloud computing today, we typically blame cloud service providers and their uptime, infrastructure, and scaling capabilities. What if the app just wasn't built for the cloud to begin with?

Follow me on Twitter @daveofdoom