About six months ago, Mosso was approached by Microsoft to participate in their “Go Live” program for IIS 7. We were extremely eager to get involved in this program because we had literally pushed IIS 6 to its limits and we knew that we needed to make an early investment in IIS 7 in order to continue offering a compelling platform. After evaluating the features and advancements, we were sold and began developing the platform that will allow us to continue to scale our system beyond the capabilities of IIS 6.
One of our biggest pain points with managing IIS 6 in a multi-tenant/web farm environment is the inability to replicate a single configuration to multiple cluster members. We worked around this problem by developing a custom replication agent, but it was extremely inefficient and error prone. Eliminating this bottleneck allows us to reduce our hardware requirements by 16 – 25% per cluster. Additionally, it means we no longer have to monitor a process that frequently caused problems for new sites customers create. With shared configuration in IIS 7, site configuration changes are replicated in real time as opposed to as long as an hour.
So far, the only problem we’ve experienced with this configuration is the inability to store the configuration on a network share and manage the server remotely. Microsoft is aware of the issue and is working to provide a fix, as this is a configuration they are supporting. Most likely this is an issue with impersonation/delegation in a two-hop authentication scenario.
Microsoft has also reduced the attack surface of IIS by fully modularizing the entire platform. When configuring IIS, you have the opportunity to customize the installation to fit the needs of your environment. Not only is this a benefit for our system operations team, but also for our customers because it means that their applications will benefit from these enhancements as well.
We also took a step forward and built our offering on a 64-bit platform. While our application pools are running in 32-bit mode by default, this will give us much more flexibility in how we scale the platform in the future. IIS 6 was plagued with limitations on non-paged pool memory, which will not be a limiting factor in our new configuration. While most web applications themselves do not benefit from a 64-bit application pool, we’ll be more than happy to make the switch for you.
Provisioning and Managing IIS 7 Hosted Resources
Less than a year ago, I was tasked with developing a new framework for provisioning sites on our IIS 6 platform. The only technology that could really do everything that we required was the antiquated Windows Management Instrumentation (WMI) API. This was a very daunting and challenging task, even for a developer with five years of experience in Windows development environments. Most of the development was focused on trial and error. As a developer, I felt Microsoft had stuffed IIS 6 management into an unintuitive WMI container that really did not make sense for the application. After enduring a painful development cycle for our IIS 6 services, learning about the changes Microsoft had made to the management tools was a relief.
Developing the management tools for IIS 7 was truly a dream come true and shows that Microsoft really went the extra mile to ensure the management tools had received the same TLC that the rest of the platform did. I was surprised at how easy it was to interface with Microsoft.Web.Administration and make the API accessible over WCF. In fact, developing the new services took about half of the time that our original IIS 6 services required, which is a testament to the level of effort that went into these new APIs.
The .NET Framework 3.0 included WCF, which gives developers powerful new tools to develop interoperable web services. This was a major requirement of our new platform as our backend core provisioning system is completely Java-based. Integrating with our provisioning system via Axis2 was extremely straightforward and we weren’t forced to make any compromises to allow the two disparate platforms to work together.
If you’re like most of us, and developing with a heterogeneous platform in mind, then WCF will likely go a long way in meeting those requirements.
Built for Developers
For developers, Mosso’s offering of IIS 7 is extremely compelling. In fact, the offering has been engineered from the ground up with developers in mind, and many of us on the Mosso team use our own platform to develop applications. We took what we knew people disliked about our IIS 6 platform and we used that feedback to build our new offering. One of the biggest complaints we heard from developers was that they wanted to be able to run applications in full trust. While it wasn’t feasible in IIS 6, we were able to work directly with Microsoft to engineer a system that is able to accommodate this popular request without compromising the security, scalability, and performance of other users running in our cluster. We’re excited to open this opportunity up to our customers for the first time.
As with IIS 6, all Mosso customers are allocated their own application pool so that they can be confident that other applications running on the cluster will not interfere or cause an adverse impact on their applications. By doing this, we can optionally tune your application pool and your site so that it is optimized for your own needs. This is something that separates us from many of the other “budget” hosting providers.
Additionally, our IIS 7 offering inherits the same redundant, load-balanced platform that has allowed Mosso to be successful. As a developer, you no longer have to be concerned about resource utilization. We handle all of that for you. All you need to do is code it, load it, and watch it scale.
Our IIS 7 platform also includes full support for .NET 3.5, which provides numerous incremental improvements to the .NET Framework. Some of the new features the .NET 3.5 framework has are:
- Extension Methods
- Lambda Expressions
- Automatic Properties
- Object & Collection Initializers
- Anonymous Types
We are one of the first hosting companies to fully support .NET 3.5. While .NET 3.5 is only advertised as an incremental improvement, the new features offer a lot more flexibility for developers.
While we’ve launched IIS 7 as a beta offering, we would encourage you to become more familiar with the features and start testing your applications on this new platform. We’ll be announcing plans soon to migrate all of our IIS 6 sites over to IIS 7. We encourage you to let us know what you think by e-mailing firstname.lastname@example.org.