11.13.08

Azure clouds (but in what color skies?)

Posted in implement me! tagged , , , at 11:48 pm by Paleni

Microsoft Azure is being promoted to us as a cloud computing system, and we heard David Chou present on the benefits of cloud computing and when it is (and isn’t) a good solution.

Rent, not buy

We’re talking about resources being provided as services by companies with the full-scale technology to handle them as they grow. Suppose you own a small business. Instead of paying an exorbitant price to purchase a software license upfront before your company has made that kind of money, or building and maintaining your own data center, which may cost you a price out of scale to the amount you’ll gain from it (is it cost-efficient for a small business to keep the IT department maintaining a data center in a proper environment 24-7?), you can take advantage of a solution that will easily scale as your business grows, without as much overhead laid out at the start.

Cloud computing is about subscriptions to resources of various types: purchased applications rather than ones built in-house, using external hosting rather than running your own server, Software as a Service rather than running the applications yourself, and so on. In these cases, it’s more efficient for large-scale companies dedicated to these tasks to do them than it is for every business to do them itself, so those companies can sell them for a lower price than the cost for each business to meet its own computing needs in-house.

When is cloud computing useful?

Control vs. economy

The more you create your own solutions– in-house applications, maintaining your own data, hosting yourself– the more you have control over them. On the other hand, outsourcing provides you efficiency of speed and scale. You have to find the balance that works best for a given task. On-site solutions prioritize data consistency, integrity, and a focus on commits. Cloud computing, on the other hand, is best when prioritizing accessibility.

So an online retailer might want to use cloud computing to host their catalog, because the important thing is speed and accessibility: this is the BASE solution (Basically available, soft state, and eventually consistent), which considers that availability is of prime importance and a best effort is good enough; if the customer refreshes to discover that an item which was showing as available has become sold out, this is not a disaster. But when dealing with the financial end of things and processing transactions, it would be best to switch to on-side computing, the ACID solution (Atomicity, Consistency, Isolation, Durability), which stresses accuracy more than speed, because it’s more important that the transaction data be correct.

Ever gone to an online retailer and found that their catalog loads plenty fast, but their transaction takes longer to process? Of course we never really enjoy it when a website is slow, but it’s not much of a problem at that point; by the time we make a purchase, we’re not trying to quickly browse through to find more results. The important thing at that point is that the purchase goes through correctly and we are charged the right amount and receive the right product. Imagine that it worked the other way around, with the catalog in ACID and the financial transactions in BASE. You’d have a slow catalog that would take forever to load, possibly causing users to give up and go to another site. If they did stick around and make a purchase, their financial transaction would go through quickly, but it wouldn’t be in the company’s control or have as much data integrity; the more hands the transaction passes through, the more chances there are for something to go wrong.

CAP theorem

CAP stands for Consistency, Availability, and Partition; the CAP theorem says that we can have at most two of these three. Thus, we have to decide which two are most important to us. There are times when we will need to sacrifice economy of scale in order to ensure data integrity and consistency; however, there are times when what we need is the fastest, most accessible solution to our problem. This is where cloud computing excels.

Like most technologies, cloud computing is a tradeoff; the important thing is knowing which situations are right for it, and which are not.

Loading…

Posted in events tagged , at 9:09 pm by Paleni

The blogosphere has more to teach me than I have to teach it; hence the scarcity of posts.

Today I’m attending a MSDN TechDays session on becoming an architect; this is the first time I’ve been to an event like this. They’re asking that people ask them questions via Twitter and e-mail if possible rather than raising their hands the old-fashioned way, which I think is fantastic– clearly, we are in the sci-fi future.