Architecture #15752
Updated by François ARMAND about 5 years ago
There is no reason for them to remain separated in 5.1: their packages are merged, we never manage one without the other, there is no performance optimisation, etc. Moreover, we don't act at all as if they were separated, and so it's creating more problem than it solves: - add ~45Mo to the package, - create a second jetty war for nothing, - double needed connection to LDAP - forbid having triggers for new inventories (node cache, etc) On the other hand, merging the two brings several short-, mid-, and long-term: - centralized management of LDAP connection (so better overall configuration), - possibility to manage node caches directly with inventories (less ldap i/o, better temporalisation of generation), - simpler rudder config (only one war, only one config file for it, no more internal API for inventories...) - possibility to evolve towards a non app server+war (ie: a fully contained "app" with jetty embeded, or even the jvm/graalvm embeded) - simpler system techniques (remove send clean in the future...) So, we propose the following scheme: * 5.0, starting now We advertise The merge means that the following inventory API are deprecated and will be removed in 5.1: - /endoint/upload - /endpoint/status - /endpoint/info - /endpoint/watchers/[start, stop, restart] Make watchers more robust: trigger a restart every couple of hours, forcing a full rescan of inventory directories. * 5.1 API: - remove @/endpoint/status@ (its feature is replaced by the existing @/rudder/api/latest/info/status@) - remove @/endpoint/upload@: inventories are only parsed throught watchers. Perhaps we should keep that api in a secret non documented place during 5.1, change to be able to let people use it in case we forget some use cases. - move @/endpoint/info@ to rudder public api: @rudder/api/latest/inventories/info@ - move @/endpoint/watchers/...@ to rudder public api: @rudder/api/latest/inventories/watchers/...@ Technique systems: - remove send clean on root server, - do not edit inventory-web.properties Packaging: - remove /opt/rudder/share/webapp.[war, xml] - migration script to take the necessary properties from inventory-web.properties to rudder-web.properties. standard naming scheme.