Microsoft has updated its distributed high-scale applications platform Orleans, claiming a 30 per cent increase in performance.
Orleans is a framework with roots in the labs of Microsoft Research and aims to give developers a simple approach to creating distributed, scalable applications without having to deal with pesky concurrency issues or learn complicated scaling patterns.
It first made an appearance back in 2011 before being lobbed at the open-source community in January 2015. The platform replaces the middle tier of stateless n-tier services, which lurks between front end and storage and provides application logic, with a stateful middle tier rammed full of .NET objects.
The .NET objects (known in the Orleans world as "grains") perform different application processes and are distributed over a cluster of servers (or "silos" – geddit?). The Orleans runtime fires up these grains on servers when needed, and the grain itself can have a persistent state in storage or memory (or both). Since a grain can map to most application entities (such as users, sessions or orders) it is quite simple for a developer familiar with object-orientated development to build something that just happens to scale over a cluster of servers.
The neat thing about Orleans is that it is not tied to Azure, it just needs an environment where .NET applications can run. Originally needing the full-fat .NET Framework, it shifted to .NET Core this year, meaning that developers can host the thing on the likes of AWS or Google Cloud. The source is also available under the MIT licence.
Version 2.1 brings with it a new scheduler, which is where the team reckons the 30 per cent performance improvement comes from. It takes advantage of tweaks made to .NET Core's ThreadPool, which hit back in 2017, and uses "work stealing queues with local queue affinity to reduce contention and improve throughput and latency".
The other big change is around Distributed Transactions. The single-threaded, isolated nature of the "grain" model of Orleans lends itself to the development of distributed applications and "experimental" support for the feature made an appearance in the last version. In the current version, the Orleans team has overhauled the function, creating a fully decentralised transaction manager and now consider it "Release Candidate" material. So by all means play with it, but perhaps not in production just yet.
Amid the wealth of new toys for devs using the Orleans platform there comes a health warning. While there are no breaking changes, the team has identified an issue with Tiered Compilation in .NET Core 2.1 and recommend that Orleans users keep the setting firmly set to off.
This is a shame, since Tiered Compilation provides a whole bunch of performance improvements and developers will likely to want to use it. The Orleans team reckons the problem lies in .NET Core itself, with a fix coming in .NET Core 2.2.
Handy, because Tiered Compilation will be turned on by default in 2.2. ®