Java es el lenguaje de programación utilizado para la lógica detrás de la importación y exportación de contenido.
El motivo principal es la familiaridad del lenguaje, y por el uso de librerias de Apache Kafka.
Actualmente utilizando Java 15.
Apache Kafka es utilizado como repositorio de eventos generados a partir de la importación de datos.
Kafka permite el almacenamiento de nuevos proyectos de ley, así como los cambios de estado, en el orden en el que suceden, facilitando la reutilización de eventos en distintos contextos.
Kafka Streams es utilizado para almacenamiento local de exportaciones y validación de datos ya procesados.
Versión actual: 2.6.0
Hugo es una herramienta de creación de sitios web basado en formatos de archivo de texto; principalmente Markdown.
La importación ha sido diseñada alrededor de las limitaciones actuales del sitio web del Congreso.
Como la información es expuesta directamente en la web, y no a través de un servicio web HTTP o formato estándar (ej. CSV), obliga a utilizar librerias que accedan y extraigan información directamente del sitio web.
La importación de datos utiliza la librería jsoup que permite acceder al sitio web y navegar la estructura HTML para extraer los datos.
Una vez importados los datos, son estructurados utilizando Protocol Buffers. Este esquema define la información actualmente considerada por el proyecto.
La información serializada en este formato es almacenada en tópicos de Apache Kafka para ser procesados luego.
Hay 3 procesos de importación:
Una vez que los datos son expuestos en tópicos de Apache Kafka distintos procesos de exportación son utilizados para generar activos que luego son desplegados:
Actualmente el back-end es local, es decir, Apache Kafka se ejecuta en un ambiente local (ej. Laptop) y los importadores ejecutados para obtener datos.
Los exportadores generan el sitio web que es desplegado en el hosting de GitHub.