Home

Awesome

road to orleans

Gitter

This repository illustrates the road to orleans with practical, real-life examples such as .NET solutions. From most basic to more advanced techniques. The code is written using .NET 6 and was tested on macOS (Catalina 10.15.7) and, wherever docker is supported, Linux (Alpine 3.12).

build & run

monitoring

Silo dashboards are available by default on localhost:8080 unless configured otherwise in the code/dockerfile/run-[client/silo]-[docker/local].sh. Additionally, Datadog APM support is illustrated in solution 3b.

code

flowchart TD
Solution1(Solution1: One basic silo, no grains.)
Solution2(Solution2: One basic silo, one grain, one console client.)
Solution3(Solution3: One basic silo, one grain, one console client, <br/>everything containerized.)
Solution3a(Solution3a: Solution3 + grain persistence.)
Solution3b(Solution3b: Solution3 + datadog APM.)
Solution4(Solution4: First in-memory clustering example. <br/>Many silos, many clients.)
Solution5(Solution5: Solution4 where the grain interfaces F# library code. <br/>Additionally, F# unit tests covering the F# library code.)
Solution5a(Solution5a: Solution5 where the host and client are written in F#.)
Solution6(Solution6: Solution5 where the cluster is being called from a Web API.)
Solution7(Solution7: Solution6 + FeatureManagement, dependency injection in grains, <br/>unit tests for grains using OrleansTestKit.)
Solution8(Solution8: Solution7 + Persistent Membership Table in DynamoEB,<br/>ECS hosting, CloudFormation Template.)

Solution1 --> Solution2
Solution2 --> Solution3
Solution3 --> Solution3a
Solution3 --> Solution3b
Solution3 --> Solution4
Solution4 --> Solution5
Solution5 --> Solution5a
Solution5 --> Solution6
Solution6 --> Solution7
Solution7 --> Solution8
solutiondescriptiondocker supportclusteringclustered silosgrainsclients*visual studio code support*remote containers support
solution1One basic silo, no grains.:white_check_mark:-100:white_check_mark::white_check_mark:
solution2One basic silo, one grain, one console client.--11 C# grain1 - console:white_check_mark::white_check_mark:
solution3One basic silo, one grain, one console client, everything containerized.:white_check_mark:-11 C# grain1 - console:white_check_mark::white_check_mark:
solution3aSolution3 + grain persistence.:white_check_mark:-11 C# grain1 - console:white_check_mark::white_check_mark:
solution3bSolution3 + datadog APM.:white_check_mark:-11 C# grain1 - console:white_check_mark::white_check_mark:
solution4First in-memory clustering example. Many silos, many clients.:white_check_mark:in-memoryn1 C# grainn - console:white_check_mark::white_check_mark:
solution5Solution4 where the grain interfaces F# library code. Additionally, F# unit tests covering the F# library code.:white_check_mark:in-memoryn1 C# grain interfacing F# library code.n - console:white_check_mark:
solution5aSolution5 where the host and client are written in F#.:white_check_mark:in-memoryn1 F# grain interfacing F# library code.n - console:white_check_mark:
solution6Solution5 where the cluster is being called from a Web API.:white_check_mark:in-memoryn1 C# grain interfacing F# library coden - web api:white_check_mark:
solution7Solution6 + FeatureManagement, dependency injection in grains, unit tests for grains using OrleansTestKit.:white_check_mark:in-memoryn1 C# grain interfacing F# library coden - web api:white_check_mark:
solution8Solution7 + Persistent Membership Table in DynamoEB, ECS hosting, CloudFormation Template.:white_check_mark:Dynamon1 C# grain interfacing F# library coden - web api:white_check_mark:

*visual studio code support:

*remote containers support: ability to develop/build/run/debug code inside containers. This is to support those who just want to quickly pull the repository code and experiment with it with e.g. Visual Studio Code. Code + batteries included.

further reading

to watch