Microsoft Windows Azure Platform is a Platform as a Service offering from Microsoft. It was announced in 2008 and became available in 2010. Since then Microsoft has been constantly improving the platform by adding new features.
Though Windows Azure Platform is designed for the developers building applications on the Microsoft platform, developers building applications on Java and PHP environments can also leverage this. Microsoft is investing in the right set of tools and plug-ins for Eclipse and other popular developer environments.[jbox color="yellow" border="2" radius="4" shadow="1" jbox_css="font-size:18px;"]
For a detailed analysis of the current PaaS landscape, Click here for the Slide Deck from the Webinar Navigating the PaaS Maze in the Cloud.
[/jbox]Let me first explain each of the components of Windows Azure Platform and then walk you through the scenarios for deploying applications on this platform.
Windows Azure is the heart & soul of the Azure Platform. It is the OS that runs on each and every server running in the data centers across multiple geographic locations. It is interesting to note that Windows Azure OS is not available as a retail OS. It is a homegrown version exclusively designed to power Microsoft’s Cloud infrastructure. Windows Azure abstracts the underlying hardware and brings an illusion that it is just one instance of OS. Because this OS runs across multiple physical servers, there is a layer on the top that coordinates the execution of processes. This layer is called the Fabric. In between the Fabric and the Windows Azure OS, there are Virtual Machines (VM) that actually run the code and the applications. As a developer, you will only see two services at the top of this stack. They are 1) Compute and, 2) Storage.
You interact with the Compute service when you deploy your applications on Windows Azure. Applications are expected to run within one of the three roles called Web Role, Worker Role and VM Role. Web Role is meant to host typical ASP.NET web applications or any other CGI web applications. Worker Role is to host long running processes that do not have any UI. Think of the Web Role as an IIS container and the Worker Role as the Windows Services container. Web Role and Worker Role can talk to each other in multiple ways. The Web Role can also host WCF Services that expose a HTTP endpoint. The code within Worker Role will run independent of the Web Role. Through the Worker Role, you can port either .NET applications or native COM applications to Windows Azure. Through Worker Role, Windows Azure offers support for non-MS environments like PHP, Java and Node.js. VM Role enables running applications within a custom Windows Server 2008 R2 image. This will enable enterprises to easily port applications that have dependencies or 3rd party components and legacy software.
When you run an application, you definitely need storage to either store the simple configuration data or more complex binary data. Windows Azure Storage comes in three flavors. 1) Blobs, 2) Tables and, 3) Queues.
Blobs can store large binary objects like media files, documents and even serialized objects. Table offers flexible name/value based storage. Finally, Queues are used to deliver reliable messages between applications. Queues are the best mechanism to communicate between Web Role and Worker Role. The data stored in Azure Storage can be accessed through HTTP and REST calls.
This service enables seamless integration of services that run within an organization behind a firewall with those services that are hosted on the Cloud. It forms a secure bridge between the legacy applications and the Cloud services. Service Bus provides secure connectivity between on-premise and Cloud services. It can be used to register, discover and consume services irrespective of their location. Services hosted behind firewalls and NAT can be registered with the Service Bus and these services can be then invoked by the Cloud Services. The Service Bus abstracts the physical location of the service by providing a URI that can be invoked by any potential consumer.
Access Control Service
Access Control is a mechanism to secure your Cloud services and applications. It provides a declarative way of defining rules and claims through which callers can gain access to Cloud services. Access Control rules can be easily and flexibly configured to cover a variety of security needs and different identity-management infrastructures. Access Control enables enterprises to integrate their on-premise security mechanisms like Active Directory with the Cloud based authentication. Developers can program Access Control through simple WCF based services.
Caching provides an in-memory caching service for applications hosted on Windows Azure. This avoids the disk I/O and enables applications to quickly fetch data from a high-speed cache. Cache can store multiple types of data including XML, Binary, Rows or Serialized CLR Objects. Web applications that need to access read-only frequently can access the cache for better performance. ASP.NET developers can move the session to Cache to avoid single-point-of failure.
SQL Azure is Microsoft SQL Server on the Cloud. Unlike Azure Storage, which is meant for unstructured data, SQL Azure is a full-blown relational database engine. It is based on the same DB engine of MS SQL Server and can be queried with T-SQL. Because of its fidelity with MS SQL, on-premise applications can quickly start consuming this service. Developers can talk to SQL Azure using ADO.NET or ODBC API. PHP developers can consume this through native PHP API. Through the Microsoft SQL Azure Data Sync, data can be easily synchronized between on-premise SQL Server and SQL Azure. This is a very powerful feature to build hubs of data on the Cloud that always stay in sync with your local databases. For all practical purposes, SQL Azure can be treated exactly like a DB server running in your data center without the overhead of maintaining and managing it by your teams. Because Microsoft is responsible for installation, maintenance and availability of the DB service, business can only focus on manipulating and accessing data as a service. With the Pay-as-you-go approach, there is no upfront investment and you will only pay for what you use.
Let's take a look at some of the scenarios that customers target on Microsoft Windows Azure Platform.
Scalable Web Application
Because Windows Azure Platform is based on the familiar .NET platform, ASP.NET developers can design and develop web applications on fairly inexpensive machines and then deploy them on Azure. This will empower the developers to instantly scale their web apps without worrying about the cost and the complexity of infrastructure needs. Even PHP developers can enjoy the benefits of elasticity and pay-by-use attributes of the platform.
Compute Intensive Application
Windows Azure Platform can be used to run process intensive applications that occasionally need high end computing resources. By leveraging the Worker Role, developers can move code that can run across multiple instances in parallel. The data generated by either Web Role or On-Premise applications can be fed to the Worker Roles through Azure Storage.
Centralized Data Access
When data has to be made accessible to a variety of applications running across the browser, desktop and mobile, it makes sense to store that in a central location. Azure Cloud based storage can be great solution for persisting and maintaining data that can be easily consumed by desktop applications, Silverlight, Flash and AJAX based web applications or mobile applications. With the Pay-as-you-grow model, there is no upfront investment and you will only pay for what you use.
Hybrid Applications (Cloud + On-Premise)
There may be a requirement for extending a part of an application to the Cloud or building a Cloud façade for an existing application. By utilizing the services like Service Bus and Access Control, on-premise applications can be seamlessly and securely extended to the Cloud. Service Bus and a technology called Azure Direct Connect can enable the Hybrid Cloud scenario.
Cloud Based Data Hub
Through SQL Azure, companies can securely build data hubs that will be open to trading partners and mobile employees. For example, the Inventory of a manufacturing company can be securely hosted on the Cloud that is always in sync with the local inventory database. The Cloud based DB will be opened up for B2B partners to directly query and place orders. SQL Azure and the SQL Azure Data Sync will enable interesting scenarios.
I hope this article showed you the big picture of Windows Azure.
- Janakiram MSV, Chief Editor, CloudStory.in