Show Menu
SUJETS×

Architectures réparties

Principe

Afin de supporter les montées en charge et assurer un service en continu sur le canal entrant, il est possible d'utiliser Interaction avec une architecture répartie. Ce type d'architecture, déjà utilisé avec Message Center, est constituée de plusieurs instances :
  • une ou plusieurs instances de pilotage dédiées au canal sortant et contenant la base marketing et l'environnement en édition
  • une ou plusieurs instances d'exécution dédiées au canal entrant
Les instances d'exécution sont dédiées au canal entrant et contiennent la version en ligne du catalogue. Chaque instance d'exécution est indépendante et dédiée à un segment de contacts (par exemple, une instance d'exécution par pays). Les appels au moteur d'offres doivent être effectués directement sur les instances d'exécution (une URL spécifique par instance d'exécution). La synchronisation entre plusieurs instances d'exécution n'étant pas automatique, les interactions d'un même contact doivent être envoyées vers une même instance.

Synchronisation des propositions

La synchronisation des offres s'effectue par packages. Sur les instances d'exécution, tous les objets du catalogue sont préfixés par le nom du compte externe. Cela permet le support de plusieurs instances de pilotage (instances de développement et de production par exemple) sur une même instance d'exécution.
Nous vous recommandons fortement d'utiliser des noms internes courts et explicites.
Les offres sont automatiquement déployées puis publiées sur les instances d'exécution et l'instance de pilotage.
Les offres supprimées dans l'environnement en édition sont désactivées sur toutes les instances en ligne. Les propositions et les offres obsolètes sont automatiquement supprimées de toutes les instances lorsque la période de purge (définie dans l'assistant de déploiement sur chaque instance) et la période glissante (définie dans les règles de typologie des propositions entrantes) sont dépassées.
Un workflow est créé pour chaque compte externe et environnement pour la synchronisation des propositions. La fréquence de synchronisation peut être ajustée pour chaque environnement et compte externe.

Limitations

  • Si vous utilisez la fonction de basculement (fall back) d'un environnement anonyme vers un environnement identifié, ces deux environnements doivent être sur la même instance d'exécution.
  • La synchronisation entre plusieurs instances d'exécution ne s'effectue pas en temps réel. Les interactions d'un même contact doivent être envoyées vers une même instance. L'instance de pilotage doit être dédiée au canal sortant (pas de temps réel).
  • La synchronisation de la base marketing n'est pas automatique. Les données marketing utilisées dans le cadre des règles d'éligibilité et des poids doivent être dupliquées sur les instances d'exécution. Ce processus n'est pas fourni en standard, vous devez le développer pendant la phase d'intégration.
  • La synchronisation des propositions s'effectue exclusivement par connexion FDA.
  • Si vous utilisez Interaction et Message Center sur une même instance, la synchronisation s'effectuera par protocole FDA dans les deux cas.

Configuration des packages

