Skip to content

Implementation

Bordi Tamás edited this page Jun 6, 2023 · 19 revisions

The core-java-spring project is the first implementation of Eclipse Arrowhead.

Technology Stack

Programming Language: Java 11

Why java? Because it is platform-independent as much as possible. When a computer has the Java Runtime Environment (JRE) installed, a Java program can run on it. Most types of computers are compatible with a JRE including PCs running on Windows, Macintosh computers, Unix or Linux computers, and large mainframe computers.

Programming Framework: Spring-Boot 2.1.5

Why Spring? Because it brings together years of wisdom in the form of design patterns. Spring has a long history of innovation, adoption, and standardization. Over the years, it's become mature enough to become a default solution for most common problems faced in the development of large scale enterprise applications.

Building Tool: Maven 3.5+

Why Maven? Because it is one of the most popular build tools in Java, designed to take much of the hard work out of the build process. Maven uses a declarative approach, where the project structure and contents are described, rather than the task-based approach used in Ant or in traditional make files, for example.

Database Management System: MySQL 5.7+

Why MySQL? Beacuse it was developed for speed, and maintains a reputation for being fast, even if this may come at the expense of some additional features. It is also known for its reliability, backed by a large community of programmers that have put the code through tough testing over the years.

Hardware Requirements

The hardware requirements really depend on the expected workload. Faster CPU / more cores / more RAM is likely to lead to improved performance.

Database

Minimum: 1 CPU Core, 600 MB RAM, 1 GB Disk space
Recommended: 2 CPU Cores, 4 GB RAM, 2+ GB Disk space (depending on the expected amount of data to be stored)

Java Runtime Environment (JRE)

Disk space: ~150 MB

Core system

Minimum (per system): 1 CPU Core, 128 MB RAM + ~100 MB RAM for the JVM, 100 MB Disk space
Recommended (per system): 4 CPU Cores, 2 GB RAM, 100 MB Disk space

Hint: customize the memory usage

Note: Please take into consideration, that the above mentioned requirements are reflecting the native deployment. If you use any additional containerization (like Docker, Kubernetes, etc..) or any virtualization, then more resources will be needed for the same performance.

Implemented Core Systems

Mandatory Core Systems

  • Service Registry
  • Orchestrator
  • Authorization

Supporting Core Systems

  • Certificate Authority
  • Choreographer
  • Configuration
  • Data Manager
  • Device Registry
  • Event Handler
  • Gatekeeper
  • Gateway
  • Onboarding
  • Plant Description Engine
  • Quality Of Service Monitor
  • System Registry
  • Time Manager

Interactive API Documentation - Swagger UI

Swagger is an Interface Description Language for describing RESTful APIs expressed using JSON. Core Systems are implementing Swagger UI in order to generate interactive API documentation that lets you try out the API calls directly in the browser. When a Core System is up and running, than Swagger UI is available at {address}:{port}/swagger-ui.html. In case of secure mode the System Operator Certificate will be required to load by the browser.

APIs are grouped as following:

Client

APIs are available for anyone within the local cloud.

Private

APIs are available only for specified Core Systems.

Management

APIs are available only for System Operators.

ABOUT

GETTING STARTED

Certificates

Quick start

How to contribute?

HINTS

MANDATORY CORE SYSTEMS

Service Registry

Orchestrator

Authorization

APPLICATION SYSTEMS

SUPPORTING CORE SYSTEMS

Gatekeeper

Gateway

Event Handler

Choreographer

Quality of Service Monitor

Certificate Authority

System Registry

Device Registry

Onboarding

Data Manager

Time Manager

Plant Description Engine

HawkBit Configuration Manager

Device Hub

Clone this wiki locally