Thoughts on realms

#1

When we first started working with crossbar and autobahn we thought that realms would be a great way to separate clients. e.g. 1 realm per client/customer.

Further into development however, I've come to the conclusion that, realms are not a good means to separate clients/customers.

In order to add new clients/customers you'd have to shut down the router, modify the configuration then start the router back up again.

Shutting down might work for small applications but it wouldn't scale well at all.

Our current solution is to instead dedicate realms to system level separation, such as "system" for non client access, "portal" for customer based access and "integration" for 3rd party system level integration.

This pattern then makes sense to use domain based URIs to separate different customers in the various services which makes it much easier to add new customers versus or old way of dedicated realms.

I'm curious what other realm patterns the community has tried or is developing.

Thoughts?

0 Likes

#2

Hi Greg,

using realms to separate clients/customers/tenants is exactly one use case realms are designed for.

As you've correctly noted, in real-world applications, this - realistically - requires an app to be able to _dynamically_ create and start realms.

We say this coming from the very beginning, and hence, Crossbar.io already has that ability. It's just not yet exposed (or even documented).

Crossbar.io internally has a WAMP based node management API. Everything possible from static configuration (and more) is possible with the management API but dynamically (at run-time, without stopping a node).

In fact, when a node starts, it simply reads the static config file, and then calls into the internal management API - that means: the relevant code is already there in the current Crossbar.io release.

If you are interested in this, just send me a private mail. We'll be starting a closed alpha program soonish.

Cheers,
/Tobias

ยทยทยท

Am 18.01.2016 um 09:08 schrieb Greg Keys:

When we first started working with crossbar and autobahn we thought that realms would be a great way to separate clients. e.g. 1 realm per client/customer.

Further into development however, I've come to the conclusion that, realms are not a good means to separate clients/customers.

In order to add new clients/customers you'd have to shut down the router, modify the configuration then start the router back up again.

Shutting down might work for small applications but it wouldn't scale well at all.

Our current solution is to instead dedicate realms to system level separation, such as "system" for non client access, "portal" for customer based access and "integration" for 3rd party system level integration.

This pattern then makes sense to use domain based URIs to separate different customers in the various services which makes it much easier to add new customers versus or old way of dedicated realms.

I'm curious what other realm patterns the community has tried or is developing.

Thoughts?

0 Likes