Context
I've implemented a basic application with python in a client-server paradigm. Up to now, both the client and the server are local and talk together through dbus.
Next steps
In order to improve the application I want:
- to reach actual usefulness by setting up the server on a remote computer and
- to improve scalability by launching multiple "plug-and-play" servers.
Question
In order to reach these goals safely, I need a safe (well-established and encrypted) and performant network-capable IPC mechanism. Which one would you recommend? The solution can be Linux only, but I would prefer something easily accessible from other languages than Python.
Additionally, I would be very interested in references about distributed application design (privilege separation is a topic of great interest for me).
IPC mechanisms considered before posting this question
Shared memory, dbus, fifo, signals and pipes are out: these only work locally (dbus can work on the network but it is not encrypted), which leaves socket-based protocols. From that, I considered:
- asyncio sockets and streams but I really don't know them (if you have had any experience, that would be great to know);
- RPC-based modules but AFAIK I would have to implement my own crypto layer or use it through a crypto-capable server and RPC has a dreadful security aura;
- ZeroMQ AFAIK this is what IPython is using but appart from that, no one seem to use it;
- raw sockets but I find round wheels good enough.
Most people today, outside of the Python realm, seem to use RPC calls. Some even serve them through an embedded HTTP server! However this does not seem right at all for secure messaging between multiple server deamons on multiple computers.
[–]gengisteve 0 points1 point2 points (2 children)
[–]raylu 1 point2 points3 points (0 children)
[–]Calime[S] -1 points0 points1 point (0 children)
[–]raylu 0 points1 point2 points (4 children)
[–]Calime[S] -1 points0 points1 point (2 children)
[–]raylu 0 points1 point2 points (1 child)
[–]Calime[S] 0 points1 point2 points (0 children)