Google Android surpasses iPhone Ad impressions.
hmmm, material snagged from the white paper I worked on. :O
I'm not too surprised, and it is on MS's blog, who technically owns the material anyway. Great reuse!!
Windows Azure provides three core components, Compute, Storage and the Fabric, along with the Fabric controller. Compute is effectively the Windows operating system, this is an instance. These instances contain a copy of your application. Instances also come in two flavours, a Web Role or a Worker Role. Web roles accept and process HTTP requests using IIS. Not everything you may want to run in Windows Azure is a Web application, so Windows Azure also provides Worker roles. A Worker role instance is quite similar to a Web role instance. The key difference is that a Worker role does not have IIS preconfigured to run in each instance. Web and Worker roles can communicate with each other via technologies like WCF, or using Windows Azure Storage queues.
Windows Azure platform Appfabric
Windows Azure platform AppFabric is made up of two components, Service Bus and Access Control. Before going into these two components it’s worth noting that there is also a product called Windows Server platform Appfabric, currently these two “Appfabric” products are different, however they are the same product teams within Microsoft and their product roadmap includes closer synergy over time.
In “Stateless” computing the system is designed to allow the different parts of the code to run independently of each other. You can think of this like an e-mail exchange. You compose an e-mail from your system (it has the state when you’re doing that) and then you walk away for a bit to make some coffee. A few minutes later you click the “send” button (the network has the state) and you go to a meeting. The server receives the message and stores it on a mail program’s database (the mail server has the state now) and continues working on other mail. Finally, the other party logs on to their mail client and reads the mail (the other user has the state) and responds to it and so on. These events might be separated by milliseconds or even days, but the system continues to operate. The entire process doesn’t maintain the state, each component does. This is the exact concept behind coding for Windows Azure.
The Difference Between Infrastructure Designs and Platform Designs
When you simply take a physical server running software and virtualize it either privately or publicly, you haven’t done anything to allow the code to scale or have recovery. That all has to be handled by adding more code and more Virtual Machines that have a slight lag in maintaining the running state of the system. Add more machines and you get more lag, so the scale is limited. This is the primary limitation with IaaS. It’s also not as easy to deploy these VM’s, and more importantly, you’re often charged on a longer basis to remove them. your agility in IaaS is more limited.
Windows Azure is a Platform - meaning that you get objects you can code against. The code you write runs on multiple nodes with multiple copies, and it all works because of the magic of Stateless programming. you don’t worry, or even care, about what is running underneath. It could be Windows (and it is in fact a type of Windows Server), Linux, or anything else - but that' isn’t what you want to manage, monitor, maintain or license. You don’t want to deploy an operating system - you want to deploy an application. You want your code to run, and you don’t care how it does that.
Another benefit to PaaS is that you can ask for hundreds or thousands of new nodes of computing power - there’s no provisioning, it just happens. And you can stop using them quicker - and the base code for your application does not have to change to make this happen.
Windows Azure Roles and Their Use
If you need your code to have a user interface, in Visual Studio you add a Web Role to your project, and if the code needs to do work that doesn’t involve a user interface you can add a Worker Role. They are just containers that act a certain way. I’ll provide more detail on those later.
Virtualizing servers alone has limitations of scale, availability and recovery. Microsoft’s offering in this area is Hyper-V and System Center, not the VM Role. The VM Role is still used for running Stateless code, just like the Web and Worker Roles, with the exception that it allows you more control over the environment of where that code runs.
Virtualization patterns akin to software development patterns...
...started by VMware
- Service VM - to provide an easy way to provision new infrastructure and application services for the cloud
- VM Factory - a standard way to create new virtual machines based on user requirements
- VM Pipeline - to provide a configurable structure for modularized information processing
- App VM - provides a packaged software stack as a PaaS platform for running applications
- Facade VM - to provide a single point of contact for a large scale system consisting of many virtual machines to view collection as a single unit
- VM Pool - to provide a mechanism for fast provisioning of virtual machines and to manage their lifecycle though the maintenance of a pool of virtual machines
- Stateless VM - to ensure a virtual machine does not carry a permanent state so that it can be easily provisioned, migrated and managed
- Aspectual Centralization - to separate concerns in large scale computing by leveraging different types of services in the cloud
Netflix advice on moving to AWS. Great write up.
"You have to assume that the hardware and underlying services are ephemeral, unreliable and may be broken or unavailable at any point, and that the other tenants in the multi-tenant public cloud will add random congestion and variance. In reality you always had this problem at scale, even with the most reliable hardware, so cloud ready architecture is about taking the patterns you have to use at large scale, and using them at a smaller scale to leverage the lowest cost infrastructure."
"For me, if its not multi-tenant, it's not cloud, and only the biggest organizations should be building datacenters to host clouds, and they should be offering them publicly. If you are doing internal cloud and you have a dominant internal customer then you are doing it wrong, because you have to choose between baking in a lot of unused extra capacity or the risk that at some point that customer will blow up your cloud."
agree, the OP's article claims that he left .NET because of the inadequacy of the framework / community but really it was because of the incompetency of his company. This reminded me of some of my experiences, but as you said, this isn't the fault of .NET.
It could be argued that using the Microsoft stack encourages this kind of behavior, but I doubt it.
But the community atmosphere makes me cringe. To get an open feeling similar to Java's community, the ALT.NET movement was born. Being "ALT.NET" means you're a cutting-edge elitist in the .NET world, but all it's about is opening your mind to tools, libraries, and processes.
Still states the number one issue is security. Really... some of these execs need to get their heads out of the clouds and come down to earth and realize WTF is really going on here!