jExperience architecture overview
Personalizing the customer experience is in every marketer’s mind and has a strong impact on customer data integration, across channels and applications. This overview helps developers and architects understand how they can use and extend jExperience and jCustomer to integrate customer data.
At a high level, a typical environment is composed of the following:
An extensible customer digital experience platform that contains CMS, WCM, and portal features.
An A/B testing and personalization solution that leverages the Jahia platform and integrates with jCustomer.
The core Customer Data Platform (CDP) engine. jCustomer stores and indexes customer data and events generated by visitors.
The backend storage, indexation and query server system that stores data in jCustomer. It is also highly scalable and offers high-availability mechanisms.
Although the diagram above provides a good overview of the data flow, the actual environment deployed for production is slightly more complex.
An install typically includes the following layers:
- A reverse proxy
Deployed as a single node or a cluster, the reverse proxy faces the internet and exposes HTTPS endpoints proxying the requests to the internal Jahia and jCustomer nodes over HTTP(s
- Jahia nodes
These are instances of the CMS with the jExperience modules deployed on them. These instances are deployed in clusters and constantly communicate with each other. Jahia communicates with jCustomer over HTTP(s).
- jCustomer nodes
These are instances of the CDP, are deployed in clusters and constantly communicate with each other. jCustomer communicates with Elasticsearch over HTTP(s).
- Elasticsearch nodes
The Elasticsearch nodes use the custom networking protocol specific to Elasticsearch to communicate between them.
Ports and protocols
As shown in the above diagram, a collection of TCP ports is used by a typical jExperience installation. The following summary table lists the ports that need to be made available to ensure that jExperience and jCustomer works as expected.
|Default Ports||Service||Reachable by||Description|
|8080||Jahia Public interface||Reverse Proxy||Jahia’s interface used to provide access to the website(s) and access to jExperience.|
Used by Apache Karaf Cellar to keep track of cluster nodes and exchange configuration information
|jCustomer Public endpoint (exposed to the Internet) for event collection and context serving (for example profile, session, and segments)|
|jCustomer Administration endpoint, used to manage all jCustomer objects (for example segments and profile editing), also the jCustomer secure address (Endpoint used in a secure environment)|
|SSH access to Karaf console, useful during development and to debug deployment issues. Although password protected, this should not be publicly exposed.|
|Elasticsearch HTTP interface, used by jCustomer to talk to ElasticSearch and also used by other clients such as Kibana or other applications|
|5601||Kibana||Jahia||Access to the Kibana platform, providing a user interface over the data in the Elasticsearch cluster|