You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@streampipes.apache.org by GitBox <gi...@apache.org> on 2023/01/17 08:46:36 UTC

[GitHub] [streampipes] tenthe edited a comment on the discussion: StreamPipes Structure

GitHub user tenthe edited a comment on the discussion: StreamPipes Structure

# Overview StreamPipes Modules
I have looked at all the modules we have in our Java codebase and tried to summarize their main intent. I also added some discussion points that I noticed.

- **client** / **client-python**
	- Clients to interact with the StreamPipes API
- **commons**
    - Constants, Exceptions, Networking, Parser, Random(Generators), ZIP
- **config**
    - Configurations that can be changed by users, as well as configuratioins for the core service
- **connect-management**
	- Contains the adapter management, that is required in the service extensions during runtime
    - `DISCUSS` Should we rename the classes?
- **data-explorer**
	-  Application logic to query data from the time-series database
    - `DISCUSS` Should we change the module name?
    - `DISCUSS` Which classes should be moved to the **REST modules**
    - `DISCUSS` In this module we have a strong coupling to the InfluxDB
- **data-explorer-commons**
    -  Configurations, InfluxStore, ImageStore, TimeSeriesStore
    - `DISCUSS`  Can we move the code to module **data-explorer**
- **data-export**
	- Responsible to manage the export / import of StreamPipes configurations
    - `DISCUSS` Think about a different name. Can be confused with export of data explorer data.
- **dataformat**
    - Those modules contain all the implementation for the data formats
    - (cbor, fst, json, smile)
- **extensions**
    - Contains all modules with adapters, processors, and sinks
- **extensions-api**
    - Interfaces for the extensions (See module below)
- **extensions-management**
    - Application logic relevant for the modules that are implemented in **extensions**
- **integration-tests**
    - Contain tests for services that have third party requirements
- **logging**
	- `DISCUSS` Do we still need this module or is it legacy code
- **mail**
    - Logic to send emails via the system
- **maven-plugin**
    - Maven plugin to extract pipeline element information from code and provide it for the website documentation
- **measurement-units**
    - logic to deal with different units
- **messaging**
    - Different implementation for internally used message brokers
    - (jms, kafka, mqtt, nats)
- **model**
    - Contains all model classes of StreamPipes
    - This model is also used to automatically generate the model for TypeScript
- **model-client**
    - Model classes that are only required by the UI
    - This model is also used to automatically generate the model for TypeScript
- **model-shared**
    - Only contains annotations `TsIgnore` & `TsModel`
- performance-tests `REMOVED`
- **pipeline-management**
	- Contains application logic for the pipeline editor
- **platform-service**
    - Currently contains Resources for the data lake
    - `DISCUSS` Move those classes into other modules. How will we structure the REST modules?
- **resource-management**
    - `DISCUSS` What is managed in this module and what could be moved to `pipeline-management` or `connect-management`
- **rest**
    - The `impl` package currenlty contains the most REST endpoints
    - **rest-core-base**
        - Only contains two classes `AbstractAuthGuardedRestResource` & `AbstactRestResource`
    - **rest-extensions**
        - Rest enpoints of **service extensions**
        - Currently mainly endpoints to manage connect & pipelines
    - **rest-shared**
        - (annotation, impl, serializer, util )
- **sdk**
	- builder, extractor, helpers, 
    - Application logic to extend StreamPipes functionalities
- **sdk-bundle**
    - Contains no classes, is only used to budle several packages
    - `DISCUSS` Do we need this or can we move this to  **sdk** instead
- **security-jwt**
    - Logic to handle json web tokens
- **serializers-json**
    - Contains one class, the `JacksonSerializer`
    - `DISCUSS` Do we require a seperate module for this?
- **service-base**
    - Base module for StreamPipes services (**service core** and **service extension**)
- **service-core**
    - Is executed when StreamPipes is started
    - Contains migration scripts and starts up REST endpooint
- **service-discovery**
    - Only contains class `SpServiceDiscovery`
	- **service-discovery-api**
		- Interface of the service discovery 
	- **service-discovery-consul**
		- Consul implementation of the service discovery interface
- **service-extensions**
    - Module for extension services containing (adapters, processing elements, sinks, functions) during runtime
    - Contains `ExtensionsModelSubmitter` that is implemented by all extension services
- **sources**
    - Abstract classes `AbstractAdapterIncludedStream` & `AbstractAlreadyExistingStream`
    - Required for streams that are not created by connect adapters
    - `DISCUSS` Should we continue to support this or only rely on the connect API?
- **storage-api**
    - Interfaces of all classes that can be persistet in the database
- **storage-couchdb**
    - CouchDB implementation of the **storage-api**
- **storage-management**
    - Contains two classes `StorageDispatcher` & `StorageManager`
- **test-utils**
	- Contains utility classes to ease the creation of unit tests
- **user-management**
	- Responsible for user management within StreamPipes
	- Packages: authentication, encryption, jwt, model, service
- **vocabulary**
    - Contains classes with different vocabularies
- **wrapper**
    - Base module for the different wrappers
    - **wrapper-distributed**
        - Base module for the distributed wrappers
		- Contains one abstract class `DistributedRuntime`
    - **wrapper-flink**
        - Wrapper for Flink
    - **wrapper-kafka-streams**
        - Wrapper for Kafka Streams
    - **wrapper-python**
        - Python wrapper
        - `DISCUSS` Is this module still relevant for the new Python integration?
    - **wrapper-siddhi**
        - Wrapper for Siddhi engine
    - **wrapper-standalone**
        - Module for standalone wrappers that are not distributed

GitHub link: https://github.com/apache/streampipes/discussions/1038#discussioncomment-4600352

----
This is an automatically sent email for dev@streampipes.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@streampipes.apache.org