In my previous post, I spoke about how Windows Azure supports the goal of a “Never Down” application. In this post, I will give the credit the specific module that allows for such goal to materialize: Introducing … drum roll … the Fabric Controller!
The fabric controller is an integral part of the Windows Azure platform. Its core function is to monitor, remediate, provision new nodes and different types of roles and instances, and simply take whatever actions necessary to maintain a 100% application uptime.
Let me give you a quick but simple example: It would help if you had published an application to the cloud before but if not, I will try to simplify. After a developer had developed their cloud application and tested it in their local sandbox, it is time to package and publish it. The publisher (note, not necessarily the developer, because that does not require a development expertise) decides how many instances to deploy via a simple configuration setting in ServiceConfiguration.cscfg. The specific setting in that file is the entry <Instances count="3" /> where the number 3, in this case signifies how many instances to deploy. This is as simple as it gets from the IT Pro perspective but the hard work is carried out by the Fabric Controller.
At publishing time, and if this is a new deployment, the fabric controller is the one the decides to create 3 nodes, 3 web roles each of which is running under the 100% identical IIS environment in a 100% identical server environment while at the same time maintaining the load balancer information of the virtual addresses of these instances. It keeps an eye on the performance of these instances from hardware resources, to networking, to application performance, and should something not work right, it orders the corrective action delegating to other roles within the Windows Azure environment.
If at subsequent publishing event to the same application, the code changed, the configuration settings changed, the desired number of instances changed up or down, it is the fabric controller that works in tangent with the load balancer to take the instances offline one at a time while controlling the traffic and update the new state of the application in a very precise way while the users of the application never feel a thing. Only the people who had to undergo the logistics of the update process can appreciate the work Azure and its fabric are doing. This is all done and status is updated to the administrator through a self-service portal but underneath, the magic is happening. This is the power of the Windows Azure platform – yes in deeded.
Again, this is barely touching the surface of the technical details. Stay with me on this journey and I hope you learn something new however little it may be about the Cloud in the weeks, months, and years to come.