On Wednesday at Build 2014 Microsoft announced the preview release of Orleans. Orleans is a runtime and programming model for building distributed systems, based on the actor model. It was created by the eXtreme computing group inside Microsoft Research, and was first deployed into production by 343 Industries (my team!) as a core component of the Halo Services built in Azure.
I am beyond excited, that Orleans is now available for the rest of the development community to play with. While I am no longer at 343 Industries and Microsoft, I still think it is one of the coolest pieces of tech I have used to date. In addition getting Orleans and Halo into production was truly a labor of love, and a collaborative effort between the Orleans team and the Halo Services team.
In the Summer of 2011, the services team at 343 Industries began partnering with the Orleans team in Microsoft Research to design and implement our new services. We worked side by side with the eXtreme computing group, spending afternoons pair programming, providing feedback on the programming model, and what other features we needed to ship Halo 4 Services. Working with the eXtreme computing group was an amazing experience, they are brilliant developers and were great to work with, always open to feedback and super helpful with bug fixes and new feature requests.
Orleans was the perfect solution for the user centric nature of the Halo Services. Because we required high throughput and low latency requests we needed state-full services. The Location Transparency of actors provided by Orleans and the Asynchronous “single-threaded” programming model, made developing scalable, reliable, and fault tolerant services easy. Developers working on features only had to concentrate on the feature code, not message passing, fault tolerance, concurrency issues, or distributed resource management.
By the Fall of 2011, a few months after our partnership began, Orleans was first deployed into production to replace the already existing Halo Reach presence system, in order to power the realtime Halo Waypoint Atlas experience. The new presence service built on Orleans in Azure had parity with the old services (presence updates every 30 seconds), and the ability to push updates every second to provide realtime views of players in a match on a connected ATLAS second screen.
After proving out the architecture, Orleans, and Azure the Halo the team moved into full production mode re-writing and improving upon the existing Halo Services including Statistics Processing, Challenges, Cheating & Banning, and Title Files.
On November 6 2012, Halo 4 was released to the world, and the new Halo Services went from a couple hundred users to hundreds of thousands of users in the span of a few hours. So if you want to see Orleans in action go play Halo 4, or checkout Halo Waypoint, both of those experiences are powered by Orleans and Azure.
Now here is the fun part, Orleans has been opened up for preview by the .NET Team. You can go and download the SDK. In addition a variety of samples and documentation are available on Codeplex (I know its not Github sad times, but the samples are great). I spent Wednesday night playing around with the samples and getting them up and running.
I highly recommend checking Orleans out, and providing feedback to the .NET team. Stay tuned to the .NET blog for more info, and feel free to ask me any questions you may have. In addition I have a few blog posts in the work to help share some of the knowledge I gained while building the Halo 4 Services using Orleans!
- .Net Framework Blog – Preview of Project Orleans
- Download Orleans Preview
- Orleans on Codeplex
- Microsoft Research Orleans Project Page
More Halo, Azure, Orleans Goodness
- Build 2014: Using Orleans to build Halo 4’s Distributed Cloud Services
- Build 2013: Building Realtime Services for Halo
- Hanselminutes – Halo 4 Services in Azure
- How Halo 4 is using Windows Azure Service Bus
You should follow me on Twitter here