【问题标题】:Prepare audit events based on domain models基于领域模型准备审计事件
【发布时间】:2021-11-20 13:38:24
【问题描述】:

我有一个应用程序,它在没有自己的数据库的不同系统之间充当代理。应用程序涵盖的可能用例很少:

  1. 显示来自特定系统的数据
  2. 将数据存储到特定系统或系统

实际上这个应用程序有自己的前端和后端(带有 sping boot 和 angular stack)。后端负责从外部系统获取/放入数据,前端与后端通信,它对外部系统一无所知。此外,后端遵循六边形架构,并有自己定义的领域模型。

目前有一些要求涵盖与应用程序相关的业务用例的审计。例如,如果用户访问与应用程序相关的某些功能并在那里进行一些更改,则应该对其进行审核。

我在互联网上搜索了这个主题,但我只找到了像 https://docs.spring.io/spring-data/jpa/docs/1.7.0.DATAJPA-580-SNAPSHOT/reference/html/auditing.html 这样的基于实体的审计。对于我的情况,我需要类似的东西,但基于域模型而不是实体。

您能否推荐一些方向来解决这个问题?实际上,对于这样的用例,可以使用哪个库来使用域模型的状态来准备审计事件。我找到了类似https://logging.apache.org/log4j-audit/latest/gettingStarted.html 的东西,但我真的不确定这是否正确

【问题讨论】:

    标签: spring-boot audit hexagonal-architecture


    【解决方案1】:

    我想说您可以根据事件构建自己的审计策略。 让我们以您给出的示例为例:“如果用户访问与应用程序相关的某些功能并在那里进行一些更改,则应该对其进行审核。”。

    我假设您有一个服务可以处理来自 REST API 或类似的请求的这些请求。同一个服务不仅会与外部系统通信,还会发布一个事件,比如关于用户的信息以及执行的更改或更新(例如,您可以依赖 Redis,但还有其他选项,例如 RabbitMQ 甚至Kafka,取决于您希望您的审计功能有多可靠)。

    然后,您将让应用程序的另一个组件侦听这些事件,以便您可以将它们存储在数据库中(我想这就是目的)。或者,您甚至可以只为此目的使用单独的微服务,具体取决于该审计系统的复杂程度。

    如果您想要更“神奇”和自动化的东西,您可以尝试查看 Spring Boot Data Audit 代码以了解它是如何实现的,但您最终可能会构建一个过度设计的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2014-08-09
      • 1970-01-01
      • 2015-08-29
      • 2010-12-20
      相关资源
      最近更新 更多