Web Development

Coming of Age in the Era of Cloud Computing

Cloud Scenarios?

What are some possible cloud scenarios? Where can you get started with maximum benefit and minimum risk? First of all, it is good to get really started. Any solid experience could open up enterprise possibilities. Ignorance in such a critical technology will only help your competitors . And just reading articles and books does not provide your team the hands-on experience needed to truly evaluate the best uses. Here I discuss three possible scenarios to get you started, each increase the risks but also provide greater value.

The easiest place to start is testing. Cloud computing offers a unlimited selection of configurations, distributions, and services that allow effective, exhaustive testing. The dynamic allocation can change the way you view testing and allow many test cases formally not possible. Testing is also a good way to "get your feet wet in the clouds" without incurring any real risk.

The next area that can be quite helpful is surge management. Despite the best predictors of computer use, there are always periods of extreme high use. If these are especially rare, you simply wait it out. Handling some processing in the cloud allows you take advantage of the dynamic resources without total dependence. You can adjust your surge kick-in with your comfort of the technology. This is an especially effective approach for volatile usage patterns. Ancerllary to this, is using the surge approach as a backup in case of failure or assistance to improve overall quality of service.

The final case is rapid prototying and deployment. The resources and services are so easily assembled that you are free to experiment. This could launch a new, lucrative service that was formally cost or time prohibitive. Interesting enough, if success occurs but you feel the risks are too high, you can always fold some of the processing back into your own infrastructure.

One final note: A a cloud does not have to be "out there". Several open source implementations offer your enterprise to form their own cloud. This really isn't that much different technically except you hold all the data and you must manage the cloud. It is also worth considering if your data and processing is highly confidiental. Of course, you can also blend an internal cloud seamlessly with an external one.

Diving into the Cloud

A cloud is tough thing to nail down. The various cloud implementations offer quite a bit of variety. Considerations include resource types, access methods for both the cloud occupants (your applications) and the cloud user, privacy and security, quality of service, cost, and vendor lock-in.

First lets see what the cloud has to offer. As stated above, clouds offer a quite a range.

Consider using cloud-provided infrastructure in contrast to the way you currently work. Traditionally, the enterprise has had to build everything from the ground up. Every new service you roll out has forced as much consideration of the logistics of providing for growth in data storage capacity, number of end users, power consumption, and support personnel. The IT poweplant supporting any enterprise service offering has always had to provide for "just in case", for useage spikes, for variance from average. The potential now exists to change the parameters for the enterprise. Unlike tradition setup where you are forced to live and die by having to estimate service provisioning for the high side of the extreme case (forcing you to acquire, maintain, and lifecycle for the peak case, which is often very far from the normative use case), you can essentially plan for instead you are essentially costing for the average, and experiencing recurring costs reflective of that norm. In this sense, cloud architectures are very similar to "just in time" supply chains.

This shift in design and deployment perspective will only work to preserve working capital but also allow scaling to well beyond a budget allowable for peak (you can be very successful and not cross your fingers to see if you can meet the demand generated by a spate of favorable Tweets.) Because of the cloud, you can change the traditional mindset almost completely -- you no longer need worry about peak so as to change your business model such as a rolled out release to allow customers to gradually get the information -- you can meet all your customer demands at once. You can also set an upper limit if concerned about not having an unlimited cost (such as might occur in a Denial-of -Service attack)

Above and beyond this simple assurance of infrastructure, cloud computing offers even more. It is fast becoming a new type of Internet operating system. Operating systems control a range of computing resources to allow applications to work above the fray of disk access and screen updates. Cloud computing offers the computing resources that allow computing solutions to work above the need to allocate machines and control their communications. Amazon cloud service offers simple raw computing power scaled to reflect various sizes of real machines while also offering services that assist these resources such as distributed messaging and data persistence.

Additionally, cloud middlemen can take these raw resources and assemble into larger offerings. Google, for example, offers a set of simple APIs that abstract away so much of the infrastructure that creating an application using its Google Application Engine facilities, feels like creating a simple single machine/local application. Consider how quickly your staff could create applications if they were able to focus 100% of development energy on the business rules of an application rather than spending most of the development budget accomodating the details of what happens when you actually attract a significant user base. This is the promise of GAE; by leveraging an Agile language (Python) and a well known internet application development framework (Django). 15 minutes of exploration will begin to convince you that application development can potentially become a matter of fast iterative, incremental coding style.

Amazon, through its Elastic Compute Cloud, offers an exquisitely tweakable set of capabilities: virtual machines containing processors, memory, and storage. A cloud application can dynamically allocate and deallocate the virtual machines sized from small 32-bit processors to 64-bit multicore processors. All with corresponding memory and storage. If you are just looking for storage capability, Amazon's Simple Storage Service accommodates that too. The storage is direct and simple. An application developer declares buckets and places data objects into the bucket. Each bucket and object maintains a security profile that controls access.

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!