Great, thanks for the advice! HTTP + JSON is exactly what I would love to do. I was just unsure if it was kosher to do (embedding a lightweight web-server and running a daemon on top of it)
This isn't for sharing databases...I just need the info that is in a client's database to perform the required action. Technically, it could be performed all on their end, but I'd prefer this to be a SaaS for a variety of reasons.
This discussion is all about the agent that sits on the clients premises, correct? First define your server side RESTy JSON API. Then write poll based client agent, extract data, transform, PUT to API. Don't bother with embedded http server or rpc etc. Add a --daemonize option (it's _really_ not too complicated) for customers who don't like crontab. And finally customers who don't want to run your agent can write their own against your published API. Maybe they don't want out bound http directly from their db. They could implement different transport and have a shim to your API service.
PS: keep batching in mind when doing API. It'll behoove you and the customer when you get to real RPS.
edit: wait, you want the agent to receive requests for data? From what other clients?
> This discussion is all about the agent that sits on the clients premises, correct?
Correct.
> wait, you want the agent to receive requests for data? From what other clients?
I originally had this in mind, but while working through the problem it is both unnecessarily and a potential friction point (firewall issues with outside clients starting connections, etc). I'll just make the client poll the server at intervals for whatever functions need doing.
> First define your server side RESTy JSON API. Then write poll based client agent, extract data, transform, PUT to API. Don't bother with embedded http server or rpc etc. Add a --daemonize option (it's _really_ not too complicated) for customers who don't like crontab. And finally customers who don't want to run your agent can write their own against your published API. Maybe they don't want out bound http directly from their db. They could implement different transport and have a shim to your API service.
Excellent, this sounds simple and robust. I realized last night that if the client initiates all the connections, all it needs to do is create HTTP connections to URLs. Nothing fancy. Should even be pretty easy to BasicAuth over SSL too, which will be important for security.
I know Python has a few libraries for daemonizing scripts, I'll investigate those after the basic crontab functionality is complete.
Thanks again everyone. Glad to see that I was over-thinking things. Simple is good =)
This isn't for sharing databases...I just need the info that is in a client's database to perform the required action. Technically, it could be performed all on their end, but I'd prefer this to be a SaaS for a variety of reasons.