|By Kevin Hoffman||
|September 12, 2009 05:15 PM EDT||
Cloud Hosting Journal on Ulitzer
Yesterday a friend of mine was asking me what I've been doing lately in my spare time. When I mentioned that I'd been doing a lot of messing around with Windows Azure, he was naturally curious. After explaining what Azure is, he asked me what the difference was between Windows Azure, a cloud computing environment, and traditional web hosting scenarios.
On a really high level, he's got a valid point : With Azure you can develop your application offline locally and then when you're done you can publish it to a remote host. To the casual observer, this looks exactly like what you might do with a web hosting company that provides space on an IIS box and let's you use ASP.NET and maybe even a little SQL server database.
The beauty, of course, is that to the end user it doesn't matter. To someone using your website, they don't (and shouldn't) care whether your website is being hosted in Windows Azure or a traditional web hosting server environment. The real difference is the underlying plumbing.
In a traditional web hosting environment, the company to whom you're paying your monthly fees has a bunch of Windows Server boxes (virtual or otherwise). Each of these has IIS on it and the .NET Framework. When you rent a website space from them, they create a virtual directory/IIS application (possibly even an App pool if they're nice) for you. So, on their system your application might be at server203/customer909312093 and they very nicely provide a DNS mapping so that www.yourapp.com points to that location on their system and the end users never know about how this plumbing works. The key architectural points to consider here at that there is a single point where your application resides - 1 IIS server, 1 app pool, 1 application/virtual directory within that pool. There is a single SQL server instance, also hosted in a single physical location, and a single database within that SQL server instance that contains your stuff. It is a classic example of the client/server model, with the server parts being hosted by the web host company and the client parts being browsers and other web consumers.
Cloud computing is different. By its very nature it is distributed. When you develop a web application in Windows Azure, there is a chance that there might be 10 different instances of your application running in 10 different data centers throughout the world. This application could be pulling data from partitioned storage in 5 different data centers throughout the world. There can be 5 different instances of the "engine" (a worker role; C# class) running in 5 different data centers, all working on processing the information that your application is taking in and spitting out. Writing a scalable, robust, reliable application in Azure involves being mindful of the architecture of "the cloud", but you don't need to worry about things like how to implement hot failover. You don't have to worry about things like what happens when your web-hosted site gets crushed under the "Digg" effect or "Slashdotted" - if that happens on Azure you just go to the admin site and bump up the number of running instances of your web role and maybe your worker role (you can scale them differently).
Azure is a game-changer. It completely changes the way people think about building scalable and reliable web applications available on the Internet. In addition, other Azure services like the .NET Service Bus allow websites sitting "in the cloud" to securely and reliably communicate with servers sitting inside your corporate infrastructure without opening firewall ports or causing security problems. This allows scenarios like you being able to build an e-Commerce website that sits in the cloud and it can communicate new orders directly to your internal fullfillment system without requiring you to create a gap in your security. The list of scenarios is endless.
The bottom line here when thinking about web hosting vs. Azure is this: Do you want to put up some HTML that might have a limited amount of interactivity or are you trying to publish an actual application? If you want to build an application in the cloud then Azure is your tool... it's not a tool, it truly is an Operating System - an Operating System and SDK for building cloud applications.
Obviously I will be posting more details about Azure, cloud computing, and code samples :) Some of what I've got planned is still under wraps and I can't spill the beans just yet.
- Where Are RIA Technologies Headed in 2008?
- PowerBuilder History - How Did It Evolve?
- Creation and Consumption of Web Services with PowerBuilder
- Cloud People: A Who's Who of Cloud Computing
- DDDW Tips and Tricks
- Cloud Expo 2011 East To Attract 10,000 Delegates and 200 Exhibitors
- Working with SOA & Web Services in PowerBuilder
- Dynamically Creating DataWindow Objects
- OLE - Extending the Capabilities of PowerBuilder
- Cloud Expo and The End of Tech Recession