If it’s true that men are from Mars and women from Venus, then it would probably be fair to say that developers and infrastructure/operations people are from different galaxies. With few exceptions, these groups of people view the world from entirely opposing directions, follow different processes, speak different languages, and use different tools and technologies. Which is all fine, until these galaxies collide with the release of a new application. Far too often, the application was not built to fit in with the infrastructure, tools or processes that rule the datacenter – and the result is at best an application which is inefficient to mamange, and at worst an application that cannot be deployed.
While I really do believe this problem has far more to do with people and culture than technology, the fact that many key operations technologies are unknown or inaccessible to developers does compound the problem. How many .NET developers do you know who are able to implement technologies such as WMI, Group Policy, ETW, MMC or even CAS? Probably not many – and to be fair to all you developers, many of these are not even properly exposed through managed APIs.
I’d love to be able to tell you that we’ve solved the whole problem, but alas it’s going to take a long and concerted effort from all of us (yes, you too :-). However, we’re hoping that the release of the Manageability Extensions for Enterprise Library January 2006 will be a small but valuable step in the right direction.
The idea behind these extensions is to make it very easy for configuration data in Enterprise Library applications to be exposed to WMI and Group Policy, without it being necessary for the developers to be experts in these technologies. The heart of these extensions is a new Configuration Source class called the ManageableConfigurationSource. As far as the developer and even the application is concerned, this configuration source seems to act almost identically to the standard FileConfigurationSource – that is, it will read the configuration data from a .config file and return the information as ConfigurationSections to the blocks and the application.
However there is something sneaky going on beneath the covers. The ManageableConfigurationSource is spying on the configuration data and reporting it via WMI, so it can be queried using tools such as Microsoft Operation Manager. Currently the WMI APIs in the .NET Framework are read-only, so it isn’t currently possible to manipulate the configuration data using WMI – however this capability should be supported in a future release of the platform. However it is currently possible to use Group Policy to manipulate the configuration information. If an administrator has configured the application for group policy, they can push configuration changes to machines and users via Active Directory. The ManageableConfigurationSource will query the registry for the group policy changes and merge this into the configuration information before handing it off to the application. And if you’re using the built-in Enterprise Library blocks, all of this happens without developers needing to write any addional code!
We’d love you to try out these extensions and use them to build more manageable .NET applications. We plan on rolling these extensions into the next release of Enterprise Library, so it would be great to hear any feedback on the extensions (good or bad) to help us ensure the next release is even better. And these extensions are only a part of our wider effort around guidance for building more manageable applications – so let us know what else you’d like to see.