Ever since the Microsoft Professional Developer’s Conference in October 2008, I've been hooked on Windows Azure. I could see immediately that Windows Azure provided a way for developers to build applications that scaled to "Internet scale."
Before Windows Azure came along, I noted the following problems with applications:
- Installing a rack-mounted server in a data center takes a lot of time and effort. You have the cost of the physical device, provisioning of the server, endless meetings centered on getting the server online, and the installation of the application on the server. The last time I was involved in such a project, six weeks passed from the time the server was ordered until the server was available for the customer. Six weeks: not six days, but weeks. What if once your customer approved an application, you could have it deployed and operational in a few minutes?
- The number of web-enabled devices (phones, tablets, kiosks, and PCs) in the world only increases. I've never seen the number of devices go down. What happens if these devices are laser focused onto a site with little or no warning? Imagine that your application is featured in a media outlet like CNBC or Oprah. Although that’s a problem we all hope to have, you wouldn't have time to purchase new hardware for your web site. You would have but a few minutes to realize what is happening and to make any changes. You wouldn’t have time to buy new servers and get your application installed and running. What if you could detect that your web application was getting significantly increased traffic and you could scale up that application fairly quickly?
- When developing applications, I've had my run-ins with various IT organizations. Although these run-ins have been few, they have happened. These corporate IT groups, like networking and server support, have never understood the pain and agony involved in spending months, or years, crafting a solution only to have them stand up as obstructionists that want to take control and force me to make various additions, because they think it will somehow help them scale my application for their business unit to a higher level. Thankfully, a lot of these problems are behind me with Windows Azure.
- Some customers don’t want to worry about purchasing hardware, purchasing networking services, or dealing with backups.
- Does a startup that needs to focus on development really need to spend valuable time on configuring servers, administration, backups, and such?
- Don't let the hype fool you. Building applications that scale on Windows is not that hard, no matter what the Linux zealots tell you. The features necessary aren't talked about a lot, but they are there. With Azure, the features are front and center for you to build applications that scale up.
The Cloud Flies High
I'm sure that everyone, or at least the readers of this magazine, has been hearing about cloud computing. It’s had various names over the years; however, the premise has been the same. Basically, you pay a set amount of money per month for a service online. The provider of that service is then responsible for hardware, software, backups, and such. Cloud computing started with companies that provided defined solutions based on a specific application, with Salesforce.com being the poster child for this approach.
During the past few years, the market for cloud computing providers to make their products available in a generic way, so that any customer can come in and run their applications, has really taken off. Amazon pioneered this solution with its EC2 product, and many others are now on board.
Thankfully, Azure has taken a slightly different direction. With Amazon's EC2 product, you’re still in charge of managing the virtual instance that Amazon provides. Although that's not a major issue for most companies, managing servers, real or virtual, is time away from development—and time away from development is a cost to your organization. That cost might not show up as a line item in a budget analysis, but it is a cost none the less. One feature that has drawn me to Azure is the ability to run an application in an instance of Azure, with no requirement to touch the console of the instance. For me, this is a huge win in the area of cost of ownership.
My Experience with Azure
I have found Windows Azure to be a great experience:
- I can show up with my credit card and have my application up and running in a few minutes.
- The Azure team and community is very helpful. Although it was a while ago, I still remember the Saturday that I spent emailing, until midnight my time, with Steve Marx about a bug I was having. It ended up being a bug with the hosted Azure fabric.
- Features, Features, Features. The Windows Azure team is constantly listening to its community and providing its customers with new features. Recently, the team unveiled a new set of features. Personally, I want to be with a group that interacts with its community, listens to feedback, and then provides features and updates based on that feedback. Obviously, Microsoft has the basic support for MVC, WebForms, and other important parts of its platform. What if you need support for NoSQL, SQL Server, PHP, Java, Eclipse, and virtual machines? Those features have been added based on customer feedback. Microsoft is definitely acting like its "all in" to me.
Who Should Jump on Azure Now?
Questions my customers ask me include: Where is Azure going? Should we be using it? Does it make sense for us? What should we do?
With an eye on my crystal ball, here’s where I think things are headed:
- Azure lets developers start with a fairly small commitment in cost, with no hardware to buy and set up. I see startups committing to this approach in a big way. I’m currently launching a startup going, and we’ll be taking this route.
- Developers who have applications with a highly variable need for CPU resources will increase their use of Azure. This will include online retailers that sell large amounts of product during Christmas or similar times during the year, but at other times might not have 5 percent of that peak traffic.
- Along with online retailers, what about applications that can make use of high performance computing services? Imagine trying to do weather forecasting on a localized basis where a large amount of data and CPU resources are necessary over a small amount of time, just like with an online retailer. There’s no sense in purchasing hardware in this scenario, or potentially waiting months to have time with a supercomputer. When the work is completed, the CPU resources go away.
- If you work in a company whose IT services group is overloaded, and you’re building a departmental application, this application will be deployed in increasing numbers to Azure.
Granted, some problems, such as business/legal issues regarding data rules and privacy, still need to be solved—as well as some simple technical issues, such as how to transfer a terabyte, or worse, a petabyte, of data into the cloud. With some patience, both of these challenges are solvable.
This is a great time to be a developer solving problems and adding to our own knowledge. Microsoft has a great platform with Azure. Microsoft is "all in" in the cloud and so am I.
Wallace B. "Wally" McClure ([email protected]) is a Microsoft MVP, ASPInsider, member of the national INETA Speakers Bureau, author of seven programming books (including two about MonoTouch), and a partner in Scalable Development. Currently, Wally is in the final stages of writing an Android programming book. He blogs at www.morewally.com and co-hosts the ASP.NET Podcast.