The modular system

Instead of pushing a monolithic system on to a customer PhenixID server has a "only install what you need" approach. System functions are divided into smaller pieces, modules. Each module provide a very narrow and well defined set of functions, a micro service. By putting these microservices  together PhenixID server becomes a very powerfull system.

Modules are used/loaded by the system on demand and can be turned on and off through configuration.  By only installing required modules PhenixID server is kept as small as possible.  

A module can have one out of two possible purposes: A runtime module or a UI module.  

Each module possibly has it's own configuration and is self contained.

 

 

UI module

A UI module provides a graphical interface. Mainly used for system configuration and Identity management. A UI module is installed inside a UI container called phenix-prism. Example of UI modules are start, report and guides. All found in the boot.json file.

Runtime module

Runtime modules are modules without any UI providing the day to day functionality. A runtime module can be installed onto any node in a potential cluster and is self contained.

A deployed runtime module will serve requests from any node in a cluster. Not just the node it resides on. Runtime modules deployed on multiple nodes functions as a unity, providing high availability.  

 

Key modules

There are a number of functional and UI modules bundled with the PhenixID server some are used to solve edge use-cases but some are to be considered key and will be deployed in every installation:

  • com.phenixidentity~phenix-store-json - responsible for system configuration. Data is stored in RAM and persisted in a JSON file. Changes made in the file will cause a full system reload. System will not work without this module
  • com.phenixidentity~phenix-pipes - handles data access and manipulation. Reads data from data sources. Authenticates users.
  • com.phenixidentity~phenix-session-manager - handles all sessions in the system. Used by both UI and runtime modules.
  • com.phenixidentity~phenix-store-mpl -  persistance layer for reporting, user tokens and One Touch assignments.
  • com.phenixidentity~phenix-prism - UI container module. Responsible for deploying UI modules.

 

Add a module for deployment

To deploy a module in the system the configuration file, phenix-store.json, needs to be updated.

Locate the file and open it. Locate the NODES section in the file.

Within that section locate the node on which you want to deploy the module: "id" : "<the node name>",

Under that node locate the modules section : "modules" : [ {..........

add the new module configuration into the list:

    {
      "module" : "<module name>",
      "enabled" : "true",
      "config" : {}    
    }

Save the file.

If the module is deployed successfully the configuration just added is updated with a "_deployed" : "true" entry.