Cloudapps
When the cloud buzzword hit the intrawebs, one issue I kept thinking about turned out to be more interesting than I thought. Different type of applications have varying requirements when it comes to running inside a cloud. A virtualized environment to be more precise. A virtualized environment means it’s just another computer right? So, it’s just a VPS somewhere isn’t it? Yes but there’s more to the story.
“Cloud requirements” differ from person to person and for what they’ll be using the technology. And of course, methods for reaching to the clouds are as diverse as the requirements (ahem).
- For a hosting company adopting cloud technologies means having an infrastructure that enable them to create virtual machines from a cluster of servers upon customer requests. Using Xen/KVM/OpenNebula etc… they can easily do this. Additionally what they need is a nice web based interface that they can integrate into their existing customer portals.
- A web based application vendor, changes they need to make their applications to run in the cloud is minimal. Here, a differentiation should be made for single-tenanted vs. multi-tenanted applications. Popular multi-tenanted web applications include Google Apps and Salesforce.com. SQL Azure, the popular database as a service platform runs on a multi-tenanted version of SQL Server.
- When it’s not a web based application things start to get interesting. Paul has written a wonderful post explaining the requirements that need to fulfill in order to be called a “cloud native” application.
As Paul mentions, being “on the cloud”, applications need to have features like autoscaling. Pay for what you use has a huge advantage of paying for resources depending on your daily resource needs. Several more aspects are listed on his post.
UEC in Lucid Lynx
Ubuntu 10.04, code named Lucid Lynx, ships UEC with their server distro. UEC uses Eucalyptus 1.6.2 to provide a private cloud infrastructure.
Getting it to work in a production setting requires a considerable amount of effort because you’ll be facing undocumented issues. Here, effort refers to scanning through forums and mailing lists.
Still, for me the experience was much pleasant compared to fiddling with some proprietary crap acting as a black box. Although, the documentation for Eucalyptus still a bit rough around the edges; if all else fails you have the option of reading the source to find out the intended behaviour. If you use open source stuff in production I don’t have to say how much time this saves.
After some failed attempts to get this shit up and running, the bazzilion things you should not do when installing UEC turned out to be a useful experience. Doing a CD install, selecting to install cloud stuff from the menu takes you on a short path to finish line. Make sure you select a right topology for your installation.
All the nitty gritty details intentionally left out for a later post.
Patterns
Brad Appleton gives a nice introduction to what and how patterns entered into software development. Most of the sources online and elsewhere point to the 1987 technical report wrote by Kent Beck and Ward Cunningham to be the first published work on application of patterns for software systems. Later in 1997, Norman Kerth and Ward Cunningham wrote how patterns could be used to improve architectural vision of a software system. GoF book contains widely used patterns that occur during designing of software.
SOA patterns is a set of patterns that you’ll likely to encounter when implementing a service oriented architecture in an organization. Sometimes a product that you might be using will not be able to customize according to a well defined pattern. If you have to resort out to non standard communication mechanisms or have to alter your architecture to match what the product can do, then you shouldn’t be using that product to begin with. Cost of making a change later to accommodate a business need might be too high in such a scenario. I’ll be exploring how to configure open source software products to implement some of the well defined SOA patterns in coming posts.