Architecture Overview
In this article we will focus on the architecture of Pricefx software in the scope needed for people focused on solution implementation.
Pricefx Landscape
In a nutshell:
Pricefx performs various types of calculations (Pricelists, Quotes, Promotions, Rebates, etc.) and also analyzes the data.
For all such operations, data is required. This data comes from other systems.
The calculation results are then exported to systems, which further use them.
Commonly we send/receive data to/from:
CRM
SalesForce (SFDC)
C4C (from SAP)
ERP
SAP
Reporting & BI
Pricefx Platform
Pricefx Platform
The whole ecosystem (the superset of all services and features that Pricefx offers), which includes: Pricefx core (backend application, frontend), PlatformManager, Market Place (with Integration Templates and Accelerators), the API, the documentation, the integration (incl. Integration Manager), Apps (to embed Pricefx into CRM systems).
Pricefx Core
The pricing application (backend and frontend).
Pricefx Developed Apps
Basically plugins for CRM systems (for SFDC, C4C, …​) which allow Pricefx frontend to be embedded into those CRM systems, so that their users can stay in their familiar environment and be logged in via single sign-on.
Accelerators
Pre-implemented solutions of some business use case, which is packaged and available to be deployed via Platform Manager to a customer partition.
Integration Templates
Pre-created solution for integration use-case.Templates are available in the Market Place and deployed via Platform Manager to a customer partition.
Connectors
Describe to which systems we can connect (using Integration Manager) - we can connect to most systems, which have an API for integration.
Pricefx Core - System Architecture
Integration Manager is not part of Pricefx Core, but we discuss it here for better overall understanding.
Browser
To login and use Pricefx software you will be using a browser.The frontend application (running in your browser) consists of HTML, JavaScript and stylesheets and will upload into your browser from the "Frontend" Server.Whenever the frontend application needs to display some data, e.g. list of Price Lists or detail of a Quote, the browser application will make a call to the Backend Server.You can use any of the modern browsers like Chrome, Firefox, Edge, Safari.
Load Balancer / Proxy
Between the browser and the backend server is a load-balancer/proxy.
Application/Backend server
The Backend Server is called through its REST API.The server returns the data in JSON format, and the frontend application in your browser will show and format it to the user.
Database
All the data you create, like a new Price List or changes in a Quote, are stored in a database, which is connected with the Server using JDBC.For storage of data we actually use two databases:1) Maria DB – used for storage of Master data, Price lists, Quotes etc. and2) PostgreSQL - the engine behind Analytics module.
Integration Manager
To import and export data from and to Pricefx we use Integration Manager, which communicates with the Server using REST API calls, and with the outside world using various standard methods, like FTP, HTTP, WebService, etc.
Databases
The two databases usages are quite different; the differences are:
MariaDB
OLTP (Online Transactional Processing)
Lots of tables and relations.
Used almost all the time (continuously) - lots of small reads and writes.
Contains:
MasterData
Documents - Pricelist, Quotes, etc.
Configuration
PostgreSQL
OLAP (Online Analytical Processing)
Fewer tables.
System load is irregular, sudden-shocked.
Data for analytical processing:
aggregated
only selected attributes
summarizations of large datasets
Contains:
DataMart
DataSource
DataFeed
Optimizer Model
Partition / Multi-tenant
The Pricefx application is multi-tenant - it supports multiple customer access on the same backend server. The customer-specific space associated with each customer is known as a Partition.
The Partition encapsulates:
the customer’s data and
the customer’s specific configuration.
The name of a partition is required during the login process.
Backend Architecture
Let’s quickly review the architecture of the Pricefx core backend.
Cluster – This name basically denotes the backend server.A Cluster has more Nodes.In case of dedicated clusters, the name of the Cluster is usually the name of the customer.
Node – Think about it as a computer (either physical or virtual), which has an IP address. One node can run more JVMs.
JVM – One Pricefx program running (in Java Virtual Machine).It can be dedicated to certain tasks/roles, e.g. serve user requests (from UI), calculate Pricelists, additional slave/worker for distributed calculation of a Pricelist, etc.Also, one JVM can be used to handle more partitions of the customer - for example QA and PROD.
Scaling the Processing Power
The Backend server is designed in a multiple Node structure to balance and split load requirements.
The nodes can be dedicated to provide specific services like:
Serving Frontend requests (from users)
Pricelist calculations
Calculation Flows, etc.
Different tasks run on different Nodes. This is important to know, especially, when you’re using log files for debugging. Each Node has its own Log file.
The running nodes communicate with each other via a message broker package known as Redis. Redis is an in-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker, with optional durability.
Found an issue in documentation? Write to us.
Â