Les éventuelles extensions de schémas directement liés à Interaction (offres, propositions, destinataires, etc.) doivent être déployées sur les instances d'exécution.
Le package Interaction doit être installé sur toutes les instances (pilotage et exécution). Deux packages supplémentaires sont disponibles : un package dédié à installer sur les instances de pilotage, et un package dédié à installer sur chaque instance d'exécution.
Lors de l'installation du package, les champs de type long de la table nms:proposition , tels que l'identifiant de la proposition, deviennent de type int64 . Les types de données sont décrits dans cette section .
La durée de rétention des données doit être paramétrée sur chaque instance (via la fenêtre Purge des données de l'assistant de déploiement). Sur les instances d'exécution, cette période doit correspondre à la profondeur d'historique nécessaire au calcul des règles de typologie (période glissante) et aux règles d'éligibilité.
Sur les instances de pilotage :
  1. Créez un compte externe par instance d'exécution :
    • Renseignez le libellé et un nom interne court et explicite.
    • Sélectionnez le type Instance d'exécution .
    • Cochez l'option Activé .
    • Renseignez les paramètres de connexion à l'instance d'exécution.
    • Chaque instance d'exécution doit être associée à un identifiant. Cet identifiant est attribué lorsque vous cliquez sur le bouton Initialiser la connexion .
    • Cochez le type d'application utilisée : Message Center , Interaction , ou les deux.
    • Renseignez le compte FDA utilisé. Un opérateur doit être créé sur les instances d'exécution et doit posséder les droits de lecture et de modification suivants au niveau de la base de données de l'instance en question :
      grant SELECT ON nmspropositionrcp, nmsoffer, nmsofferspace, xtkoption, xtkfolder TO user;
      grant DELETE, INSERT, UPDATE ON nmspropositionrcp TO user;
      
      
    L'adresse IP de l'instance de pilotage doit être autorisée sur les instances d'exécution.
  2. Configurez l'environnement :
    • Ajoutez la liste des instances d'exécutions.
    • Définissez pour chacune la fréquence de synchronisation et les critères de filtrage (par exemple par pays).
      En cas d'erreur, vous pouvez consulter les workflows de synchronisation et de notification des offres, disponibles dans les workflows techniques de l'application.
Si, pour des raisons d'optimisation, seulement une partie de la base marketing est dupliquée sur les instances d'exécution, il est possible de définir un schéma restreint associé à l'environnement afin de permettre aux utilisateurs de n'utiliser que les données disponibles sur les instances d'exécution. Il est possible de créer une offre utilisant des données non disponibles sur les instances d'exécution. Pour cela, vous devez désactiver la règle sur les autres canaux en limitant cette règle au canal sortant (champ Pris en compte si ).

Options de maintenance

Voici la liste des options de maintenance disponibles sur l'instance de pilotage :
Ces options ne doivent être utilisées que dans des cas de maintenance spécifiques.
  • NmsInteraction_LastOfferEnvSynch_<offerEnvId>_<executionInstanceId>  : date de dernière synchronisation d’un environnement sur une instance donnée.
  • NmsInteraction_LastPropositionSynch_<propositionSchema>_<executionInstanceIdSource>_<executionInstanceIdTarget>  : date de dernière synchronisation des propositions d’un schéma donné d’une instance vers une autre.
  • NmsInteraction_MapWorkflowId : option contenant la liste de tous les workflows de synchronisation générés.
L'option suivante est disponible sur les instances d'exécution :
NmsExecutionInstanceId : option contenant l'identifiant de l'instance.

Installation des packages

Lors de l'installation des packages Interaction de pilotage et d'exécution, la taille en base de données des identifiants des propositions passe de 32 à 64 bits.
Selon le volume de propositions existantes dans votre instance, cette opération peut être très longue.
  • Si votre instance ne comporte pas ou peu de propositions, aucune modification manuelle de la table des propositions n'est nécessaire. La modification sera faite au moment de l'installation des packages.
  • Si votre instance comporte un grand nombre de propositions, il est préférable de changer la structure de la table des propositions avant l'installation des packages de pilotage et d'exécution. Nous vous conseillons d'exécuter les requêtes à une période creuse.
Si vous avez effectué des paramétrages spécifiques dans la table des propositions, adaptez les requêtes en conséquence.

PostgreSQL 

Deux méthodes sont possibles. La première (utilisation d'une table de travail) est un peu plus rapide.
Table de travail
CREATE TABLE NmsPropositionRcp_tmp AS SELECT * FROM nmspropositionrcp WHERE 0=1;
ALTER TABLE nmspropositionrcp_tmp
  ALTER COLUMN ipropositionid TYPE bigint,
  ALTER COLUMN iinteractionid TYPE bigint;
INSERT INTO nmspropositionrcp_tmp SELECT * FROM nmspropositionrcp;
DROP TABLE nmspropositionrcp;
CREATE INDEX proposition_id ON NmsPropositionRcp (ipropositionid);
CREATE INDEX nmspropositionrcp_deliveryid ON NmsPropositionRcp (ideliveryid);
CREATE INDEX nmspropositionrcp_lastmodified ON NmsPropositionRcp (tslastmodified);
CREATE INDEX nmspropositionrcp_offerid ON NmsPropositionRcp (iofferid);
CREATE INDEX nmspropositionrcp_offerspaceid ON NmsPropositionRcp (iofferspaceid);
CREATE INDEX nmspropositionrcp_recipientidid ON NmsPropositionRcp (irecipientid);
ALTER TABLE nmspropositionrcp_tmp RENAME TO nmspropositionrcp;

Alter Table
ALTER TABLE nmspropositionrcp
  ALTER COLUMN ipropositionid TYPE bigint,
  ALTER COLUMN iinteractionid TYPE bigint;

Oracle

La modification de la taille d'un type Number n'entraîne pas la réécriture des valeurs ou des index. Elle est donc immédiate.
La requête à exécuter est la suivante :
ALTER TABLE nmspropositionrcp MODIFY (
ipropositionid NUMBER(19, 0),
iinteractionid NUMBER(19, 0)
);

MSSQL

Les requêtes à exécuter sont les suivantes :
SELECT * INTO NmsPropositionRcp_tmp FROM NmsPropositionRcp WHERE 1 = 0;
GO
ALTER TABLE NmsPropositionRcp_tmp ALTER COLUMN ipropositionid BIGINT;
GO
ALTER TABLE NmsPropositionRcp_tmp ALTER COLUMN iinteractionid BIGINT;
GO
INSERT INTO NmsPropositionRcp_tmp SELECT * FROM NmsPropositionRcp;
GO
DROP TABLE NmsPropositionRcp;
GO
sp_rename 'NmsPropositionRcp_tmp', NmsPropositionRcp
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR dWeight
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iDeliveryId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iEngineType
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iInteractionId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iOfferId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iOfferSpaceId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iPropositionId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iRank
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iRecipientId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iStatus
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_deliveryId ON NmsPropositionRcp (iDeliveryId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_eventDate ON NmsPropositionRcp (tsEvent)
GO
CREATE UNIQUE NONCLUSTERED INDEX NmsPropositionRcp_id ON NmsPropositionRcp (iPropositionId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_lastModified ON NmsPropositionRcp (tsLastModified)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_offerId ON NmsPropositionRcp (iOfferId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_offerSpaceI ON NmsPropositionRcp (iOfferSpaceId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_recipientId ON NmsPropositionRcp (iRecipientId)
GO