A Lap Around Windows Azure
We build cloud services today through service glue and operations. On top of the datacenter we diagnose service failures, add storage capabilities, handle increase in traffic, respond to hardware failure, perform live upgrade for new features and expand to new locale.
What is missing in the cloud? Microsoft's answer is an operating system in the cloud (Windows Azure). What should Windows Azure provide in conceptual terms?
Conceptual features
The same facilities that a desktop OS provides, but on a set of connected servers:
- Abstract execution environment
- Shared file system
- Resource allocations
- Programming environments
and more
- 24/7 operation
- Shared model, pay for what you use
- Simpler, transparent administration
How does this actually map to features, the 4 major features in Windows Azure?
- Automated service management
- A powerful hosting environment
- Scalable, available storage in the cloud
- A rich, familiar development experience
Different aspects of the platform
Automated service management, manages the complete service life-cycle. For doing this it relies on the service model. This model captures what my service look like: service topology and size, health constraints, configuration settings. Maintaining service health goals are to keep the service responsive and health in the face of failures and upgrades. This is done through failure detection and replacing missing/failed resources transparently. This is made possible through abstraction in the model.
The bottom line is the fine balance between power and ease of use. Write well behaved services, reduce TCO. Designed for a full range of scenarios, from the hobbyist to the enterprise developer. But there is an escape hatch... in "raw" mode you can build your own VM and mange the service yourself.
Scalable, available cloud storage through simple essential storage abstractions: large items of user data and blobs, file streams. Service state in the form of simple tables and cache. Service communications through queues and locks. The emphasis lies on massive scale, availability and durability, geo-distribution and geo-replications. *This is not a database service in the cloud.
Rich, familiar developer experience. Through a simulated cloud environment on the desktop. Support for a variety of programming languages (ASP.NET, .NET languages, native code, PHP). an ecosystem and tools: integration with VS.NET, Eclipse, logging alerts, tracing, samples, documentation, MSDN, Forums, ...
Putting it all together, simple architectures for scalability
You don't scale up, you scale out. It's useful to build loosely coupled architectures. I'll post more takeaways on Windows Azure best practices later. There's another session scheduled that addresses this more in depth.
What's in the technical preview (available at noon for PDC attendees)
- Open release of the desktop SDK
- Limited preview of the cloud infrastructure (free usage, with quotas)
- Key features
- VM's with dedicated resources
- Automated service management
- ASP.NET web sites
- Storage
- Single large datacenter on US West coast.
Calendar 2009 big things we may expect in Windows Azure
- Business model
- Consumption based billing
- Strict SLA's with financial guarantees - Global reach
- Presence in multiple datacenters
- Geo-distributions - Service hosting options
- native code support
*Don't expect a V1, these are services and a continuesly evolving.
Summary: what is Windows Azure?
- It is an operating system for the cloud
- It is designed to support utility computing
- It has four primary features