【问题标题】:Best practice for system design checking a calculation results in JSON系统设计检查 JSON 计算结果的最佳实践
【发布时间】:2020-09-01 15:38:24
【问题描述】:

我有一个程序可以读取 JSON 文件、计算并在 S3 上输出 JSON 文件。

我的问题是我应该如何系统地检查输出计算是否可行?

我知道编写单元测试是我应该做的,但它不能保证输出文件是安全的。我正在考虑制作另一个在 lambda 上运行的程序来检查输出 JSON。

例如,假设程序正在计算具有上限价值的区域的动态定价。然后我想确保 JSON 文件中的所有计算结果不超过上限值,或者至少我想监控它们都是安全的还是有一些异常。

我想构建一个高效且健壮的异常检测系统,因此我不想在同一个程序中构建异常检查以避免单点故障。欢迎提出任何建议。

【问题讨论】:

    标签: amazon-s3 aws-lambda system-design anomaly-detection


    【解决方案1】:

    一种选择是使用 S3 触发器创建第二个 lambda 函数,以便在 JSON 文件从原始函数写入 S3 时触发。

    在第二个 lambda 中,您可以验证数据,如果有异常,您可能会触发 SNS 或 EventBridge 事件,该事件可用于记录/通知/警报有关问题,或者可能触发单独的进程以自动- 纠正异常。

    【讨论】:

      【解决方案2】:

      您应该使用Design by Contracts 又名面向合同的编程。也就是前置条件和后置条件。 如果输出永远不会超过某个值,那么这是产生该值的代码的后置条件。程序应该断言它的后置条件。

      如果其他一些代码依赖于一个有界值,那么这是该代码的先决条件。代码应该断言这个前提条件。这是Defensive Programming 技术的一种。

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 2021-09-20
        • 2014-03-20
        相关资源
        最近更新 更多