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.