Farmstack Tech Master Doc
Modules:
FS Core
FS Central
FS Participant
Points to work on:
Architecture of FS and tools required
Service oriented architecture vs Monolithic
Entities in FS - attributes, functions, operations
Database structure of FS entities (about connectors, policies, logs, users etc)
Wrappers around the entities available from Fraunhofer
Architecture of FS (other than connectors):
Decision points:
Service oriented vs monolith vs something else
Is distributed DB must?
Trade off: testability/ deployability vs faster development time
Feasibility: Distributed system
Collaboration: with dev partners like Fraunhofer and other potential partners
Possibility to refactor entire codebase later
Tools
Deployment scripts/commands/plugins
Data provider and consumer custom applications (ex: NodeJS, Python, Java).
User management frontend and backend.
User console for:
Deploying instances
Interacting with deployment servers.
Log for the user for services.
Important entities of FS:
Connectors:
Fraunhofer maintains the information model (declarative as well as programmatic) of the connectors/ usage policies/ contracts etc which defines the fields and attributes
DG should maintain:
Functionality to extract the attributes and create entries in DB that can be referenced later
Configurable templates of the connectors
Wrapper to easily instantiate connector(s) from the templates
Functionality to orchestrate through a frontend UI
Important categories of attributes:
Type (provider vs consumer)
Status (active, inactive, paused)
Certificate
Owner (org, person, certificate etc)
Structure (container #s, sequence etc)
Usage policies (type, metadata, status etc)
Certificates (in the section below CA refers to certificate authority and CnA will be Certification Authority):
Open questions:
Certification Vs Certificate Authority - what Fraunhofer does maintain is certification authority (authority on process of creating certificates rather than creating certificates)
We don’t need certification from IDSA to operate a connector
Will DG + Fraunhofer be a CA or CnA?
No, DG won’t be CA. The participant organisation doesn’t need a certificate since the access is given after manual verification
What are the services to obtain certificates for being a CA? Or is it a manual process?
Question is redundant as DG is not becoming a CA. FS needs to provide way to install TLS certificates to the connectors which can be obtained from ACME2 and a CA that needs to be decided (paid service)
Do the certificates need to be part of DB maintained by FS central/ core?
No, don’t think FS needs to have DB of certificates
??FS might need a DB of metadata of certificates??
Policies:
Fraunhofer maintains the information model that is serialized in json-ld
DG maintains:
Define the workflow -> web sequence diagram for FS
Functionality to extract the attributes and write to DB that can be referenced later
Configurable templates of the policies
??Wrapper to easily instantiate static policies ??
??Wrapper for dynamic policies - with Fraunhofer??
Functionality to orchestrate through a frontend UI
Important Attributes:
Type
Status
Certificate
Owner
Structure (can be multiple contracts)
Association with connector
Users
Organisations
Data resource (metadata of data)
Package (node/python app + docker container)
Is there a need to prove ownership of a package by the respective connector/ org?
What about the scenarios where the users insist on co-owning (multiple signatures)?
Participant host server
Central host server
Tools/ services:
Logging service:
Functionality
User | Requirements | Log viewer | Logs creation |
|
Participant user | Wants to monitor status of the connectors etc | 1) Status (active, paused) 2) Errors 3) Warnings 4) Notification ….. N) Data volume | 1) Connector Flushed out if the transaction is successful Parsed, extracted, transformed , archived for future reference |
|
Wants to debug if connector has stalled |
|
|
| |
Central | Wants to monitor network level activity | 1) |
|
|
Participant logs:
Low level logs (to be flushed out):
Connector logs: Lowest level logs generated to log files through the connector (debug logs)
Package logs: Logs generated by the app while providing/ consuming data to the connector (if any running on the provider)
Participant web console logs: High level logs to be provided to the admin/root of the web admin console (status, data volume,
User Management:
To be stored according to the framework/application we choose, ex OpenLDAP, ApacheDS, OpenDJ, etc.
User journey:
User signup and onboarding. (Backend for central storage of Users)
Pre Provisioning the Deployment Server - Get required server information (SSH key, Cloud Service Provider API Key (Currently for AWS)) from Participant. (We might need some server management tool installed in case of personal/datacenter server)
Provision the deployment machines using some kind of middleware (AWS CLI, Terraform or other third party interfacing tool), install prerequisites and configure settings for deployment.
Containerize the application (R&D required)
Generate certificates, configurations - policies, uc, authentication
Configure required yml and xml files. (including data sources)
Clone the fs-core (connectors) on the provisioned server(s).
Attach the generated configurations to the cloned fs-core.
Run the docker machine.
Section 1 - User Signup and Onboarding:
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 3 - Provisioning the deployment servers:
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 4 - Containerize the application:
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 5 - Generation of Configuration
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 6 - Configure required yml and xml files
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 7 - Clone fs-core (connectors) image on the provisioned server
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 8 - Attach the generated configurations to the cloned fs-core
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection:
Section 9 - Run the docker machine
Technologies under evaluations:
Evaluation Requirements:
Results:
Final Selection: