EMP is a server that can run on a single computer or a cluster of them. Since EMP's core is written in Erlang, nodes can be connected securely with encryption and do not need to be all in the same location. You can even have EMP separate and load balance all of the plugins across the cluster to keep things running at top speed.
Erlang also provides the ability to give a system fault tolerance. We have taken full advantage of this feature to make sure EMP will be able to run non-stop and catch all of those events that you need to catch. This means that we follow Erlang's OTP guidlines and support clustering to increase fault-tolerance.
The core is broken up into a tree structure, to support maximum separation of responsibility. The EMP server also supports multiple users, which can each have their own plugins. A user will also be able to subscribe to (but not interact with) internal system/root level plugins that can be used to monitor single services. We allow for this so that security systems can have several users monitor system level cameras without needing to run multiple camera watching plugins.
We will provide a UML and OTP tree documents, here when they are finalized.