With Microsoft's launch of their Windows Azure and SQL Azure cloud platforms, and cloud offerings from Amazon and Google, there's certainly been a lot of news and buzz about cloud computing. I figure I might as well chime in with our experience and impressions of it, and how it impacts the information worker community.
We at FMS are very excited about cloud computing and started developing solutions using Microsoft Azure including SQL Azure well before it was released to the general public. I feel cloud computing represents the next big platform change in the software industry and the most significant transformation since the introduction of the Internet in the mid-1990's. This will be massive. Not that it's a perfect solution as I'll describe later, but because there are so many advantages to cloud computing and so many hassles to what people are currently doing today.
For information workers who create relatively small but important applications to improve productivity, cloud computing promises to offer a whole new way to deliver robust solutions with enterprise quality infrastructure. Most people and groups have never had the ability to use such resources at any price, but cloud computing offers it at a very economical cost. For example, you'll be able to create a Microsoft Access application with the queries, forms, and reports that you like and link your Microsoft Access database to data stored in SQL Azure on the cloud. Your database can be distributed to others who can link to the shared database in the cloud. Of course it's a bit more complicated than that but it's an option that didn't exist so easily before and will surely open up whole new solutions.
There are many definitions of cloud computing and some people think it's simply having a shared or dedicated machine at an ISP. Granted that machine is hosted in a data center that's more secure with backup power and high-speed internet connections. And it's certainly better than a box sitting in the network room down the hall, but that's not what we think about when we discuss cloud computing. That's just an off-site hosting of your computer.
The cloud computing that excites us are the solutions like Microsoft Azure where the application resides on multiple machines automatically. This provides superior reliability and fault-tolerance compared to hosting in one server. It's designed to automatically adjust its resources as demand increases or decreases whether it's computing power, bandwidth or storage. Cloud providers like Azure also take advantage of edge networks to store/cache data closer to recipients to reduce congestion centrally. These are truly enterprise and multi-national features that are nearly impossible to replicate on your own or with local ISP hosting companies.
Organizations are wrestling with the implications of cloud computing, how it can be used, costs, scalability, security, control, etc. The immediate advantages are huge. Why purchase hardware and software licenses, find a place to store the machine, hook it up, monitor it, and maintain it over time? All ways to minimize those costs, hassles, downtime, and headaches are definitely worth considering. Being able to add capacity on demand, support large numbers of users, and only paying for usage is very appealing. After all, to build a robust system today means satisfying the highest potential load (plus a safety factor), which means the system is under-utilized most of the time.
With cloud computing and Microsoft Azure in particular, there's very nice support for creating a staging/testing instance versus your production build. Being able to test new versions and automatically switch to production mode is very valuable and appealing since minimizing downtime can save considerable money. That said, situations requiring structural changes to the SQL Server database, requires scripting those SQL changes which will require temporarily disabling the application for those changes.
On the flip side, organizations are extremely worried about security when it comes to cloud computing. With the application and data in an unknown location or multiple locations, managed by unknown people, these concerns are definitely valid. For critical, sensitive data, we completely understand the need to control it internally. However, for most organizations, there are plenty of applications and needs that don't require such security where productivity, time to market, and decision making are the bottleneck. Cloud computing may offer solutions at a fraction of the time and effort versus alternatives.
Cloud computing will significantly change the way we create and deploy applications. It promises to commoditize the hardware, software, and storage of applications and data. Just like the early days of the light bulb required you to host your own power generators, today's standard process of buying, configuring, and hosting machines locally will likely be the exception rather than the rule. Cloud computing will convert application hosting into a utility like electricity or water.
I have no idea where my electricity or water comes from or how it's produced, itís just always available at the switch of a button or faucet. I'm happy it's there when I want it, there seems to be an endless supply, and I am willing to pay for all that I use. It's something I really don't think about.
That's what I expect Cloud Computing will do for software hosting. Applications and data will reside in the cloud in multiple simultaneous, fault tolerant, and secure locations that will scale with demand. The utility companies, in this case Microsoft, Amazon, and Google, etc., will provide the services in a much more cost effective and reliable manner than any non-specialized organization can provide on their own.
Cloud computing should be a huge benefit to the information worker and Microsoft Access/Office users. Instead of worrying about the hardware and deployment issues around applications, one can focus on building the solution and using the enterprise quality cloud platforms which previously didn't exist or were prohibitively expensive and difficult to use. With Microsoft Access 2010 and SharePoint 2010, Access applications (in limited form) can be deployed over the Internet.
With Microsoft Windows Azure and SQL Azure, one can create .NET applications and/or SQL Server databases in the cloud.
Over the past year, we've created Azure solutions using Visual Studio .NET, SQL Server, Access and Excel. Our EzUpData software as a service is a web site to let you easily share files from your desktop with people over the internet. It lets you generate and upload data and files directly from Access, Excel, and .NET applications. For instance, you can publish all your customers' invoices from an Access report as PDF files, and have your contacts log into your branded public web site to view them. They will only view their own files. With the ability to specify publish and expiration dates, you'll be able to easily control the latest files your contacts see, and eliminate the need for them to search through their Inbox for files you've sent them.
Without Azure, we would have had to invest significantly more (and charge more) to provide the same service. Visit our EzUpData web site for more information including a free trial.
We find Microsoft Azure Windows and SQL Azure to be very valuable and useful platforms, and reasonably priced for our EzUpData's enterprise level needs. However, the pricing may be higher than alternatives depending on your situation and needs. Microsoft divides the costs into two primary parts:
These are the primary costs of creating an Azure application (North America and Europe pricing):
At $0.12 an hour, compute instances seem pretty reasonable for running a computer/web site. The application can be a .NET solution, web services, etc. Why is this a problem?
So for lightly used applications which don't benefit from many of the great features Azure offers, Azure may be more expensive than platforms offered by ISPs.
If you only want Microsoft to host a SQL Server database for you and not an application, the SQL Azure offer for $10 a month (plus data transfer) is very reasonable. You won't have to pay any compute instances, and a 1 GB database is a lot of data if it's only text and numbers.
Our experience over the years working with new platform and bleeding edge technology always encounters challenges. Here are some items to be aware of with Azure:
While there may be some limitations and cost issues around SQL Azure, we still feel it's a revolutionary platform that will simply become more and more significant over time. The advantages are simply too significant and the trend is for lower costs and more features over time.
For the information worker who has always had limited options when it comes to robust, enterprise quality platforms, cloud computing opens a whole new opportunity to build better applications. For small organizations and entrepreneurs, cloud computing offers the ability to deliver enterprise quality solutions. By focusing on the application and less on the platform, we can expect many innovative solutions to appear on the cloud at very competitive prices. Good luck!
Blog about it with me here.