Whenever a new platform style appears, independent software vendors need to understand how it might help their business. When personal computers first became popular, for instance, successful ISVs adapted their applications to this new kind of computing platform. More recently, mobile phones have emerged as a platform, with many ISVs creating mobile clients for their applications.Cloud platforms represent another new options that ISVs must understand and evaluate. For Windows ISVs, this means understanding the Windows Azure platform. Can it improve your business? If so, how? What follows walks through a simple set of questions to help you make the right decision.

The questions to ask can be grouped under two main headings. First, can using the Windows Azure platform improve your applications? Answering this question requires looking at what the platform offers in the context of your technology and your market. The three sub-questions listed above can help you do that. If the answer to this first question is yes—if you believe that using the Windows Azure platform can improve your current and/or future applications in some way—you must now decide whether using the platform makes financial sense for you. Put bluntly, can using this cloud platform help you make more money? Answering this question requires understanding how the platform’s services are priced, then getting a sense of typical monthly costs for using it.

One way to improve your offerings might be to exploit cloud storage. Because the Windows Azure platform runs in very large, highly automated data centers, it offers a nearly unlimited amount of low-cost, reliable storage. The options include: Windows Azure Blobs, which allow storing binary data. Blobs can be big—up to a terabyte each—and they’re quite inexpensive. SQL Azure Database, which provides standard relational storage. Based on SQL Server, it’s a familiar environment that’s easy to access from existing applications. While this storage can be accessed by applications running on Windows Azure, it can also be accessed by on-premises software. This means that existing applications can take advantage of the low cost and high availability of cloud storage without themselves running in the cloud. Here are a few examples of how a packaged application installed in a customer’s data center or on desktops might take advantage of storage provided by the Windows Azure platform: The application could back up its data to Windows Azure blobs. Doing this might be less expensive and more reliable than storing backed-up data on premises. An application that stored (and perhaps delivered to users) large amounts of unstructured data, such as video, might store that data in Windows Azure blobs. Again, the cloud option might cost less and provide higher availability than storing this data on premises. An application that needs to share relational data across multiple instances might store that data in SQL Azure Database. This data can then be accessed via the Internet by applications running anywhere in the world. An application that currently requires customers to purchase an on-premises license for SQL Server might be less expensive to run using SQL Azure Database instead.For many ISVs, making a large bet on a new platform feels uncomfortable—it can seem risky. It sometimes makes more sense to start small, then build on this experience. Adding cloud storage to an existing application is an excellent way to do this.

Cloud storage can have clear advantages. Yet it’s important to realistically assess the pros and cons from both a technical and a business perspective.Will performance be good enough, for example? Since the Windows Azure platform runs in Microsoft data centers, reading and writing data requires a network round trip. The platform runs in multiple data centers, including two each in North America, Europe, and Asia, so delays aren’t typically an issue. Microsoft also provides a content distribution network (CDN) for blobs, improving performance for frequently accessed binary data. Still, you need to convince yourself that performance won’t be a problem.Other technical issues also need to be addressed. For example, a single database stored in SQL Azure Database can’t exceed a maximum size. An ISV using this cloud database technology also needs to understand what kind of query performance to expect under various loads.There are also business concerns, which can be significant. Will your customers feel secure with their data stored in the Microsoft cloud? And do local laws and regulations permit storing this type of data in a data center that might be in another country? Every ISV needs to understand these issues, making sure that cloud storage is a viable option for what they’d like to do.

Another way to use the Windows Azure platform from an existing application is to do computation in the cloud. In Windows Azure, this means creating one or more instances, each of which runs as its own virtual machine. Instances come in various sizes, and as always with this platform, you pay only for what you use.Here are a few examples of how an existing on-premises application might use Windows Azure’s compute capabilities: An application that needs a significant amount of processing power, such as a financial modeling system, might get it from Windows Azure. Using instances for this means paying only for the compute power that’s used—you no longer need to have enough physical machines on hand to handle peak loads. A Web application that has elastic demand, such as an online ticketing system, might rely on the Windows Azure compute service to provide extra capacity when needed. Sometimes called cloudbursting, this can be less expensive than maintaining a large but underutilized data center. An application to which you’re adding functionality might run that new code on the Windows Azure platform. For example, suppose you’d like to add a reporting service to an existing on-premises application. You might choose to build that service as a standalone module running on Windows Azure, letting it be accessed as needed by on-premises software running at various customer sites. A frequently updated module might be built on the Windows Azure platform, then accessed as needed by your on-premises applications. Doing this would let you make changes in a central place without needing to update the installed versions running at your customers.

