Saltar al contenido principal
Kameleoon utiliza habitualmente un modelo Software as a Service (SaaS). En este modelo, Kameleoon aloja los datos del cliente (como experimentos, personalizaciones y cuentas) en una plataforma común. Kameleoon utiliza aproximadamente 150 servidores físicos (a fecha de 2023) para soportar las funcionalidades, incluido el alojamiento de scripts, la recopilación de datos, el almacenamiento y los informes analíticos. Kameleoon comparte datos en servidores comunes para todos los clientes y mantiene una separación lógica entre los datos de cada cliente. El código de la aplicación implementa restricciones para impedir que los clientes accedan a los datos de otros clientes. Kameleoon agrupa a los clientes en clústeres según su ubicación geográfica (país). Por ejemplo, los clientes franceses comparten datos dentro del clúster de datos francés, mientras que los clientes alemanes comparten datos dentro de los clústeres alemanes. Kameleoon siempre aloja físicamente el clúster de un país en un centro de datos en suelo de ese país, para garantizar la confidencialidad de los datos y el cumplimiento de las leyes de privacidad regionales. Incluso en el modelo SaaS predeterminado, Kameleoon aloja los datos recopilados en su sitio web en su país y cumple las leyes locales. Los clientes suelen elegir el modo self-hosting u on-premises por razones de rendimiento, confidencialidad de los datos o seguridad. Kameleoon admite plenamente el modelo on-premises y ofrece tres opciones para self-hosting. La primera opción le permite alojar el archivo de aplicación crítico de Kameleoon (y, opcionalmente, recursos públicos como imágenes) en sus propios servidores o CDN. Esta opción requiere de 2 a 3 días para configurarse. La segunda opción requiere configurar un clúster dedicado de almacenamiento de datos y lleva de 1 a 2 semanas. La tercera opción proporciona una configuración completa on-premises en la que aloja absolutamente todo en servidores dedicados. Esta configuración suele requerir de 1 a 2 meses.

Self-hosting del archivo de aplicación y de los recursos públicos

La opción on-premises más sencilla le permite alojar usted mismo el archivo de aplicación. Puede alojar de forma segura el archivo de aplicación de Kameleoon en el CDN de Kameleoon (predeterminado, configuración SaaS) o en sus propios servidores o CDN. Configure la opción en el back-office de Kameleoon, en la sección de configuración del sitio web. Puede elegir entre tres valores: sin self-hosting, self-host solo del archivo de aplicación, self-host solo de los recursos públicos, o self-hosting completo (tanto el archivo de aplicación como las imágenes). Revise las guías para el self-hosting con Cloudflare CDN o Fastly CDN.
Además de elegir la opción correcta de self-hosting, proporcione la URL de alojamiento prevista en el campo de texto. Kameleoon utiliza esta URL para generar un script de instalación correcto y para alojar las imágenes en self-hosting (ver detalles a continuación).

Self-hosting del archivo de aplicación

Alojar el archivo de aplicación de Kameleoon en sus propios servidores puede proporcionar un pequeño impulso de rendimiento al eliminar la consulta DNS adicional y el handshake SSL que requiere el CDN de Kameleoon. También puede optar por el self-hosting por razones de seguridad. Si sirve el archivo de aplicación desde sus propios servidores, puede garantizar el cumplimiento de las políticas de seguridad internas y gestionar directamente la seguridad de los servidores de alojamiento. Para alojar usted mismo el archivo de aplicación de Kameleoon, siga estos dos pasos:
  1. Proporcione la URL de alojamiento del archivo de aplicación en la etiqueta de instalación. Esto da como resultado una etiqueta de instalación ligeramente modificada respecto a las etiquetas predeterminadas.
Por ejemplo, si utiliza el método Carga asíncrona con anti-flicker, el archivo de aplicación de Kameleoon usa por defecto //SITE_CODE.kameleoon.io/engine.js. Cambie esta URL en la etiqueta de instalación por su propia URL (por ejemplo, https://www.customerdomain.com/resources/scripts/engine.js).
  1. Implemente la sincronización entre el archivo en sus servidores o CDN y el archivo original que genera la plataforma Kameleoon. Este paso es obligatorio, ya que el archivo de aplicación es dinámico; su contenido cambia cada vez que cambia el estado de un experimento o personalización en la plataforma o cuando modifica la configuración.
