Trying to understand forwarding proxies

Norbert Hartl norbert at hartl.name
Wed Feb 2 19:34:21 UTC 2011


After 4 years of abstinence from Magma I try to get back in touch to evaluate some new ideas. I was thinking how to utilize magma in a cloud environment like the one from amazon. So I'm interested in possible scaling scenarios.

If I understand it correctly then

- magma uses a directory to write its files. That could be called the repository
- one repository is served by one server at any time
- a special mode is possible where the client and the server reside in the same image (thus having only the need for a single image)
- HA splits one node over certain locations. A node is an arbitrary amount of servers serving a single shared repository
- forwarding proxies can be made from server to server. So these are cross-domain/cross-repository

Talking to magma is done using a session. So I can do the following.

- talk to a HA node that will read from an arbitrary server but will commit to a single one
- mimicking a domain model by using forwarding proxies. So objects partitioned over multiple repositories appear to be in the same domain
- using multiple sessions to read from multiple servers. That would be the case of domain model partitioning

Up to here I would like to know what is the tradeoff in using forwarding proxies. Is the whole communication done via the proxy on the first machine or is another session created to which the client has direct access? Or to be more precise: If I would have a forwarding proxy to a collection in another repository that would hold objects from a third repository and I would detect: an object from that collection to which server am I talking when invoking a method on that detected object?

As far as I remember sessions are not the most performant thing to establish. Do I remember that correct and has this changed? Same question goes for the start of a repository. Is this a quick operation or are there a lot of preparation steps that make startup rather slow?

I hope these are not too much dumb questions. I'm just thinking about possibilities to what would be worth to try out. With amazon you can have multiple machines attached to a shared block storage. That can share all the repositories over an arbitrary amount of machines. But at the moment I can see how to get a lot of benefit from that particular feature regarding magma. If forwarding proxies are not too expensive that would be still enable some things.

thanks in advance,

Norbert


More information about the Magma mailing list