I'm new to microservice architecture and orleans, it took me a few days to learn both of them, but still maybe some of the concepts are not very clear to me.
Is Orleans a microservice framework?
It seems to me that it is, but i'm not sure, may be it is part of microservice architecture.
could some one tell me and give some brief explanations?
I'd say it is. It's can be viewed as an orchestrator of micro services. Where each microservice is an actor.
I have an actor per domain object in my database. Then actors for each "microservice". Let's say I have a Unit model, and then a Status and Event microservice. I'd end up with a UnitActor, UnitStatusActor, UnitEventActor... And so I'd end up with 1 of each actor per Unit in my database...
The orchestration part comes in where all I care about is how many Silo's I have running. Kinda similar to server less function's...
I'd say that Orleans is a framework for implementing microservices, but it's not a microservice framework by itself. A microservice framework is concerned with deployment, management, discovery, orchestration of microservices, and things like that. Orleans helps build a microservice, and is concerned with managing computations, messaging, and failure handling within the logic of a microservice. One way to look at it is that grains are nano-services that together comprise a microservice.
For an example of a microservice framework built on top of Orleans, take a look at Microdot - https://github.com/gigya/microdot.
Does stateful Grains scale dynamically and frequently based on load?
Does stateful Grains scale dynamically and frequently based on load?
No, they don't. An individual grain gets activated upon a first request to it, and stays in the silo when it got activated until it gets deactivated either due to inactivity or because of a silo failure/shutdown/restart.
@sergeybykov so for the proper isolation between microservices I need to setup separate Orleans clusters for each microservice?
@aperevalov For a complete isolation, yes, you need separate clusters silos (that can still share hardware by running side by side on different ports). There's also the hybrid option of heterogeneous silos - http://dotnet.github.io/orleans/Documentation/Deployment-and-Operations/Heterogeneous-Silos.html.
Most helpful comment
I'd say that Orleans is a framework for implementing microservices, but it's not a microservice framework by itself. A microservice framework is concerned with deployment, management, discovery, orchestration of microservices, and things like that. Orleans helps build a microservice, and is concerned with managing computations, messaging, and failure handling within the logic of a microservice. One way to look at it is that grains are nano-services that together comprise a microservice.
For an example of a microservice framework built on top of Orleans, take a look at Microdot - https://github.com/gigya/microdot.