.NET in the Linux Ecosystem

Running .NET applications on Linux provides access to API’s and libraries that augment the capabilities of horizontally scaled applications, but more importantly, living in the Linux ecosystem provides access to an ecosystem of tools for distributed application development and management.

You may be a seasoned .NET developer, excited about .NET core and mono and being able to take your code over to Linux where you don’t have to pay for the OS license or you could run code on your toaster. That is exciting, but Linux is great for software development because of all the software available to scale up your distributed application. I’ll discuss the following benefits and show the tools, libraries, and code I’m using for each.

  1. Cluster Coordination with Zookeeper
    a. Distributed semaphore
    b. Leader election
    c. Emerging alternatives – Consul + .NET client
  2. Mesos – a layer above the (V)M
    a. Lifetime and HA for clustered applications
    b. Mono & CoreCLR
    c. Docker
    d. Service discovery & mesos-dns
    e. Windows mesos-slave – work in progress
  3. Storm
    a. Scaling processing horizontally
    b. F# on Storm

All code samples are in F#, as it provides a relatively succinct language for demonstrating the functionality and also has rich async primitives, which are used quite frequently in distributed applications.