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

Project structure review #1596

Closed
18 tasks done
ndr-brt opened this issue Jul 5, 2022 · 0 comments
Closed
18 tasks done

Project structure review #1596

ndr-brt opened this issue Jul 5, 2022 · 0 comments
Assignees
Labels
refactoring Cleaning up code and dependencies
Milestone

Comments

@ndr-brt
Copy link
Member

ndr-brt commented Jul 5, 2022

Feature Request

Review the overall project structure

Which Areas Would Be Affected?

all

Why Is the Feature Desired?

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.

Spi

The spi module should be refactored as:

spi/catalog-spi
spi/control-plane
spi/control-plane/asset-spi
spi/control-plane/contract-spi
spi/control-plane/policy-spi
spi/control-plane/transfer-spi
spi/core-spi
spi/data-plane-spi
spi/data-plane-selector-spi
spi/transport-spi
spi/web-spi

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, ...

Type of Issue

cleanup

Checklist

@ndr-brt ndr-brt added the refactoring Cleaning up code and dependencies label Jul 5, 2022
@ndr-brt ndr-brt added this to the Milestone 6 milestone Jul 5, 2022
@ndr-brt ndr-brt self-assigned this Jul 18, 2022
@ndr-brt ndr-brt modified the milestones: Milestone 6, Backlog Aug 25, 2022
@git-masoud git-masoud modified the milestones: Backlog, Milestone 7 Sep 27, 2022
@ndr-brt ndr-brt closed this as completed Nov 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactoring Cleaning up code and dependencies
Projects
None yet
Development

No branches or pull requests

2 participants