系统设计检查JSON中的计算结果的最佳实践

问题描述

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

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

我知道编写单元测试是我应该采取的一种方式,但是它不能保证输出文件的安全性。我正在考虑使另一个程序在lambda上运行,以检查输出JSON。

例如,假设该程序正在计算具有较高价值的区域中的动态定价。然后,我要确保JSON文件中的所有计算结果均未超过上限值,或者至少我想监视它们的安全性或存在异常情况。

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

解决方法

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

在此第二个lambda中,您可以验证数据,并且如果存在异常,则可以触发SNS或EventBridge事件,该事件可以用于记录/通知/警告问题,或者可以触发单独的流程来自动-正确的异常。

,

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

如果某些其他代码依赖于有界值,则这是该代码的前提。代码应声明此前提条件。这是一种Defensive Programming技术。