As with cloud storage, there are both technical and business issues to consider before using Windows Azure’s compute services. Windows Azure is based on Windows, so your organization’s existing development skills transfer easily to this cloud environment. Still, there are some differences. For example, Windows Azure doesn’t allow installing or running applications in admin mode. (This limitation is what allows the platform to manage the environment for you, and so it’s a key part of lowering your costs.) This isn’t generally a problem for new software built for the platform, but much existing Windows software requires admin mode. This limitation also applies to any supporting software that your application needs. And while Windows Azure is based on Windows Server, it doesn’t include everything that’s in the on-premises version of the operating system. It’s important to make sure that both your intended code and any supporting software that code needs can run on Windows Azure. Using cloud compute also raises some non-technical issues, most of which echo the concerns with cloud storage. Do you (and your customers) trust the availability and security of the Windows Azure compute services? And are there are laws or regulations that prohibit running code in data centers outside national boundaries? Using cloud compute requires addressing these concerns.

Virtually all ISVs should think about how they might improve their applications by using cloud compute and/or cloud storage. Many ISVs should also think about whether they ought to create a fully cloud-based version of one or more of their existing applications. Commonly referred to as Software as a Service (SaaS), this style of application can run entirely on the Windows Azure platform. Many firms today provide SaaS applications, including Microsoft, which offers CRM Online, SharePoint Online, and others.SaaS applications can be very attractive to customers. They allow trying an application before buying it, which lets the customer make sure the app has value before spending much money. And rather than pay a big license fee up front, pricing for SaaS applications is commonly usage-based. A customer can start small, then see their bill rise only when their use of the application—and the business value they’re getting from it—also rise. Lowering risk and tying costs more closely to business value are both things that customers like.Accordingly, some ISVs believe they can compete more effectively in their market with a SaaS application. Others are pushed into doing SaaS when a competitor rolls out a cloud-based offering. Still others choose SaaS as a vehicle for entering wholly new markets. Whatever the motivation, supporting SaaS applications is one of the primary goals of the Windows Azure platform. Even a firm that already provides a SaaS application should evaluate whether it makes sense to move that application to the Windows Azure platform. Why build and support your own SaaS infrastructure when Microsoft can provide one for you?

Thinking about building a SaaS application on the Windows Azure platform raises both technical and business issues. On the technical side, a fundamental issue is whether a cloud platform provides a better foundation for SaaS than a more traditional environment, such as a hoster or your own data center. The key issues here include cost, availability, and support, and making a good decision requires understanding the value of the elasticity, scalability, and reliability that the Windows Azure platform provides. The technical considerations discussed earlier for cloud computing also apply here. For example, it’s important to determine whether any necessary existing code and supporting software for the SaaS application can be ported to the Windows Azure platform. (It’s worth pointing out that a feature called Windows Azure Drives uses blob storage to provide a standard Windows file system, making it easier to move some existing applications to the cloud.)The business issues of SaaS are even more significant. Moving to a SaaS model changes how an application is priced—there’s no longer a big up-front license fee. It can also change the sales process—the bulk of a sale’s revenue might now appear years after the sale is made. These are both significant issues to think through before jumping into the SaaS pool. Also, as with other cloud computing scenarios, creating a SaaS application can raise trust issues. Will your customers feel comfortable having their data in the cloud, perhaps on the same physical servers as data from their competitors? And if they do, are there legal or regulatory barriers to doing this?Making the move to SaaS is a big decision. Still, given how attractive this approach is to customers, more and more ISVs are moving in this direction. For Windows ISVs entering the SaaS world, the Windows Azure platform is a natural foundation.

If your answer to all of the questions asked so far is no—if you don’t believe your applications can be improved by cloud storage or cloud compute, and you don’t want to build a SaaS application—then there’s no need to go on. If your answer to any of those questions is yes, however, you must next determine whether using the Windows Azure platform makes financial sense for you. To do this, you need to understand how the platform is priced, then get a feel for the monthly bill for some typical scenarios.

