Is Azure an Operating System or a Framework?
MS is calling Azure an Operating System.
To me, it feels much more like a framework. I am having a bit of trouble defining the two separately. I have a general intuition, but I am not articulate enough to really say if Azure is really an OS or just a framework sitting on top of Operating Systems.
I've just been listening to the Deep Fried Bytes Podcast #20 wherein, they interview Steve Marx, the Windows Azure Program Manager, and he explains it all.
From what I can gather thus far (haven't finished all the podcast) it works like this:
Microsoft have a ton servers running Hyper-V which can run virtualized instances of windows server 2008
You can start/stop/reboot an arbitrary number of these virtual win2k8 servers using an API, and you get charged only based on what you use.
The platform which controls this start/stop/reboot/crash recovery/provisioning/billing/etc is Windows Azure. They jokingly refer to it as the 'windows server overlord'
You define roles for these VM's, which can be either
- web-role, in which you can run any .NET code hosted inside IIS (eg: ASP.NET, httpHandler, etc),
- worker-role, in which you run some standalone .NET code for background processing and so on
- Perhaps more roles once they come out of CTP
You can use the windows azure API's to start/stop them - eg: "Give me 5 instances of my web role and 3 instances of my worker role"
Data gets stored by their storage services, and can be
- Blobs (I'm assuming something like S3)
- Queues (I'm assuming something like SQS)
- Tables - marx mentioned a 'web scale non-relational data store' - something like SimpleDB or BigTable
These VM's have a bunch of other services available to them - Live Services for windows live stuff, .NET services, SQL Services if you need a full-blown SQL server for relational data, Sharepoint services if you want sharepoint, etc.
All this stuff rolled up together is the Windows Azure Services Platform
My take - Giant Marketing fail. Confusion abounds. MS seem to always do this kind of 'roll it all up into a single buzzword' thing though (.NET 5 years ago, anyone?). I really wish they would stop it
Another way I have heard Windows Azure pitched is "infrastructure as a service". Meaning that you don't have to think about the operating system in the same way as if using a server or VM that you tweak.
What is Windows Azure? seems to answer this, perhaps?
The Azure™ Services Platform (Azure) is an internet-scale cloud services platform hosted in Microsoft data centers, which provides an operating system and a set of developer services that can be used individually or together. Azure’s flexible and interoperable platform can be used to build new applications to run from the cloud or enhance existing applications with cloud-based capabilities. Its open architecture gives developers the choice to build web applications, applications running on connected devices, PCs, servers, or hybrid solutions offering the best of online and on-premises.
Azure reduces the need for up-front technology purchases, and it enables developers to quickly and easily create applications running in the cloud by using their existing skills with the Microsoft Visual Studio development environment and the Microsoft .NET Framework. In addition to managed code languages supported by .NET, Azure will support more programming languages and development environments in the near future. Azure simplifies maintaining and operating applications by providing on-demand compute and storage to host, scale, and manage web and connected applications. Infrastructure management is automated with a platform that is designed for high availability and dynamic scaling to match usage needs with the option of a pay-as-you-go pricing model. Azure provides an open, standards-based and interoperable environment with support for multiple internet protocols, including HTTP, REST, SOAP, and XML.
Key components of the Azure Services Platform include the following:
- Windows Azure for service hosting and management, low-level scalable storage, computation and networking
- Microsoft SQL Services for a wide range of database services and reporting
- Microsoft .NET Services which are service-based implementations of familiar .NET Framework concepts such as workflow and access control
- Live Services for a consistent way for users to store, share and synchronize documents, photos, files and information across their PCs, phones, PC applications and Web sites
- Microsoft SharePoint Services and Microsoft Dynamics CRM Services for business content, collaboration and rapid solution development in the cloud.
Technically, Azure is a set of services running on vanilla Windows 2008 Servers running virtually inside of Hyper-V. Your app runs on those services, abstracted away from the actual operating system. Because of this, they are calling Azure a "Cloud Operating System". Unfortunately, these answers don't answer my question... so...
I re-formatted my question to something more generic: What is the difference between an OS and a Framework?
Windows Azure is both, a framework and an OS. The main two things any OS provide for the developers are the CPU and the memory which Windows Azure provide in different ways, through the compute node. it also provides a scalable storage to store several types of storage whether structure, unstructured or even semi structure data. please notice that the storage node runs on a different hardware resources than the compute node, which provides the system with better efficiency and high availability and scalability. if your application faces any problem, the system will automatically create another instance of it plus your data is replicated three times.
As the Cloud Computing is a concept which consists mainly of three layers, the infrastructure, the platform and the software (as a service), each layer of them is targeting a specified segment. the windows azure is targeting the developers to build high available and scalable applications, it doesn't manage the infrastructure, it is installed on Windows Server which make the administration on the infrastructure, however as the Cloud Computing is based on Virtualization, Windows Azure has its own hypervisor it doesn't depend on Windows Server Hyper-V.
For the developers, which needs to build their applications on Cloud Computing they need a designed framework or platform that gives them the ability to do so.
that's why I think Windows Azure is not just a framework, and not just an OS it is both.