El método de sincronización adecuado depende de su configuración. Los CDNs proporcionan sus propias interfaces para esta configuración. Para el alojamiento web estándar en servidores HTTP como nginx o Apache, utilice un sencillo cron job para ejecutar un comando wget que recupere el archivo. Ejecute este job cada 5 minutos. Una vez completados estos pasos, podrá utilizar la plataforma Kameleoon con un archivo de aplicación auto-alojado.
Puede obtener un hash del contenido del archivo original mediante la Automation API. Utilícelo para verificar que el archivo copiado coincide con el original o para desencadenar la sincronización solo cuando cambie el contenido.
El siguiente ejemplo proporciona una etiqueta de instalación lista para usar y los comandos de sincronización.

Ejemplo: instrucciones para el self-hosting del archivo de aplicación de Kameleoon

<script type="text/javascript">
  // Duration in milliseconds to wait while the Kameleoon application file is loaded
  var kameleoonLoadingTimeout = 750;

  var kameleoonQueue = kameleoonQueue || [];
  var kameleoonStartLoadTime = Date.now();
  if (! document.getElementById("kameleoonLoadingStyleSheet") && ! window.kameleoonDisplayPageTimeOut)
  {
    var kameleoonS = document.getElementsByTagName("script")[0];
    var kameleoonCc = "html::after { content: ''; position: fixed; inset: 0; background: #fff; z-index: 2147483647; }";
    var kameleoonStn = document.createElement("style");
    kameleoonStn.type = "text/css";
    kameleoonStn.id = "kameleoonLoadingStyleSheet";
    if (kameleoonStn.styleSheet)
    {
      kameleoonStn.styleSheet.cssText = kameleoonCc;
    }
    else
    {
      kameleoonS.appendChild(document.createTextNode(kameleoonCc));
    }
    kameleoonS.parentNode.insertBefore(kameleoonStn, kameleoonS);
    window.kameleoonDisplayPage = function(fromEngine)
    {
      if (!fromEngine)
      {
        window.kameleoonTimeout = true;
      }
      if (kameleoonStn.parentNode)
      {
        kameleoonStn.parentNode.removeChild(kameleoonStn);
      }
    };
    window.kameleoonDisplayPageTimeOut = window.setTimeout(window.kameleoonDisplayPage, kameleoonLoadingTimeout);
  }
</script>
<script type="text/javascript" src="//www.customerdomain.com/resources/scripts/engine.js" async="true"></script>
En el snippet anterior, el origen del script utiliza la URL del cliente: //www.customerdomain.com/resources/scripts/engine.js. A continuación se muestran ejemplos de comandos de sincronización.
# wget command

wget https://SITE_CODE.kameleoon.io/engine.js -O /var/www/html/resources/scripts/engine.js -T 30 -t 3

# cron entry

