Page MenuHomePhabricator

RFC: Refactor Kartotherian to use an established plugin system
Open, MediumPublic

Description

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?)