LANGUAGES: VB.NET | C#
ASP.NET VERSIONS: 3.5
Resistance Is Futile ... Soon Cloud Computing Will Envelop the World Wide Web, Forever Altering Software Development Practices
By Steve C. Orr
While clouds are common over Seattle, a special one forms above Amazon headquarters and another a short distance away at Microsoft s main campus. Overcast conditions are less common in Silicon Valley, but that has not deterred behemoths Google and Yahoo! from the creation of their own unique cloud formations.
Incubation of the Cloud
Procedural Programming once ruled the software development world, bringing order to untamed lines of spaghetti code. As applications continued to grow in size and complexity, Object Oriented Programming (OOP) concepts surfaced, once again reigning in code mutations. Eventually, distributed applications struggled to best utilize the rapidly growing Internet, and new software designs took hold in the form of Service Oriented Applications (SOA).
More and more Service Oriented Applications were created over time, and soon there were hundreds of similar systems for such common tasks as authentication, user management, data retrieval, caching, queuing, etc. So many redundant designs were unnecessary and inefficient. SOA developers soon discovered these and other common design patterns across their applications, and this became the fertile ground where cloud computing was born.
Microsoft s initial attempt at a universal authentication system was a sign of things to come. Microsoft Passport was perhaps a bit ahead of its time. It was met with a healthy dose of skepticism, and its notable version 1 flaws stunted its growth and contributed to its near death. But the fundamental concepts underlying Microsoft Passport were sound; today, the renamed and revamped technology has been reborn as Microsoft Live ID. If more proof is needed that the concept was solid, look no further than the plethora of currently competing technologies. For example, Amazon, Google, and Yahoo! all have comparable authentication mechanisms, and there are notable open source options, as well (such as OpenID).
Common Cloud Formations
The oncoming clouds currently take many forms, and their future is foggy. But have no fear the impending changes all developers will eventually be forced to face are almost certainly for the better. In order to define the nebulous boundaries of the current crop of cloud services, perhaps it is best to first examine what they all tend to have in common.
To use the services provided by any of the cloud creators, it is first necessary to register (for free) and get a token/id/key to be associated with your account. This token is submitted with each Web service request as the primary form of authentication. It also is used to track your site s use of the cloud s services. Currently, most cloud services are in beta, so they are free for now. Amazon s services are the most mature, so they are the only major player daring to dip their toes extensively into the icy waters of customer billing. Its fees are nominal and are usage based; use their services only a bit and you ll pay little or nothing. If your Web site becomes the next hot thing, you ll likely be able to afford the larger fees that result. This seems only fair, because your site would be consuming a larger percentage of the cloud s resources.
More importantly, if your Web site becomes the next hot thing, you don t have to worry much about scalability. The cloud takes care of that. The mysterious cloud contains countless servers with a virtually infinite capacity, all waiting to spring into action at a moment s notice for whichever Web sites need them at the time. Therefore, any services provided by the cloud are theoretically bulletproof in regards to scalability, with automatic load balancing built in. If your Web site is entirely hosted in the cloud, scalability concerns are (again, theoretically) a thing of the past.
Microsoft and Google are both constructing server farms of awe-inspiring size near the cheap electricity provided by the dams of the Columbia River (near the Washington/Oregon border). These cutting-edge server farms have fat Internet pipelines and provide the foundation of their cloud services.
The cloud services provided by each company tend to promote the offerings of that company. For example, Amazon s Web services make it easy to query the products provided by Amazon.com, but they provide no direct support for browsing the product catalogues of its competitors. Likewise, Microsoft s cloud services make it easy to interact with a user s Microsoft Live Space account data, but offer no way to get at their MySpace data. Self interest is a commonality of every company discussed in this article; all their APIs tend to favor their own products and services to some extent.
Beware: Because each cloud provider has significantly different APIs, once you commit to one, you re pretty much stuck. For example, if you develop a Web application using Google s cloud services and then Google applies a new usage price or policy that is undesirable, there is no easy way to switch to (for example) Microsoft s services. Significant redesign and recoding would be necessary. Therefore, the following paragraphs are intended to help you choose the best path for your development needs.
When Service Oriented Applications became hot, Amazon.com was one of the first companies to release to the developer community a large array of potentially useful Web services. To this day, the number of Web services they provide continues to dwarf other major players.
As always, Amazon continues to support its many classic Web services that specialize primarily in querying Amazon.com s vast product catalog. Amazon s newer developer offerings are grouped into a few different cloud services. These services provide ways to programmatically store and retrieve data in the cloud and manage content. They also provide ways to process queries and other algorithms using cloud resources. A rich message queuing service also is provided.
Under Amazon s current pricing structure, most Web site operators would expect to be paying only pennies a month to use Amazon s many new services. Only heavily-trafficked sites would be likely to pay a bit more.
Amazon provides extensive online documentation for their services, as well as sample code, tutorials, and forums. Premium support options also are available.
Microsoft s Vision
Microsoft has traditionally been a leader in the software developer community. After all, Windows would never have been such a success if they hadn t managed to lure so many third-party developers into creating useful applications for it. They accomplished this (in part) by providing many free and cheap tools and support options for developers. This made it easier to develop applications for Windows than for competing platforms (at the time).
I give Microsoft full credit for continuing this tradition when it comes to cloud computing. Other than their aforementioned Windows success, I ve never seen Microsoft put so much money and effort into any other initiative. As a result, their cloud services are getting good fast.
Microsoft has grouped its offerings into a few different categories of cloud services: Microsoft s new .NET Services provide Access Control functionality (for security and authentication), Service Bus functionality (for gluing potentially disparate application pieces together), and Workflow Services (to enforce custom business rules).
Microsoft SQL Data Services also are provided to assist with data querying. Live Services provide access to a user s Microsoft Live account data, including their photos, contacts, alerts, etc. Before your application is allowed to access for the first time such data on a user s behalf, the user is prompted to approve such actions.
Microsoft s Azure Services also provide a selection of potentially useful services for data management, computations, batch processing, and more.
Microsoft also has been kind enough to provide Visual Studio integration for many of its services, including project templates and ASP.NET Web controls. Figure 1 lists the set of upcoming Web controls (current as of the November 2008 CTP).
Enables Windows Live ID authentication.
Extends the standard ASP.NET LoginView control with Windows Live ID support.
Provides a gateway to a user s Windows Live contacts list.
Allows interactive geographic maps to easily be added to an ASP.NET Web page.
Enables Windows Live Messenger functionality within a Web page.
Enables a rich media playing experience.
Figure 1: Microsoft s upcoming service-oriented ASP.NET Web controls.
As you d expect from Microsoft, a variety of resources are provided to help developers get started quickly. Extensive online documentation is available, as are SDKs, training videos and kits, FAQs, code samples, blogs, online forums, etc. (see Figure 2).
Figure 2: The ASPX declaration for Microsoft s Contacts Web control.
Google s Cloud Formations
Google has been a Web development leader nearly since its conception. When they speak, people listen. Its impressive accomplishments in cloud computing thus far suggest that s not going to change anytime soon.
Google s App Engine provides services for managing data, images, mail, users, authentication, and more. Small usage fees are applied to some of the more resource-hungry services.
Unfortunately, you must use the Python programming language to program with Google s App Engine. At least they provide demo videos, tutorials, and online documentation. Some other common resources also can be found, such as discussion groups, articles, sample code, and a FAQ.
Yahoo! has been struggling for years to regain the dominance it once held on the World Wide Web. Clearly it sees cloud computing as its next best chance to regain that prestigious position, so they are holding nothing back.
Yahoo! s extensive service library includes APIs for managing the user s Yahoo! address book, mail, messenger, authentication, and RSS feeds. There also are services that can be used to interact with the many content offerings provided by Yahoo!, such as shopping, HotJobs, Finance, Travel, etc. Other services include mapping features, weather, traffic, Flickr (photos), mashups, advertising, and, of course, searching.
The oncoming wave of cloud services cannot be ignored. While cloud services may not suit every application, from this day forward they should at least be considered as the foundation for any new application you find yourself designing.
Some companies are understandably hesitant about letting other companies manage their precious data, especially when that data is being stored in a mysterious cloud instead of the comfort of physically local computers. Some kinds of data may be more suitable for cloud storage, while other kinds of data may continue to be controlled by traditional company database servers.
Cloud services certainly have a lot to offer when it comes to application development. It can be liberating to offload scalability and load balancing concerns to companies that have nearly unlimited resources to manage such matters. In the future, your company may be able to retire its server farms and save oodles of cash by taking advantage of cheap cloud services.
Customers prefer using features with which they are already familiar. For example, logging in using their existing Microsoft Live ID credentials is generally preferable to having to memorize yet another user name and password combination. It can be annoying for users to have a separate photo library on every site, when one central photo library accessed by each of those applications would typically be preferable.
By taking advantage of cloud services, you can economically give users what they want. Envision creating applications that are free from the expenses associated with hardware, infrastructure, load balancing, and server management. This is just some of what cloud services has to offer to our collective futures.
Steve C. Orr is an ASPInsider, MCSD, Certified ScrumMaster, Microsoft MVP in ASP.NET, and author of Beginning ASP.NET 2.0 AJAX by Wrox press. He s been developing software solutions for leading companies in the Seattle area for more than a decade. When he s not busy designing software systems or writing about them, he often can be found loitering at local user groups and habitually lurking in the ASP.NET newsgroup. Find out more about him at http://SteveOrr.net or e-mail him at mailto:[email protected].
- Microsoft s Live Services: http://dev.live.com/
- Amazon Web Services: http://aws.amazon.com/
- Google APIs: http://code.google.com/
- Yahoo! APIs: http://developer.yahoo.com/
- OpenID: http://openid.net/