*/5 * * * * wget https://SITE_CODE.kameleoon.io/engine.js -O /var/www/html/resources/scripts/engine.js -T 30 -t 3
Los dominios de los scripts de Kameleoon varían según el proyecto. Los proyectos usan kameleoon.eu o kameleoon.io según su fecha de creación. Utilice el dominio que se muestra en la aplicación Kameleoon para su proyecto.
Si utiliza unificación de datos de sesión entre subdominios, también debe alojar usted mismo un iFrame estático adicional (https://www.customerdomain.com/path/to/kameleoon-iframe.html). Revise la documentación Unificar los datos de sesión entre subdominios para más detalles.

Self-hosting de imágenes

También puede alojar usted mismo las imágenes subidas mediante la plataforma Kameleoon. Si elige esta opción y proporciona una URL de imagen, las URLs generadas para las imágenes subidas utilizarán su servidor o CDN. La ruta URL estándar para las imágenes subidas es SITE_CODE.kameleoon.io/images/. El CDN de Kameleoon sirve estos recursos. Si especifica una ruta diferente, como https://server.mydomain.com/path/resources/images/, debe configurar su CDN para que reescriba /path/resources/images/ en /images/. Si no necesita una ruta específica, use la ruta estándar: https://server.mydomain.com/images/. También debe utilizar un mecanismo de sincronización para el self-hosting de imágenes. Este proceso es más complejo que la sincronización de un único archivo, ya que debe contemplar varios archivos y no puede conocer de antemano los nombres y URLs exactos de las imágenes subidas. Utilice el self-hosting de imágenes únicamente a través de un CDN que proporcione un mecanismo de replicación integrado. Apunte su CDN para que sirva los recursos desde la URL de origen SITE_CODE.kameleoon.io/images/.
Los dominios de los scripts de Kameleoon varían según el proyecto. Los proyectos usan kameleoon.eu o kameleoon.io según su fecha de creación. Utilice el dominio que se muestra en la aplicación Kameleoon para su proyecto.

Clústeres dedicados para el almacenamiento de datos

Un clúster separado para el almacenamiento de datos separa físicamente los datos recopilados de los visitantes de su sitio web de los de otros usuarios de Kameleoon. Estos datos residen en servidores dedicados e independientes y ofrecen las siguientes ventajas:
  • Seguridad: La separación física proporciona un mayor nivel de seguridad que la separación lógica.
  • Rendimiento: Los servidores dedicados garantizan una velocidad óptima de almacenamiento y operaciones.
  • Acceso a datos en bruto: Kameleoon autoriza el acceso a bajo nivel a las bases de datos subyacentes (principalmente ClickHouse), permitiendo a sus científicos de datos ejecutar consultas personalizadas.
La configuración de un clúster dedicado de almacenamiento de datos requiere la instalación de varios sistemas de bases de datos de código abierto. Kameleoon utiliza cuatro tecnologías principales: Kafka, HDFS y ClickHouse (obligatorias), y Cassandra (en función del uso de los módulos).
  1. Kafka (obligatoria): Los productores envían todos los eventos de recopilación de datos a topics de Kafka, haciéndolos disponibles para las aplicaciones ETL.
  2. Hadoop File System (obligatoria): Kameleoon almacena todos los eventos de recopilación de datos en HDFS. Kameleoon reconstruye las visitas a partir de estos datos en bruto para utilizarlos en otras bases de datos escalables. HDFS sirve como almacén de datos principal y fuente de verdad.
  3. ClickHouse (obligatoria): ClickHouse es el motor OLAP que Kameleoon utiliza para crear informes analíticos. Puede ejecutar consultas personalizadas para análisis avanzados.
  4. Cassandra (requerida para personalización o reconciliación entre dispositivos): Kameleoon utiliza Cassandra para modelos de aprendizaje automático y la reconciliación de historial entre dispositivos.
Habitualmente, ingenieros experimentados de Kameleoon realizan la configuración y el setup del servidor. Kameleoon puede llevar a cabo estas operaciones en su centro de datos (servidores de su propiedad y operados por usted) o en los centros de datos de Kameleoon.
Revise los requisitos de servidor para el clúster de datos dedicado.
Los servidores deben ser físicos, bare metal. Actualmente, Kameleoon no admite servidores virtualizados.
ComponenteVersiónServidores mínimosServidores óptimosRAM recomendadaTipo de almacenamientoObservaciones
Kafka2.3.12232 GBDiscos giratorios (8 TB+)Confluent v5.3.1
HDFS2.9.12232 GBDiscos giratorios (8 TB+)Requiere 2 servidores para la replicación
ClickHouse22.3.31264 GBSSD recomendado
Cassandra4.0.11232 GBSSD obligatorio
Kameleoon recomienda la última distribución de Rocky Linux para todos los componentes.
Solo para pruebas A/B, utilice una configuración mínima de 5 servidores (6 recomendados). Para personalización, utilice una configuración mínima de 6 servidores (8 recomendados).

Modelo on-premises completo (back-office, clúster de almacenamiento de datos y alojamiento del archivo de aplicación separados)

En este escenario, aloja todos los componentes y la funcionalidad de la plataforma Kameleoon en su ecosistema de TI. Esto le permite implementar políticas de seguridad personalizadas, como restringir el acceso a las estaciones de trabajo corporativas a través de VPN. La aplicación Back-Office se ejecuta en un servidor Tomcat JEE y utiliza varias aplicaciones Java independientes que se comunican mediante ActiveMQ. Kameleoon utiliza MySQL como base de datos relacional para el back-office y nginx como servidor HTTP de alto rendimiento para recopilar eventos de datos desde los navegadores. Revise los requisitos de servidor para la pipeline de datos dedicada y el back-office:
ComponenteVersiónServidores mínimosServidores óptimosRAM recomendadaTipo de almacenamientoObservaciones
JDK/Tomcat/ActiveMQ1.8/8.0.47/5.14.51132 GBSSD recomendadoLas aplicaciones Java independientes están colocadas
MySQL8.0.211132 GBSSD recomendado
nginx1.20.11232 GBDiscos giratoriosIncluye una aplicación propietaria Java de análisis de logs
Kameleoon recomienda la última distribución de Rocky Linux para todos los componentes. Kameleoon proporciona la aplicación Back-office como un archivo WAR y otros módulos como archivos JAR.
Puede colocar el servidor MySQL junto con el servidor Tomcat JEE, pero Kameleoon recomienda evitar la colocación, salvo donde se indique, por razones de seguridad y rendimiento.
Para pruebas A/B, utilice una configuración mínima de 9 servidores (11 recomendados). Para personalización, utilice una configuración mínima de 10 servidores (13 recomendados). Calcule estos números sumando las tablas y añadiendo un servidor para el alojamiento del archivo de aplicación (reste uno si utiliza un CDN).