Software Engineer ·

Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.

Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.

After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...

READ LESS
GitHub - Soluto/tweek: Tweek - an open source feature management solution (github.com)
31 upvotes·2 comments·3.9M views
Yaron Levi
Yaron Levi
·
December 6th 2018 at 7:56AM

What was the benefit of using F# to impelement the rule engine processor?

·
Reply
Yshay Yaacobi
Yshay Yaacobi
·
January 27th 2019 at 6:49AM

F# type system is very suited for representing AST (https://github.com/Soluto/Tweek.JPad/blob/master/Tweek.JPad/Ast.fs). Additionally, F# pattern matching, currying and type safety are useful for control-flows, composition and correctness.

·
Reply
Avatar of Yshay Yaacobi

Yshay Yaacobi

Software Engineer