Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dependency-injection] Specific implementations should be configurable #27

Open
wkerckho opened this issue Jul 6, 2022 · 2 comments
Open
Labels
enhancement New feature or request

Comments

@wkerckho
Copy link
Contributor

wkerckho commented Jul 6, 2022

The current implementation uses Feather for dependency injection. This allows a modular architecture and implementation from a conceptual point of view. However, the actual configuration is static and is defined in code.

We could replace Feather with a dependency injection framework that supports external configuration (e.g. Weld). The benefits of this change are:

  • Dynamic configuration of backend technologies. This would make it easier to swap out implementations (e.g. replace the Pulsar based messaging component with a new Kafka based implementation).
  • Access to more advanced dependency injection features. Feather (which we use now) is intended as a lightweight implementation and offers limited functionality.
  • Reduce setup code and duplication of module configuration by introducing sensible defaults and only require explicit configuration when alternative implementations for specific interfaces are used.
@wkerckho wkerckho added the enhancement New feature or request label Jul 6, 2022
@wkerckho
Copy link
Contributor Author

Alternatively, we could also look into plug-in systems such as https://pf4j.org for loading extensions at runtime (we could use a Docker volume as the plug-in folder, so users can mount their own) and then keep on using Feather for injection. E.g. the OblxModule constructs we are using now, could then dynamically be loaded into the Feather environment, instead of being hardcoded (as is the case now).

@github-actions
Copy link
Contributor

The issue had no activity for 30 days, mark with Stale label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants