Onesait Platform is built via the development of a set of modules that provide different features, as well as through the integration of different open source products, applying the necessary adaptations to provide a unique and integrated view of all of them.
The main technologies used in the Platform can be grouped into these five blocks:
- Core technologies.
- Communication technologies.
- Technologies based on Open Source products.
- Storage technologies.
- Deployment and execution technologies.
This article deals with the first two blocks of technologies.
They are the technological foundation on which all the modules of the Platform and the integration connectors with the incorporated Open Source products, such as Kafka, Drools, Camunda, etc., are developed,
- Java 8: Provides the execution environment for most of the Platform’s modules. In Onesait Platform, almost all the developments and integrations with products are programmed in Java 8.
- Spring Boot 2 Spring: Provides a Java framework that greatly speeds up the developments and integrations between the different levels of an application, along with other applications.
In turn, Spring Boot 2 also brings a cleaner and more orderly framework by providing starters that abstract the programmer from the dependencies to be imported into the project. It gives a higher level of compatibility between different devices and also allows applications to run in a standalone modeby embedding the application container they need.
In the case of the Onesait Platform, each module deployed is an independent Spring Boot application that integrates the software into a Jetty web container. The Spring ecosystem is organized in projects. The main ones we use are:
- Spring MVC
- Spring Data
- Spring Web
- Spring Security
- Maven 3 + Nexus: as a support tool for the compilation of artefacts, and as a centralised dependency manager.
- Docker: offers the environment the containerized execution of the Platform. Each module is containerized so that its structure has a Dockerfile document through which, when the CI/CD cycle of generation of a version is executed, the Docker images corresponding to each module are generated. The dockerization depends on the type of module of the platform. In most cases, it involves creating an image to launch the module’s Spring Boot application – but, if it is a third party product (such as Kafka), it can include the installation of extension and configuration modification.
- MariaDB and MySQL: these are the two databases supported by the Onesait Platform to store all the configuration information of the platform. The platform supports any relational database as ConfigDB, but by default all scripts are certified with MariaDB and Mysql. Therefore you can use others like PostgresSQL but you have to allow time to adapt the installation scripts and certify the operation.
- Hazelcast: it is the platform’s datagrid in memory. It provides caching and messaging server functionalities between the different components of Onesait Platform. It is deployed as an independent module, to which the rest of the modules of the Platform are connected.
- REST/Swagger: This is a very versatile technology, with many uses in the Platform, including:
- Management API: All the concepts of the Platform (users, ontologies, clients, dataflows, etc.) can be managed from a management REST API, so that third party applications can be integrated with the Platform to manage any concept of the Onesait Platform, without the need for human interaction through the Control Panel.
- Communication protocol: The most extended communication protocol between the different modules. Onesait Platform is built under the paradigm of a distributed architecture based on microservices, each module being considered a microservice. This way, the different modules coordinate and communicate with each other via REST, in a distributed manner in the execution cluster provided by the container platform (CaaS), which has network and DNS services. Bear in mind that this is not the only communication protocol, but it is the most common one. There are others, such as P/S messaging and Queues provided by Hazelcast.
- JSON: It is the used data format, including:
- Business information of the applications in the ontologies., validating its semantics through JSONSchema.
- Digital Broker and Digital Twin Broker messaging protocols.
- REST operations on the API Manager
- REST APIs for managing the platform.
- Internal communications between modules.
- HTML5, CSS3 and Thymeleaf: these are the foundation to build the different web screens for the Control Panel management.
- AngularJS and VueJS: Gadgets and Dashboard are supported on these two technologies to build the dashboards.
- Spring Security + OAuth2: The security management of the platform is supported by a module that performs OAuth2 server tasks. It manages user sessions as well as the resources to which that user has access. Integrated with Spring Security, it provides both platform- and application-level security using Onesait Platform’s Realms. It allows integration with both LDAP and CAS.
The Onesait Platform is an information-centric platform that offers different input and query points. The choice of communication technology is made depending on the nature of the application accessing the information or on the way in which the information is generated.
The main used technologies are:
- REST/Swagger: modules such as the API Manager, Digital Broker and Digital Twin Broker have REST APIsdocumented with Swagger, for sending/querying for information,.
- MQTT and Websocket: the Digital Broker module also offers communication interfaces using these protocols.
- Kafka: provides a messaging broker, with message persistence and ability to process very high volumes of information. On the Platform, Kafka is used for different purposes:
- Digital Broker input: in high performance scenarios, where a large number of messages must be processed very quickly, clients of the platform may find suitable to connect to Kafka to make the information insertions there, and from there the Digital Broker will process the messages.
- Stream processing with KSQL: dumping the result to ontologies.
- OPC UA, CoAP, etc.: The Dataflow module, based on Streamsets, allows the ingestion of information from very different sources by using connectors to these sources and establishing a Platform ontology as the destination.
Having said this, we end this first article on the technologies we use in the Onesait Platform. Next week, we will see the three remaining modules, referred to technologies based on Open Source products, storage technologies, and deployment and execution technologies.
We hope you found it interesting, and if you have any doubts, please leave us a comment.