Behind the popular Halo 4 game.Microsoft plans to open-source the framework
Building cloud services for millions of users means connecting and coordinating thousands of servers, and handling tasks and information across all of them. Project Orleans is a framework built by the eXtreme Computing Group at Microsoft Research using .NET, designed so developers who aren’t distributed systems experts can build cloud services that scale to cope with high demand and still keep high performance.
The Orleans framework was used to build several services on Azure, including services that are part of Halo 4, and Microsoft had an enthusiastic response when it released a public preview of the technology in April this year. .
The code will be released under an MIT license and will be published on the GitHub site in early 2015 (instead of Microsoft’s own CodePlex open source site); they say that they plan to accept contributions to the code from users.
Orleans is designed for building cloud services like social graphs (the list of friends on Facebook or the people you follow on Twitter), real-time analytics and interactive entertainment, and to work with large numbers of devices like smartphones or Internet of Things sensors. Halo 4 uses the framework for the presence service (which keeps track of all the game sessions, all the players and the status of each game) and the statistic service (which tracks details like when and where a shot was fired in a game and with which weapons, as well as the achievements and other personal information about players).
Orleans differs from other popular cloud app development platforms like Google App Engine because it’s asynchronous; but it’s also single threaded, so developers don’t need to think about concurrency, locks or race conditions — concepts that make concurrent programming complex to handle.
Orleans uses the idea of “grains” and “silos”; there are grains for each player in Halo 4 and there’s a grain for every game of Halo 4 that’s ever been played. Silos are the execution containers that hold the grains; there’s one on each node and the Orleans system handles creating more silos if they’re needed to handle more players and replacing any that fail under the load. Developers tell the grains what to do, but the Orleans systems take care of creating grains, reactivating them in a different silo if there’s a problem, and garbage collecting them when they’re no longer in use.