Cloud Computing and Windows Azure Platform
Cloud computing is currently one of the most used buzz-words and everybody starts to use “Clouding” in the marketing materials. But what does “Cloud computing” really mean?
Cloud computing is a technology that uses the Internet and central remote servers to maintain data and applications. Cloud computing allows consumers and businesses to use applications without installation and access their personal files at any computer via the Internet. This technology allows for much more efficient computing by centralizing storage, memory, processing and bandwidth.
We can divide cloud computing into three segments: applications, platforms and infrastructure. Each segment serves a different purpose and offers different products for businesses and individuals.
Infrastructure
Infrastructure, also known as “Infrastructure as a Service (IaaS)”, delivers computer infrastructure – typically a platform virtualization environment – as a service. Clients buy server resources as a fully outsourced service instead of purchasing servers, software, data-center space or network equipment. Suppliers typically bill such services on a utility computing basis and amount of resources consumed.
Known providers of IaaS are e.g.:
- http://www.rackspace.com
- http://aws.amazon.com/ (Amazon Web Services)
Platform
Cloud platform services or "Platform as a Service (PaaS)" deliver a computing platform and solution stack as a service, often consuming cloud infrastructure and sustaining cloud applications. It offers deployment of applications without the cost and complexity of buying and managing the underlying hardware and software layers. On other hands, PaaS offers us a basic platform on which we can build our applications and maintain only our applications, the rest is maintained by the PaaS provider.
Platform services are often charged on a compute time basis, per transactions, per storage, etc.
PaaS providers are e.g.
- Microsoft Windows Azure
- Amazon Elastic Compute Cloud (Amazon EC2)
Applications
Cloud application services or "Software as a Service (SaaS)" deliver software as a service over the Internet, eliminating the need to install and run the application on the customer's computers. SaaS simplifies maintenance and support as the customers don’t care about them. People tend to use the terms ‘SaaS’ and ‘cloud’ interchangeably, when in fact they are two different things.
The most historically common SaaS are e-mails like Hotmail, Gmail, etc.
There are plenty of applications served as SaaS, including:
- SalesForce
- Microsoft Office Live Workspace
- Google Apps
Windows Azure Platform
As was mentioned above, Windows Azure is a platform service (PaaS) which offers us a platform for building and deploying our web applications for the cloud. That means we are only responsible for the development and maintenance of the application itself. Other services like hardware maintenance, database maintenance, security, connectivity, load balancing, etc. etc. are provided by Microsoft, who offers the Windows Azure Platform.
Windows Azure Platform offers the following components that we can use:
- Windows Azure: A Windows environment for running applications and storing data on computers in Microsoft data centers.
- SQL Azure: Relational data services in the cloud based on SQL Server.
- Windows Azure AppFabric: Cloud-based infrastructure services for applications running in the cloud or on premises.
All of these components run in Microsoft data centers located around the world and we can use just some services or all of them. E.g. we can use SQL Azure for our on premises hosted application etc.
At a high level, Windows Azure runs Windows applications and stores data in the cloud. These applications can be created using the .NET Framework in languages such as C# and Visual Basic, or they can be built without .NET in C++, Java and other languages.
If we want to develop an ASP.NET based application, there are several differences between Windows Azure and ASP.NET that we should be aware of, e.g.:
- Windows Azure doesn’t support traditional file system. So, we have to store everything in a database or use Azure storages.
- Traditional ASP.NET session providers don’t support multiple instances. In case we want to use multiple instances (e.g. for web farms) we have to write our own.
- Web.config file is a part of a single instance, to change web.config in all instances, we can change them manually or use a “service configuration file” which is distributed across all instances.
SQL Azure is built on Microsoft SQL Server and comes together with SQL Azure Reporting (SQL Server Reporting Services that run in the cloud) and SQL Azure Data Sync (enables synchronization between SQL Azure databases inside the cloud or between an SQL Azure database and on-premises SQL Server databases). There are a few components that are still missing in the SQL Azure, like SQL Server Full-text!
The functions provided today by Windows Azure AppFabric address common challenges in building distributed applications. These include:
-
Service Bus, which helps us to expose application endpoints.
-
Access control, which provides built-in support of Active Directory, Windows Live ID, Facebook Connect and others.
-
Caching Services, which can boost performance of our Windows Azure application.
More about Windows Azure at http://www.windowsazure.com