Quintiq TechnicalThoughtWorthSharing
Scalability is an essential design requirement for any planning software solution. It defines the ability of a system to cope with increased load. In this post I would like to describe the scalability features of the DELMIA Quintiq software.
The DELMIA Quintiq software is based upon a 3-tier architecture as shown in the following picture.
Every layer handles different types of transactions and therefore has a different load.
The visualization layer handles transactions from the concurrent user sessions. Every user action such as opening a form, clicking a button or scrolling leads to a UI transaction that will be handled by the components on this layer.
The integration layer handles all in- and outbound data transactions. For example storing an object in a database or receipt of messages.
The business layer processes both transactions from visualization and integration layer as well as internal transactions such as daemons. Because of this, the business layer can easily become a bottleneck and affect the responsiveness of the solution.
The component-based architecture allows DELMIA Quintiq components to run independently from each other on the same or different hardware. For example the Thin Client Engine component can be hosted on a different machine than the one that hosts the Application Engine. The separation between layers also enables DELMIA Quintiq to scale out by adding more components on all three layers. For example adding additional Thin Client Engines to be able to handle more concurrent sessions or by adding another Qintegrator component to be able process more messages in parallel.
Scaling on the business layer is realized using the DELMIA Quintiq Dataset technology. A Dataset defines a logical unit of data and behavior. As each Dataset runs independently of other Datasets, the Application Engine can process transactions on different Datasets in parallel.
An example of how a DELMIA Quintiq solution scales on the business layer is shown in the diagram below.
In this example taken from a express delivery operator, you see multiple application engines that each hold a number of Datasets where each Dataset represents a distribution center. If a new distribution center needs to be added, a new Dataset can be added to an existing application engine, or to a new application engine.
It is important to note that the ability to scale on the business layer depends on the business domain. For example domains that consists of independent subdomains as in the example above, scaling can be provided out of the box. However in domains that have dependencies between the subdomains, for example a manufacturing plant with different departments that depend on each other, typically customization is required to realize a scalable solution. It is therefore important to take scalability into account in the early design of a planning solution.
I hope you enjoyed this post. Let me know your comments!
