Skip to content

Basic Platform Settings


Platform Architecture

The platform is built on a microservice architecture that provides modularity, scalability, and flexibility. The key features of the architecture include:

  • Microservice Architecture: The system is divided into separate microservices, each of which performs a specific function and operates independently.
  • Distributed Processing: Microservices can be distributed across different nodes, providing load balancing and increased system resiliency.
  • Containerization and Orchestration: Using Docker to containerize microservices and Kubernetes to orchestrate them makes it easier to deploy, scale, and manage the application.
  • Modularity and interoperability of microservices: Modularity is achieved by clearly delineating functions between microservices, and communication between them takes place via specific APIs and interoperability protocols.

The system comes in eleven Docker container images:

Service Purpose
catalogs Storage and processing of user data; RLS support
data-flow Processing and storing custom data scripts
file-storage Binary data storage
identity User management and authentication
notification Sending notifications
scheduler Event scheduler in the system; all events are called via the bus
template-service Working with templates
view-service Storage of system metadata; orchestration of metadata update processes
workflow Scripting via the State Machine
web-studio Application development web part
web-workplace Web part for running applications


Technology Stack

  • Foundation: The platform is built on Net Core 8.0, a modular open-source software development platform.
  • Development Language: C# is used as the primary programming language.

Additional Infrastructure

  • PostgreSQL (version ≥13.0): Object-relational database management system for primary data storage.
  • Redis (version ≥5.0): A non-relational database used for data caching.
  • RabbitMQ (version ≥3.0): A software message broker for handling system events and queues.

Web Parts

  • Uses the Blazor front-end web framework, part of Net Core, to create web components.
  • Web Parts are run as a client-side WebAssembly (WASM).

Installation Requirements

  • Kubernetes: Kubernetes cluster is required for the clustered version of the product to work.
  • Minimum Configuration:
    • 1 x Master (2 vCPU, 4GB RAM, 20GB SSD) - 3 nodes with the Master role are recommended.
    • 1 x Ingress (4 vCPU, 8GB RAM, 20GB SSD)
    • 3 x Worker (16 vCPU, 32GB RAM, 60GB SSD)
  • Operating System: Ubuntu Server 22.04 LTS

Networking and Ports

  • All network traffic uses the TCP/IP protocol.
  • By default, each microservice (except web-studio) provides two ports:
  • 80: Public API (HTTP/1.1).
  • 5001: Private API (HTTP/2).
  • Web-studio: Provides only port 80 for serving static resources.
  • All microservices, with the exception of web-studio, must have access to PostgreSql, Redis, and RabbitMQ.

Protocols Used

  • HTTP/1.1: For public API.
  • GRPC: For private API.
  • WebSocket: For the Notification service.
  • SIP over WebSocket: Optional, for integration with SIP in a web-workplace.
  • RTC/RTCP: Optional, for integration with SIP in a web-workplace.

Storing Data

Each microservice manages its own scheme in the database, without overlapping with the others.

Service Scheme
catalogs catalogs
data-flow dataflow
file-storage file_storage
identity identity
notification notification
scheduler scheduler
template-service template
view-service view_service, maintenance
workflow workflow, wfc_persistence
web-workplace workplace-host


Each microservice is responsible for creating and migrating the metadata of its schemes.

The catalogs service, which is responsible for storing user data, creates an additional partition in its scheme for each data type, inherited from the primary table, as well as additional partitions to implement RLS if necessary. When these partitions are formed, all additional indexes and external keys are generated.

The composition of indexes and external keys depends on the configuration of the application you are building in the platform.

Authorization & Permissions Management

  • Local authorization using JWT tokens.
  • Ability to connect external authorization systems (oAuth, OpenId Connect, Windows authorization, SAML).
  • RBAC (Role-Based Access Control) for access control.

Collecting metrics and traces

All services, except web-studio, provide metrics in the ‘Prometheus’ format. Metrics are available by the relative path /metrics. To check the availability of the service, two paths are provided /hc and /liveness:

  • hc - detailed information on all checks;
  • liveness - a short response about the availability of the service.

Logs are collected by the system itself, all logs are written to the maintenance scheme, and log viewing is available in the web-studio. The logging level for each service is configured separately through the web-studio, the "Maintenance" section. Two Zipkin or Jaeger systems can be connected to collect traces. Trace collection is configured at the service parameter level. If you want to export traces to Jaeger, you need at least version 1.35.