Whether application runs on a local system, or over the Internet (commonly referred to as cloud), or both, some kind of application platform is required. An application platform can be thought of as anything that provides developer-accessible services for creating applications. Microsoft’s Windows Azure platform (originally known as the Azure Services Platform) is a group of cloud technologies, each providing a specific set of services to application developers. The Windows Azure platform can be used both by applications running in the cloud and by applications running on local systems (as shown in the figure below).
The components of the Windows Azure platform include:
1. Windows Azure: Provides a Windows-based environment for running applications and storing data on servers in Microsoft data centers.
2. SQL Azure: Provides data services in the cloud based on SQL Server.
3. .NET Services: Offers distributed infrastructure services to cloud-based and local applications.
Here we will discuss the details about each of the components of Azure Platform:
1. Windows Azure: At a high level, Windows Azure is a platform for running Windows applications and storing their data in the cloud. It runs on a large number of machines, all located in Microsoft data centers and accessible via the Internet. A common Windows Azure fabric knits this plethora of processing power into a unified whole. Windows Azure compute and storage services are built on top of this fabric.
Windows Azure Components:
a. Compute: The Windows Azure compute service is based, of course, on Windows. For the initial availability of this service, Microsoft allowed Windows Azure to run only applications built on the “.NET Framework”. Today, however, Windows Azure also supports unmanaged code, letting developers run applications that aren’t built on the “.NET Framework”. In either case, those applications are written in ordinary Windows languages—C#, Visual Basic, C++, and others—using Visual Studio 2008 or another development tool. Developers can create Web applications using technologies such as ASP.NET and Windows Communication Foundation (WCF), applications that run as independent background processes, or applications that combine the two.
b. Storage: Both Windows Azure applications and on-premises applications can access the Windows Azure storage service, and both do it in the same way: using a RESTful approach. The underlying data store is not Microsoft SQL Server, however. In fact, Windows Azure storage isn’t a relational system, and its query language isn’t SQL. Because it’s primarily designed to support applications built on Windows Azure, it provides simpler, more scalable kinds of storage. Accordingly, it allows storing binary large objects (blobs), provides queues for communication between components of Windows Azure applications, and even offers a form of tables with a simple query language. (For Windows Azure applications that do need traditional relational storage, however, the Windows Azure platform provides SQL Azure Database, described later.) Running applications and storing their data in the cloud can have clear benefits. Rather than buying, installing, and operating its own systems, for example, an organization can rely on a cloud provider to do this for them. Also, customers pay just for the computing and storage they use, rather than maintaining a large set of servers only for peak loads. And if they’re written correctly, applications can scale easily, taking advantage of the enormous data centers that cloud providers offer.
c. Config: Achieving benefits mentioned above requires effective management. In Windows Azure, each application has a configuration file. By changing the information in this file manually or programmatically, an application’s owner can control various aspects of its behavior, such as setting the number of instances that Windows Azure should run. The Windows Azure fabric monitors the application to maintain this desired state. To let its customers create, configure, and monitor applications, Windows Azure provides a browser-accessible portal. A customer provides a Windows Live ID and then chooses whether to create a hosting account for running applications, a storage account for storing data, or both. An application is free to charge its customers in any way it likes: subscriptions, per-user fees, or anything else.
2. SQL Azure: One of the most attractive ways of using Internet-accessible servers is to handle data. The goal of SQL Azure is to address this area, offering a set of cloud-based services for storing and working with many kinds of information. While Microsoft says that SQL Azure will eventually include a range of data-oriented capabilities, including reporting, data analytics, and others, the first SQL Azure components to appear are SQL Azure Database and “Huron” Data Sync. See figure below:
SQL Azure Components:
a. SQL Azure Database: SQL Azure Database (formerly known as SQL Data Services) provides a database management system (DBMS) in the cloud. This technology lets on-premises and cloud applications store relational and other types of data on Microsoft servers in Microsoft data centers. As with other cloud technologies, an organization pays only for what it uses, increasing and decreasing usage (and cost) as the organization’s needs change. Using a cloud database also allows converting what would be capital expenses, such as investments in disks and DBMS software, into operating expenses.
Unlike the Windows Azure storage service, SQL Azure Database is built on Microsoft SQL Server. SQL Azure Database supports relational data, offering a SQL Server environment in the cloud, complete with indexes, views, stored procedures, triggers, and more. This data can be accessed using ADO.NET and other Windows data access interfaces. In fact, applications that today access SQL Server locally will largely work unchanged with data in SQL Azure Database. Customers can also use on-premises software such as SQL Server Reporting Services to work with this cloud-based information.
While applications can use SQL Azure Database much as they do a local DBMS, the management requirements are significantly reduced. Rather than worry about mechanics, such as monitoring disk usage and servicing log files, a SQL Azure Database customer can focus on what’s important: the data. Microsoft handles the operational details. And like other components of the Windows Azure platform, using SQL Azure Database is straightforward: Just go to a Web portal and provide the necessary information.
b. Huron Data Sync: Built on the Microsoft Sync Framework and SQL Azure Database, this technology synchronizes relational data across various on-premises DBMSs. The owners of that data can determine what should be synchronized, how conflicts should be handled, and more.
c. Others: Whether it’s for supporting a Windows Azure application, making data more accessible, keeping that data synchronized, or other reasons, data services in the cloud can be attractive. As new technologies become available under the SQL Azure umbrella, organizations will have the option to use the cloud for more and more data-oriented task
3. .NET Services: Running applications and storing data in the cloud are both important aspects of cloud computing. They’re far from the whole story, however. Another option is to provide cloud-based infrastructure services that can be used by either on-premises applications or cloud applications. Filling this gap is the goal of “.NET Services”. Originally known as BizTalk Services, the functions provided by “.NET Services” address common infrastructure challenges in creating distributed applications. Figure below shows its components:
.NET Service Components:
a. Access Control: An increasingly common approach to identity is to have each user supply an application with a token containing some set of claims. The application can then decide what this user is allowed to do based on these claims. Doing this effectively across companies requires identity federation, which lets claims created in one identity scope be accepted in another. It might also require claims transformation, modifying claims when they’re passed between identity scopes. The Access Control service provides a cloud-based implementation of both.
b. Service Bus: Exposing an application’s services on the Internet is harder than most people think. The goal of Service Bus is to make this simpler by letting an application expose Web services endpoints that can be accessed by other applications, whether on-premises or in the cloud. Each exposed endpoint is assigned a URI, which clients can use to locate and access the service. Service Bus also handles the challenges of dealing with network address translation and getting through firewalls without opening new ports for exposed applications.
This was the high-level overview of Windows Azure, which is free for use until January 2010 and will be chargeable from February 2010. If you wish to know more details about it, visit the links in the references section.