Cloud Computing with Microsoft Azure and SQL AzureMicrosoft 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.

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.

Microsoft Access and Cloud ComputingFor 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.

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.

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.

Privately Share Your Files Over the Intern et

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:

  • 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 ($5 per database per month up to 2GB; $15 for 250 GB, 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 offered 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.

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. $5 a month for a 2 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 $5 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).

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!

FMS Development Team Blog Have any suggestions or comments? Head to our blog post Microsoft Access and Cloud Computing with SQL Azure Databases and leave us your feedback!

Table Design

Query Design

Form Design

Form Tips and Mistakes

Copy Command Button and Keep Picture

Module VBA to Forms and Controls

Form Navigation Caption

Resync Record in a Subform

Synchronize Two Subforms

Multiple OpenArgs Values

Late Bind Tab Subforms

Subform Reference to Control Rather than Field

Tab Page Reference

Shortcut Keys

Combo Box Top 6 Tips

Properties and Validation

Select First Item

Cascading Combo Boxes

Zip, City, State AutoFill

Report Design

Suppress Page Headers and Footers on the First Page of Your Report

Add the NoData Event

Annual Monthly Crosstab Columns

Design Environment

Add Buttons to the Quick Access Toolbar

Collapse the Office Ribbon for more space

VBA Programming

Basics: Forms and Controls

Run VBA Code from a Macro

Use Nz() to Handle Nulls

Avoid Exits in the Body of a Procedure

Shortcut Debugging Keys

Set Module Options

Math Rounding Issues

Rename a File or Folder

Avoid DoEvents in Loops

Age Calculations

Weekday Math

Send Emails with DoCmd.SendObject

Source Code Library

Microsoft Access Modules Library

Microsoft Access Modules

VBA Error Handling

Error Handling and Debugging Techniques

Error Number and Description Reference

Basic Error Handling

Pinpointing the Error Line

Performance Tips

Linked Database

Subdatasheet Name

Visual SourceSafe


Runtime Downloads

Simulate Runtime

Prevent Close Box

Disable Design Changes

Broken References

Remote Desktop Connection Setup

Terminal Services and RemoteApp Deployment

Reboot Remote Desktop

Missing Package & Deployment Wizard

Avoid Program Files Folder

Unavailable Mapped Drives

Microsoft Access Front-End Deployment

System Admin

Disaster Recovery Plan

Compact Database

Compact on Close

Database Corruption

Remove 'Save to SharePoint Site' Prompt from an Access Database

Class Not Registered Run-time Error -2147221164

Inconsistent Compile Error

Decompile Database

Bad DLL Calling Convention

Error 3045: Could Not Use

Converting ACCDB to MDB

SQL Server Upsizing

Microsoft Access to SQL Server Upsizing Center

Microsoft Access to SQL Server Upsizing Center

When and How to Upsize Access to SQL Server

SQL Server Express Versions and Downloads

Cloud and Azure

Cloud Implications

MS Access and SQL Azure

Deploying MS Access Linked to SQL Azure

SQL Server Azure Usage and DTU Limits

Visual Studio LightSwitch

LightSwitch Introduction

Comparison Matrix

Additional Resources

Connect with Us


Free Product Catalog from FMS