This project space is dedicated to the prototyping of Foundation TechStack initial version. Main goal is to validate the compatibility of technologies set assembly, their promises reality and to support the acceptance step (step 2) of the demonstrator V0
| TECHNOLOGY | VERSION | COMMENTS | HELP / SUPPORT |
| :— | :— | :— | :— |
| ReactBootstrap |v2.5.0 (Bootstrap 5.2)|POC state: OK build/run with ReactJS|- Getting started|
| ReactJS |18.2.0|POC state: OK build/run based on NodeJS sdk|- Documentations
- Node.js and NPM installation
- Node.js documentation
- react-keycloak/web
- keycloak-js|
| Eclipse Vert.x Event Bus Client |1.0.0-3-SNAPSHOT|@vertx/eventbus-bridge-client.js NodeJS module used with ReactJS|- NodeJS tutorial and libraries usage examples documentation |
| Eclipse Vert.x SockJS Client |1.6.1|Library version 1.6.1 used from Babel script; version 1.0.0-3 library of vertx/eventbus-bridge-client.js used from ReactJS over NodeJS module| |
| NodeJS |16.17.0|Used as application container of Frontend UI server
- Integrate NPM 8.15.0 version
- POC state: OK build/run| |
| Eclipse Vert.x Web |4.3.2|POC state: OK build/run on Eclipse Temurin JRE|- Documentation|
| Eclipse Vert.x Core |4.3.2|POC state: OK build/run with Eclipse Temurin JDK/JRE|Jackson Databind 2.13 required for POJO/JSON mapping of event via Redis channels
- Documentation
- JDK 1.8+
- GitHub project
- Vert.x Vault
- Kafka Connector
- Lettuce messaging plugin with Redis
- Vert.x OAuth2 Provider|
| Eclipse Vert.x Redis Client |4.3.2|POC state: OK build/run with Vert.x Core and Redis server|- Documentation|
| Eclipse Vert.x JWT |4.3.2|POC state: OK build/run with Vert.x Core|- vertx-auth-jwt extension module|
| Eclipse Vert.x OAuth2 Provider |4.3.2|POC state: OK build/run with Vert.x Core|- vertx-auth-oauth2 extension module documentation|
| Lettuce Client |6.2.0|POC state: OK build/run with Vert.x Core and Redis server|- Documentation|
| Eclipse Vert.x Kafka Client |4.3.2|POC state: OK build/run with Vert.x kafka client and Kafka server|- Documentation|
| Apache Directory Server |2.0.0| |- Apache directory studio LDAP browser|
| midPoint | | |- Installation requirements
- Docker Alpine image installation
- Tutorial|
| Vault | | |- docker image
- Installations
- Helm example
- Vault Helm Charts|
| Keycloak |18.0.2|POC state: OK build/run|- based on Bitnami Docker image
- Extensions
- Theming extension with React
- PostgreSQL (14.0.5 version) docker image based on Debian
- “keycloak-js” adapter|
| PostgreSQL |14.0.5|POC state: OK build/run under Bitnami Docker image| |
| Redis |7.0.4-alpine|POC state: OK build/run based on Bitnami docker image|- Documentations
- Official Docker Hub image of Redis 7|
| Apache Kafka |2.7.0|POC state: OK build/run, based on Debian, and linked via Zookeeper|- Documentations|
| Apache Flink | | |- Installation
- Visualizer web app
- Redis Connector
- Connectors|
| Telegraf Agent | | |- Documentation|
| InfluxDB | | |- Installation|
| Apache Zookeeper |3.6.2|POC state: OK build/run based on Bitnami docker image including Debian 10|- Documentation
- Java example
- Standalone local instance installation|
| Eclipse Temurin JRE |JDK/JRE 11.0.15|POC state: OK build/run with Linux Alpine|- OpenJDK distribution from Adoptium
- Installation of Eclipse Adoptium Temurin JDK
- Official images for OpenJDK binaries built by Eclipse maintained by Adoptium
|
| Linux Alpine OS |3.16.0|POC state: OK build/run with Docker| |
| Linux Debian OS |10|POC state: OK build/run with Docker| |
| Docker |Engine 20.10.17, Compose v2.6.1|POC state: OK image build and run over docker-compose|- Documentations|
| MicroK8s | | |- Snapd install|
A specific systems area is built and prepared for execution test as Proof-Of-Concept (POC) of integrated technologies.
The main applications focused for the POC is:
The main infrastructure services focused for the POC are:
flowchart LR
subgraph domain[Access Control Domain]
frontui[Frontend UI server]:::system --> backend[Backend UI server]:::system;
backend --> uispace[(Users Interactions broker)]:::techcomp;
gateway[Domain Gateway server]:::system --> domainspace[(Domains Interactions broker)]:::techcomp;
rtscomput[RTS Computation Unit server]:::system --> domainspace;
end
subgraph infrastructure[Infrastructure Services]
sso[Access Control SSO server]:::techsys --> secret[Secret management server]:::techsys;
idm[Identities & Access management server]:::techsys;
logging[Event Logging Server]:::techsys;
end
backend -.-> idm;
backend -.-> sso;
uispace -.-> logging;
gateway --> uispace;
domain:::area -.-> infrastructure:::area;
classDef system fill:#3a5572,stroke:#3a5572,color:#fff;
classDef techcomp fill:#fff,stroke:#3a5572,color:#3a5572;
classDef techsys fill:#e5302a,stroke:#e5302a,color:#fff;
classDef area fill:#fff,stroke:#3a5572,color:#3a5572,stroke-width:1px,stroke-dasharray: 5 5;
The implementation projects are managed over several sub-directories:
Several technologies are selected into the stack version for implementation of components and systems.
| SYSTEM | TYPE | TECHNOLOGIES | COMMENTS | STATUS |
|---|---|---|---|---|
| Asset Control FrontEnd UI server | Web Reactive FrontEnd | - Google Chrome web browser - ReactBootstrap - Keycloak js module - ReactJS Vert.x Event Bus Client - NodeJS |
Keycloak authentication integrated, with SSO token reused for collaboration with independent (CORS approach) other systems | Integration & runtime OK with Vert.x event bus client ensuring call to Asset Control Backend UI server (with SSO token collected during user’s authentication)POSTPONED: HTTPS support, packaged Docker image, MicroK8s execution |
| Asset Control Backend UI server | Reactive BackEnd Server | -Vert.X Event Bus Client - Vert.x Web - Vert.x Redis client - OAuth2 auth provider - Vert.x Core - Temurin JVM - Alpine Linux OS - Docker Image - MicroK8s |
JSON/HTTPS over SSO | Integration & runtime OK with Vert.x web module, Reactive ensured by Babel for html/css/js frontside, Keycloak server for accessToken check (got by connected user from FrontEnd server) used during event bus usagePOSTPONED: HTTPS support, packaged Docker image, MicroK8s execution |
| Asset Control & SSO server | Security Services | - Keycloak - PostgreSQL database - OpenJDK JVM - Debian Linux OS - Docker Image - MicroK8s |
Token management for front/backend’s user access | POSTPONED: HTTPS configuration, MicroK8s execution |
| Identities Access Management server | Security Services | - midPoint - Apache Directory Server - Temurin JVM - Alpine Linux OS - Docker Image - MicroK8s |
Include test account allowing call of Access domain read feature, and access check by application layer when coming from UI layer | POSTPONED |
| Secret Management server | Security Services | - Vault - Ubuntu OS - Docker Image - MicroK8s |
Test of storage/retrieve of user token used by Asset Control & SSO server | POSTPONED |
| Users Interactions broker | Users Interactions Space | - Redis Cluster - Telegraf Agent - Alpine Linux OS - Docker Image - MicroK8s |
Telegraf agent (plugin for Redis cluster) push monitoring to Event Logging Server | Redis/Linux/Docker integration & runtime OKPOSTPONED: Redis cluster mode with multiple instances, Telegraf agent, MicroK8S |
| Event Logging server | Logging | - InfluxDB - Ubuntu OS - Docker Image - MicroK8s |
Logs repository regarding Redis instances’ activities | POSTPONED |
| Areas & Assets Protection Domain Gateway server | Domains Gateway Server | - Java POJO, JSON message - Zookeeper Client - Lettuce client library to Redis - Vert.x Core - Kafka Connector - Temurin JVM - Alpine Linux OS - Docker Image - MicroK8s |
2 gateway simulated in only one instance for POC AREAS & ASSETS PROTECTION BOUNDARY Sample code which expose AAP UI capability api channel, and integrate the command/query events (e.g validate a request parameter like “command type, recipient domain”) of UI layer to domain, and execute the requested feature (e.g download of report UI capability) or delegate event when received on its API channel but supported by another domains (e.g asset control gateway server) ASSET CONTROL BOUNDARY Sample code which expose asset control api channel, integrate the command/query events of UI layer to dedicated domain, and forward the security features execution (e.g read of an asset description) via delegation to a RT computation unit (e.g domain model of Asset Control implementing the Security Feature named Asset); Java Processor/Consumer as domain application service layer |
Integration & runtime OKPOSTPONED: SSO integration |
| Domains Interactions Space cluster | Events Broker (Domains Interactions Space) | - Kafka Broker instances -Zookeeper Registries cluster (3 instances) - Debian OS - Docker Image - MicroK8s |
Kafka and Zookeeper clusters are Bitnami images based on Debian 10 OS; Kafka cluster managed/administration (e.g topics, consumers) via an instance of CMAK web server | Kafka/Zookeeper/Linux/Docker integration & runtime OK |
| RTS Computation Unit server | Real-Time Stream Computation Unit | - Apache Flink - Zookeeper Client - Kafka Connector - Flink CEP - Temurin JVM - Docker Image |
Asset feature java implementation with Flink; Flink CEP test for command chain pattern implementation that build the Asset description requested by the UI layer and provider by the Domain model |
- Vert.x/Kafka/JVM/Docker integration & runtime OKPOSTPONED: Flink |