Browse Source

update architecture and introduction in readme

Mark deVilliers 2 years ago
parent
commit
14e2fcab6d
4 changed files with 61 additions and 10 deletions
  1. 2 2
      Makefile
  2. 59 8
      README.md
  3. BIN
      docs/multi-node.png
  4. BIN
      docs/single-node.png

+ 2 - 2
Makefile

@@ -18,8 +18,8 @@ get-build-deps: ## install build dependencies
18 18
 .PHONY: get-build-deps
19 19
 
20 20
 check-vendor-licenses: ## check if licenses of project dependencies meet project requirements 
21
-	@goliscan check --direct-only
22
-	@goliscan check --indirect-only
21
+	@goliscan check --direct-only -strict
22
+	@goliscan check --indirect-only -strict
23 23
 
24 24
 .PHONY: check-vendor-licenses
25 25
 

+ 59 - 8
README.md

@@ -1,14 +1,51 @@
1 1
 # decode-prototype-da
2 2
 
3
-Deliverable for D3.2
3
+This repository contains an early stage prototype working demonstrator which is capable of:
4
+- private IoT data
5
+- search
6
+- data entitlement
7
+- decentralised data access
8
+
9
+The architectural context for the prototype is based around the discussions in the first 6 months of the
10
+[DECODE project](https://decodeproject.eu/) by the technical partners [Thoughtworks](https://www.thoughtworks.com/), [Dyne](https://www.dyne.org/) and [thingful](https://www.thingful.net). 
11
+
12
+The purpose of the prototype is to demonstrate the concepts from the DECODE project grounded in an IoT usecase.
4 13
 
5 14
 Architecture
6 15
 ------------
7 16
 
8
-TODO
17
+The prototype is implemented as a set of HTTP services exposing various endpoints accepting various JSON messages in a REST-like manner.
18
+Each of the services is documented with a [swagger api](https://swagger.io/)
19
+
20
+An overview of a single node system.
21
+
22
+![single node overview]( docs/single-node.png)
23
+
24
+In this diagram two IoT devices logically direct their data to the node service. The node service owns an instance of the storage service. 
25
+The node has a relationship with the metadata service.
26
+
27
+The node service is responsible for:
28
+- maintaining the configuration of data entitlements.
29
+- accepting data from one or more sources - in the prototype this is a selection of IOT devices.
30
+- orchestrating the discoverability and accessibility of the data as per the configured data entitlements.
31
+
32
+The node service has a storage service which is responsible for:
33
+- maintaining any saved data points
34
+
35
+The node service corresponds to the concept of the DECODE node in the DECODE Architecture whitepaper. 
36
+Please note this has not been made public yet.
37
+
38
+The metadata service is responsible for:
39
+- maintaining an index of discoverable data and their locations.
40
+- displaying any data that is accessible.
41
+- allow a user to make an entitlement request to access data that is not yet accessible.
42
+
43
+Both the node and metadata service expose a user interface.
44
+
45
+The architecture is designed to scale with multiple DECODE nodes using a single metadata service.
46
+
47
+![multi-node overview] (docs/multi-node.png)
9 48
 
10
-Global metadata service
11
-Nodes holding their IOT data and entitlement data
12 49
 
13 50
 Walkthrough
14 51
 -----------
@@ -19,9 +56,10 @@ TODO
19 56
 Notes
20 57
 -----
21 58
 
59
+Please note the following:
22 60
 - this is a prototype and not production software.
23
-- there is no authentication and authentication.
24
-- all data is held in memory - resetting the environment will reset all of the data
61
+- there is no authentication and or authorisation.
62
+- all data is held in memory - resetting the environment will reset all of the data.
25 63
 
26 64
 Building
27 65
 --------
@@ -55,10 +93,16 @@ make docker-build
55 93
 To run the application components via docker compose
56 94
 
57 95
 ```
58
-make docker-up
96
+docker-compose up
59 97
 ```
60 98
 
61
-The prototype should then be available at the following urls 
99
+The docker-compose tool will then map the ports exposed by the containers to local ports on you own machine.
100
+
101
+The ports it will try and use are - 8080, 8081 and 8083. 
102
+
103
+If theses ports are already in use the docker-compose tool will display a warning.
104
+
105
+The prototype should then be available at the following urls
62 106
 
63 107
 'node' swagger api - http://localhost:8080/apidocs
64 108
 
@@ -70,3 +114,10 @@ The prototype should then be available at the following urls
70 114
 
71 115
 'storage' swagger api - http://localhost:8083/apidocs
72 116
 
117
+
118
+To stop the application components via docker compose you can either type Ctrl-C or from another window issue the command 
119
+
120
+```
121
+docker-compose down
122
+```
123
+

BIN
docs/multi-node.png


BIN
docs/single-node.png