You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
to have a more clear division from a component perspective.
Solution Proposal
The current EDC project structure reached a state where some things cannot be obtained (like permitting "extenders" to implement a custom api layer using the core services) and in general a not-so-clear state.
My proposal would be to have a more clear division from a component perspective.
A component is a particular EDC combination of dependencies that respond to a particular need, e.g.: control-plane, data-plane, data-plane-selector.
This would help developers to extricate themselves in the codebase more easily and separate responsibilities in a better way.
Every component should have its own spi module, then other "common" spi could exist as well (like core, catalog, transport and web)
Some details:
the asset-spi would be extracted from the core-spi
the *Service interfaces should be moved to the control-plane/*-spi
Core
Responsibility of the core modules should be to provide a working base version of every component, so it should provide a default implementation for every interface present in the relative spimodule, so these three module will be introduced:
control-plane-core: would contain all the default implementations of the stores and the services and an extension that register them as default
data-plane-core: is the current data-plane-framework extension, will register all the default implementations
data-plane-selector-core: is the current selector-core module
All of them should extend the base-core module. The defaults module would probably disappear (replaced by the <component>-core ones)
Extensions
This separation could be raised also in the extensions folder, as some extensions are needed only by one of the components, for example:
control-plane: data management api, provisioners (s3, blobstorage, http...), "stores" sql/cosmos implementations (for assets, contracts, transfer process, policies...), data-plane-selector client, ...
data-plane: implementations of the source/sink interfaces like data-plane-http, data-plane-s3, and so on.., data plane specific api (data-plane-api module)
data-plane-selector: implementations of the DataPlaneInstanceStore
common (needed by more than one component): observability api, vault, configuration, http, loggers, iam, ...
Feature Request
Review the overall project structure
Which Areas Would Be Affected?
all
Why Is the Feature Desired?
Solution Proposal
The current EDC project structure reached a state where some things cannot be obtained (like permitting "extenders" to implement a custom api layer using the core services) and in general a not-so-clear state.
My proposal would be to have a more clear division from a component perspective.
Spi
The
spi
module should be refactored as:Every component should have its own
spi
module, then other "common" spi could exist as well (likecore
,catalog
,transport
andweb
)Some details:
asset-spi
would be extracted from thecore-spi
*Service
interfaces should be moved to thecontrol-plane/*-spi
Core
Responsibility of the core modules should be to provide a working base version of every component, so it should provide a default implementation for every interface present in the relative
spi
module, so these three module will be introduced:control-plane-core
: would contain all the default implementations of the stores and the services and an extension that register them as defaultdata-plane-core
: is the currentdata-plane-framework
extension, will register all the default implementationsdata-plane-selector-core
: is the currentselector-core
moduleAll of them should extend the
base-core
module. Thedefaults
module would probably disappear (replaced by the<component>-core
ones)Extensions
This separation could be raised also in the
extensions
folder, as some extensions are needed only by one of the components, for example:control-plane
: data management api, provisioners (s3, blobstorage, http...), "stores" sql/cosmos implementations (for assets, contracts, transfer process, policies...), data-plane-selector client, ...data-plane
: implementations of the source/sink interfaces likedata-plane-http
,data-plane-s3
, and so on.., data plane specific api (data-plane-api
module)data-plane-selector
: implementations of theDataPlaneInstanceStore
Type of Issue
cleanup
Checklist
@Provider(isDefault = true)
service providers to the respective core extension #1812dataloading
module #1833token-spi
module #1834nimbus-jose
dependency fromjwt-spi
#1879ContractDefinitionService
interface exists twice #1248common/*
modules tocore/common/
folder #1884AssetLoader
/AssetIndex
andContractDefinitionLoader
/ContractDefinitionStore
#1886spi
modules should not rely on core ones #2033The text was updated successfully, but these errors were encountered: