DEV Community

Getting Started with Microsoft Orleans

Russ Hammett on October 07, 2018

Orleans is an open source actor framework built by Microsoft research, and was used for halo cloud functionality! What is an actor framework? Ano...
Collapse
 
nicholasjackson827 profile image
Nicholas Jackson

Great article! One comment though:

In a monolithic system, you can more or less only scale “up”.

While I mostly agree, load balancers are a very simple, common way of scaling "out" monolith applications. At my job, we have a web app that gets 1 million+ hits per day. It's load balanced across 6 servers and can be scaled quite easily.

Thanks for introducing me to this tech!

Collapse
 
kritner profile image
Russ Hammett

Very true, I'm not sure on all the terminology, but is it still a monolith if you're using multiple instances of it? Seems like there are multiple ways to break up a monolith if that's what you're dealing with; orleans and load balancing could both just be different methods of doing it no?

Collapse
 
nicholasjackson827 profile image
Nicholas Jackson

To me (and take this with a large grain of salt, still getting into the microservices arena), the difference between monoliths and microservices is separation and duplication. Each microservice is distinct in that it performs a single function and is separate from other services. A monolith performs all the actions.

For the case of the load balanced monolith, it's all the same application running the exact same code, just duplicated. The beauty of load balancing is that you can use the same application and get great performance across multiple machines.

Of course, that does come with the usual downsides of monolith, most importantly (to me) the inability to scale individual features of applications.

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

There is one other benefit worth mentioning to Orleans, the primary one in my mind. Statefulness. In many systems, services scale by being stateless. They remember nothing from before. They have to get the data shipped in on every request. That puts all the scalability pressure on the data storage. For certain types of use cases, updates come in too fast to make statelessness and "data shipping" work. Those cases have to use a stateful workflow where the data remains loaded and ready for computation. However, stateful services are more difficult to scale than stateless -- you can't just deploy more copies, you have to keep track of which node owns which states. That's where Orleans comes in. It handles the scaling for you while letting you take advantage of stateful processing.

Collapse
 
kritner profile image
Russ Hammett

All that sounds awesome! I'm hoping I can get into more information like that as I continue exploring (and posting hopefully :D).

Collapse
 
kspeakman profile image
Kasey Speakman

For sure. Thanks for the post!