Maintenance - Modularized Engine Components
FYI. This isn't ready yet but has been is in the work since the start of the month.
Problem
Different monitoring components pull in a lot of 3rd party dependencies. This can expose our engines to vulnerabilities which require a full engine upgrade to resolve
Because we want to be able to compile / validate rules from our workspace, our server also has a dependency on monitoring components. This means we're also pulling 3rd party dependencies into our web application / server
Solution
Break up components core into smaller plugins for specific applications technologies (i.e., Salesforce, Kubernetes, Docker, etc.)
Each plugin is dependent on a small components-core module which defines interfaces and shared classes
Plugins can pull in external dependencies as needed (e.g.Apache Camel)
Plugins can provide custom components and rules (e.g., Salesforce Event Monitor)
Plugins have their own version independent of Germain engines, so we can deploy patches to just the plugins if necessary