With the Windows Azure platform, you pay only for what you use. The slide above shows an abbreviated summary of Windows Azure pricing in US dollars. Some points worth making: Instances come in various sizes, ranging from a single-core virtual machine to a quad-core virtual machine. While blob storage has a small charge for access to data, relational storage does not. The monthly price for relational storage is based solely on how much data is stored. All data moved into and out of Windows Azure data centers incurs bandwidth charges. However, an application running on Windows Azure and accessing, say, blob data in the same data center will not incur bandwidth charges. Due to significantly higher costs, bandwidth charges are higher in the Asia/Pacific region: $0.30/GB in and $0.45/GB out.These are standard consumption prices. There are also discounts available, including price breaks for Microsoft partners and discounts offered as part of an MSDN subscription.When doing price comparisons between the Windows Azure platform and other alternatives, it’s important to compare apples to apples. With Windows Azure, for example, Microsoft takes on the management burden—you don’t need to create and administer virtual machines, install patches, and so on. Many alternatives, both hosting options and other cloud platforms, leave this to you, which implies higher costs. Comparing prices accurately requires understanding exactly what services are included for a given price.

To get a feeling for typical costs, it’s useful to look at a few examples of monthly charges for using the Windows Azure platform. The slide above shows how these might look for storing and accessing a terabyte of video in blobs. Here’s a more detailed breakdown of the monthly costs: Blob storage charge for one terabyte (1,000 gigabytes) at $0.15 per gigabyte: $150/month Blob access charge for 10,000,000 operations at $0.01/10,000 operations: $10/month Outbound bandwidth charge for 500 gigabytes at $0.15 per gigabyte: $75/month Inbound bandwidth charge for 100 gigabytes at $0.10 per gigabyte: $10/month

Suppose an ISV chooses to have an application store customer records in SQL Azure Database rather than in an on-premises SQL Server. Example costs for this are shown above.Here’s a more detailed breakdown : SQL Azure Database charge for a 10 gigabyte database: $99.99/month Outbound bandwidth charge for 10 gigabytes at $0.15 per gigabyte: $1.50/month Inbound bandwidth charge for 1 gigabyte at $0.10 per gigabyte: $0.10/month

Suppose an ISV chooses to create a reporting module, built on the Windows Azure platform, that customers use as part of an on-premises application. The example above shows the cost for creating 300 reports each month. Notice that the total works out to a little more than $2 per report.This scenario assumes that each report requires 10 gigabytes of data to be transferred in, with 500 megabytes of report data transferred out. The 10 gigabytes needed for each report are stored for only one day, then deleted. This example also assumes that two medium Windows Azure instances run continuously to receive and process report requests. (At least two instances must be running to be covered by the Windows Azure service level agreement.) Here’s a more detailed breakdown of the costs: Windows Azure charge for two medium instances, each running for 720 hours at $0.24 per hour: $345.60/month Blob storage charge for 100 gigabytes at $0.15 per gigabyte: $15.00/month Blob access charge for 30,000,000 operations at $0.01/10,000 operations: $30/month Inbound bandwidth charge for 3,000 gigabytes at $0.10 per gigabyte: $300/month Outbound bandwidth charge for 150 gigabytes at $0.15 per gigabyte: $22.50/month A note on storage:Storage costs are averaged over the month, so if 30 customers each store ten gigabytes for just one day, the charge is equivalent to one customer storing ten gigabytes for 30 days.

Once you’ve determined that using the Windows Azure platform can improve your business, the next thing to do is a proof of concept. Choose the application you’d like to start with—perhaps one that will derive especially high value from using the cloud or an application that poses a low risk for your business—and convince yourself that the technology works as expected.When you’re happy with the results of this phase, go ahead and create a production version of the application using the Windows Azure platform. When the app is ready, deploy it to your customers. Then choose the next application that can benefit from the cloud, and repeat the process.Cloud platforms are an important step forward. In the not-too-distant future, applications that don’t use the cloud in some way will be rare—cloud computing will be completely mainstream. Today, though, it’s new, and so early adopters can gain a competitive advantage. Don’t delay—now is the time to understand how the Windows Azure platform can improve your applications and your business.