Rackspace has long been at the forefront of innovation, including our initial launch of RackConnect in 2011. Originally built as a one-off request to help power one customer’s environment, RackConnect, has grown up to be the backbone of our hybrid cloud by connecting your dedicated environment to your cloud environment. What many people don’t know is that RackConnect is built on top of the .NET Framework.
In late 2012, RackConnect underwent a massive restructuring to automate some of the previously manual processes that customers had to manage themselves. I led a team of software engineers that created this automation as well as refined the user experience for Rackers who interfaced with the system. At this time we saw how robust and powerful RackConnect was as it is extensively utilized by some of our largest customers.
If you’re not familiar with the .NET stack, you may wonder how well it scales and if it can stand up to the demands of an enterprise environment. The framework has enabled our enterprise service to handle high throughput while maintaining an incredible uptime. Our web APIs have never crashed on us and we don’t have problems with external APIs being unavailable. Likewise, .NET has been flexible enough to allow us to scale out when we need to by simply adding more threads or creating new instances of the services to share the demand.
RackConnect is built using C#, ASP.NET MVC, WCF, REST-based web APIs and Windows Services for the bulk of the automation. We also utilize a variety of other frameworks including jQuery, Elmah, AutoMapper, Twitter Bootstrap, Structure Map, Moq and Dapper to help us deliver an even better product in terms of maintainability, usability and performance.
One of the advantages of utilizing the .NET Framework for RackConnect is that it is easy to multithread. We are able to spin up numerous threads and our RackConnect service consumes a small memory footprint on the server that hosts it. Thread management can be really difficult, but with .NET this becomes fairly straightforward, which gives us the ability to scale out horizontally as we need to.
One particular challenge we faced early on is designing a system that could handle the flood of messages from our cloud notification systems. In order for RackConnect to work, we have to be notified of various actions a customer can take on their Cloud Server. The result is listening to every event that comes through from each cloud customer at Rackspace across all regions; this amounts to hundreds of events per second.
To complicate this further, we receive events from multiple types of sources: RabbitMQ for our first generation Cloud Servers and from Atom Hopper for our next generation Cloud Servers powered by OpenStack. We designed a very robust and fault tolerant event management system to ensure we don’t miss any messages and we are able to keep up with the messages. This was accomplished using Windows Services and fairly complicated multi-threading to ensure we can continually scale to receive and process the messages in near real-time.
The tight integration of .NET with Visual Studio has made it easy to debug and troubleshoot. This should be familiar to developers working in .NET with how seamless Windows and Visual Studio works with the framework to ultimately help you get to market faster. Furthermore, the integration allows us to have a simple way to recreate bugs and problems, which makes it easier to identify an issue and deploy a fix.
Finally, working at Rackspace on one of the premier systems that power the open cloud, my team wanted to make sure that we gave back to the community. You may think it is strange for a .NET developer to get involved with open source software, but that is not the case. My team wanted to give back to the community so it created and open sourced a Microsoft .NET SDK for OpenStack. This toolkit makes it easy for your app to control the infrastructure, allowing you to take full advantage of the cloud. And the best part – it is production tested as it powers many parts of our RackConnect automation.
Utilizing the strengths of the .NET framework, our team has been able to quickly deliver one of Rackspace’s strategic products that power the hybrid cloud.