Kartotherian is gaining code without having a very strong component architectural base. It makes 3rd party deployments progressively harder, makes code too WMF deployment specific, and limits its growth. Being based on template-service seems to be more of a hindrance than help, as it became a proper fork without any easy way to re-merge.
I am looking for a long term refactoring strategy for Kartotherian and similar plugin-based services. There is a good writeup of the NodeJs architectural frameworks that might help.
Requirements
- Plugin-based architecture, with each deployment easily configurable with their own set of components and per-component configuration
- Easy to npm shrinkwrap deployment packages
- Usable in server (node's Express lib) and shell execution (batch shell scripts)
- Multiple auto-restartable parallel workers (at least for the web server mode)
- Support WMF's metrics/health monitoring
- Support WMF's docker-based deployment build system (unless we want to move to a better one?)