• No se han encontrado resultados

6. Arquitectura y desarrollo

6.2 Descripción de la arquitectura

6.2.1 Interoperabilidad

La interoperabilidad es la capacidad de diversos componentes de un sistema o diferentes sistemas para operar con éxito mediante el intercambio de información, a menudo mediante el uso de servicios. Un sistema interoperable permite intercambiar y reutilizar información tanto interna como externamente [67].

El equipo consideró que la interoperabilidad es un requerimiento de arquitectura crucial dada las características del producto. El constante intercambio de información entre los

96 diferentes servicios del sistema obliga a definir estándares para su correcto funcionamiento e interpretación.

A su vez, la solución se destaca por su flexibilidad a la hora de comunicarse con las diferentes APIs de los servicios utilizados, sean Facebook, Google Ads, MercadoPago o cualquier otro en el futuro. El manejo de estas aporta un gran valor a la solución, por lo que saber utilizarlas de manera correcta es fundamental.

RESTful API como mecanismo de intercambio de información.

Todos los servicios del sistema fueron implementados bajo los principios de arquitectura REST, que se basan en el protocolo HTTP para el intercambio de información [68]. El equipo decidió que los mensajes deban ser transmitidos en formato JSON, y los endpoints compuestos en base a los recursos del sistema. Este mecanismo es ampliamente utilizado en la industria y permite una fácil integración para los servicios desconocidos que necesiten interactuar con este en un futuro [69]. Esto se debe a que las interfaces REST son simples, están hechas para ser autodescriptivas y manejan mecanismos de comunicación stateless [70]. Tal es el caso de posibles interfaces de clientes que tienen la posibilidad de integrarse directamente con tracker-api, como API gateway del sistema.

Servicios externos

La variada utilización de servicios externos al sistema implica que deba estar preparado para poder intercambiar información con estos, requiriendo que este sepa comunicarse e interpretar la información enviada y recibida entre ellos. Cada uno de estos servicios definen su contrato de comunicación y este debe ser correctamente utilizado por el sistema.

En la siguiente tabla se pueden visualizar los diferentes servicios externos con el cual interactúa el sistema y su tipo de comunicación.

97

Nombre Descripción Comunicación

Facebook Ads API de administrador de anuncios de Facebook

API REST

Google Ads API de administrador de anuncios de Google

API REST

MercadoPago API de pagos de MercadoLibre

API REST

SendGrid Email Delivery Service API REST

MailChimp Cloud CRM WebScrapping

Zoho Cloud CRM WebScrapping

Tabla 3 - Comunicación con servicios externos

Kit de desarrollo de software (SDK)

La creación de una SDK permite a clientes externos operar con el sistema mediante una especificación sumamente restringida y sin posibilidad de cambio. De esta manera se les ofrece a los clientes la facilidad de integrarse con el sistema de manera fácil y rápida, con bajo riesgo de la existencia de un cambio en la SDK impactando sus sistemas.

Actualmente la SDK está disponible en Java debido a la popularidad y robustez del lenguaje. No obstante, en el futuro se puede implementar la misma en nuevos lenguajes, según la demanda de clientes.

Algunas de las funcionalidades permitidas dentro de la SDK son:

• Envío de eventos de ventas para su procesamiento

• Creación, modificación y obtención de compradores

• Importación de archivos de pagadores de diferentes formatos

98

• Creación de usuarios administradores para el cliente

• Obtención de estadísticas según administrador de anuncios, fecha o comprador, entre otros.

• Vinculación de las cuentas publicitarias de los diferentes administradores de anuncios: campañas publicitarias y datasets.

• Habilitar/deshabilitar fuentes de datos tales como MercadoPago o CRMs específicas. También aquellas implementaciones que utilicen al Event Scrapper.

99 A continuación, se puede visualizar el README.md como guía para la implementación de la SDK en Java.

Ilustración 34 - README.md de SDK en Java

100 API pública

De la misma forma que la SDK fue desarrollada para que clientes de Conecta361 puedan conectarse con la solución sin necesidad de pasar por una interfaz gráfica, se expone una API que cumple con las mismas funcionalidades y brinda mayor flexibilidad que la SDK para su integración, pudiendo realizar más personalizaciones a su comportamiento.

Los endpoints de la misma pueden ser encontrados dentro del siguiente Anexo 13.12.

Event Scrapper: Bot de extracción de eventos

Una de las dificultades que tuvo el equipo al intentar obtener eventos de las diferentes herramientas utilizadas por los clientes de Conecta361, fue que estas no tenían APIs para su uso público. El equipo comenzó utilizando la API de MercadoPago que permite extraer información de las ventas y compradores. Pero otras herramientas como Zoho, MailChimp o Memory no disponen de APIs o las mismas no son gratuitas para su uso público. Es por esta razón que el equipo analizó las diferentes formas posibles de no perder el rastreo de dichas ventas.

En primer lugar, el equipo implementó la posibilidad de que los usuarios puedan importar archivos de las diferentes plataformas de CRMs como las ya mencionadas. Si bien este requiere de un trabajo manual para obtener estos archivos, el sistema lograba incluir

Ilustración 35 - Vista de importación de archivos en "Tracker361"

101 estas ventas para su procesamiento de conversiones. En la siguiente ilustración se puede visualizar el proceso a través de la plataforma de backoffice.

Sin embargo, el equipo busco automatizar aún más el proceso de extracción de datos, llegando así a la implementación de un bot que tenga la responsabilidad de extraer información de los eventos y compradores.

El Event Scrapper, como fue denominado por el equipo, funciona en base a tecnologías de web scrapping como Selenium Web Driver. Este mismo es ejecutado cada un tiempo fijo configurado por cada cliente, y puede ser personalizado para que extraiga información de cualquier fuente de datos. De esta forma, el sistema abarca de manera automática la extracción de datos sin importar si sus fuentes son accesibles por API. A continuación, se puede ver el flujo del bot.

Ilustración 36 - Flujo de scrapping por Event Scrapping

102