On 01/22/2013 01:09 PM, David Lutterkort wrote:
On Wed, 2013-01-09 at 08:01 -0500, Bryan Kearney wrote:
>> +1. We tried AMQP / QMF before and it ended up being a pain. Introduced
>> another service / point of failure.
> Just thinking out loud... QMF is a pain but is dead now I think. if you
> do callbacks you have to buy off on alot of networking. Can you put
> image factory in EC2 and run Aeolous in house?
Sorry Bryan, missed your question. Unfortunately not at the current
time. imagefactory depends on oz which depends on libvirt which cannot
be run in the cloud since we don't have virt-in-virt yet. There had been
discussions at various points to support separating the imagefactory
frontend / backends so as to facilitate things like this but that never
got implemented (and you'd potentially run into firewall problems in
this scenario as well).
I had discussed this w/ clalance in the context of changing the
tdl-launch utility [1] to use Oz directly but that looks like it won't
be feasible at the current time.
This is a very important point: the big difference between a webhook
approach and using messaging is that if A wants to notify B, in a
webhook world A needs to be able to establish a network connection to B
(so A in EC2 and B behind the firewall won't work) whereas in a amqp
world A and B only need to be able to get to possibly different brokers
that can talk to each other (e.g. A and B both to a broker in EC2).
When you want to work around that with messaging-over-HTTP, you'll have
to resort to things that really strain HTTP, like long polling.
David
Mentioned this before, but I've been becoming a fan of JSON-RPC [2]
which seperates the API from the transport. Obviously if a method
requires a persistant connection, only transports facilitating this
would be able to invoke that, but alot of methods do not require this
and method handlers can check the type of connection a request comes in
on to determine if the client issuing the request can proceed.
-Mo
[1]
https://github.com/aeolus-incubator/tdl-tools/
[2]
http://en.wikipedia.org/wiki/JSON-RPC