Microsoft Azure and Cloud Computing...What it Means to Me and
Information Workers
Written by: Luke Chung,
President

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.
Cloud Computing is a Revolutionary Event in our Industry
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.
How Cloud Computing Differs from Hosting an Application at an Internet
Service Provider (ISP)
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.
Issues Around Cloud Computing
Cloud Computing Benefits
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.
Cloud Computing Concerns
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.
Commoditizing Application Hosting
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.
How
Cloud Applies to the Microsoft Access and Office Community
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.
How
We're Using Microsoft Azure and Microsoft Access, Excel, and Visual Studio
.NET
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.
Microsoft Azure Pricing
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:
- Windows
Azure which is for hosting .NET applications and can
use its own storage (similar but not identical to storing files on disk).
- SQL Azure for storage in SQL Server databases
These are the
primary costs of creating an Azure application (North America and Europe
pricing):
- Windows Azure Compute Instances ($0.12 per hour to host an
application)
- Windows Azure Storage ($0.15 per GB per month)
- Data Transfer ($0.10 to $0.15 per GB)
- SQL Azure ($10 per database per month up to 1GB; $50 for 5 GB; $100
for 10GB, etc.)
Compute Instance Pricing is High
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?
- It adds up to $86 a month because compute time is calculated based
on availability not usage, even if
no one is using the application.
- Every application incurs a compute instance. For instance a web site
and a web service would count as two compute instances. An ISP model for
having a dedicated server where many applications can reside is often
less expensive than this.
So for lightly used applications which don't benefit from many of the
great features Azure offers, Azure may be more expensive than platforms
offerred by ISPs.
SQL Azure is Very Reasonable
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.
Challenges and Costs Management Issues We've Encountered with Azure
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:
Development Issues with Azure
- Microsoft .NET applications that directly interact with the hard disk need to
be modified before being ported to the cloud since the virtualization
eliminates the local disk. Depending on how complex it is, this can take
considerable effort.
- Updating an application requires a complete upload rather than just
the difference. Regardless of how small a change (fixing a typo on a
static HTML page or adjusting a style sheet setting), the entire .NET
application needs to be republished each time. Depending on the size of
the application, this can take a while.
- The system does not automatically add compute instances based on
demand. It'd be nice to specify when a compute instance hits a
certain level of usage that additional instances would be added and vice
versa.
Unfortunately, that's not the way Azure works. You need to specify
the instances you want to buy and set it. You're then charged that
amount regardless of usage. That beats physically adding more machines
yourself, but hardly the promise of automated matching of resources to
demand. There are programmatic ways to monitor the usage and set the
instances, but that requires custom development.
- No SMTP server. If you need to send email, even administrator
alerts, Azure does not expose an SMTP server that you'd normally expect
from a server machine. This means emails need to be bounced through your
own server or a 3rd party service, which opens up the possibility that a
breakdown occurs in two places which may be difficult to diagnose.
- SQL Azure is not the same as hosting your own copy of SQL Server.
Features such as transaction logs, query optimization (reviewing
execution plans), dynamic management views (DMVs), and querying across
multiple databases are not supported.
- The maximum SQL Azure database is 50 GB in size. Your application
can actually work with multiple databases, so you can go beyond the 50
GB barrier, but
- SQL Azure does not support the backup command so you'll need to
create your own solution if you need to keep an archive of your
database. Microsoft assures us that the database is not lost since it's
stored in multiple locations but a backup may be needed to keep a
snapshot of the data to avoid accidental changes or for legal reasons.
Cost Issues with Azure
- The compute instance is based on each application and not actual
usage. As a result, it's not truly 'Pay-as-you-go' although Microsoft
would argue that it's available during the entire 24/7 time.
- This pricing model is problematic in a development/test
environment. If you're not using the application, charges still
accrue. It'd be nice to disable an application or web service when
it's not in use (like when the developers go home), but that's not
an option. To stop the compute costs, the application needs to be
removed from Azure.
- We originally thought Azure would let us host multiple legacy
applications where we simply paid for the storage and could turn
them on when we needed to work on them, but that's not viable with
this pricing structure either
- Every service (not application) requires a compute instance, so
one application which may contain a web site and web service would
require two instances, even if the usage level of both were very
low.
- Pricing for SQL Azure is based on the number of databases. $10 a
month for a 1 GB database is very reasonable but what if you have lots of small
(say under 10 MB) databases? It doesn't make sense to pay $10 for each,
when they easily fit under the 1 GB limit.
- Ideally, SQL Azure's pricing model would be based on total size
rather than number of databases.
- Unfortunately, the pricing
encourages you to put multiple small databases into one database
using naming conventions to separate the groups of tables.
- The pricing for data storage in the Windows Azure is 67 times lower than
in SQL Azure ($0.15 vs. $10 per GB per month). This is most important
when dealing with storing large files such as videos, which are cheaper to store outside the
SQL database (assuming you're already paying for the monthly compute
instance of ~$80).
Conclusions
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.
Additional Resources
for Microsoft Azure and SQL Azure
FMS Technical Papers
Microsoft
Azure, SQL Azure, and Access in Action
Microsoft Resources
|