AWS Lambda是下一个用例的良好解决方案:
多租户Web应用程序托管在AWS(EC2)上。动态/自定义数据集可由用户通过应用程序定义,数据存储在MongoDB中。需要一种允许用户定义规则的通知系统:在某些事件(实体创建/更新;属性更新)上将执行脚本功能。在脚本中,如果满足条件,则检查给定实体的条件并发送电子邮件通知。
一种可能的解决方案是脚本存储为Lambda函数,因为它看起来相对容易实现,但我不确定这是一个好的解决方案。可能有数以千计的Lambda函数。最大功能数量是否有一些限制?我害怕将用户定义的函数与我自己的函数分离,并且还将所有不同的租户函数混合在一个地方(因为Lambda没有为定义的函数提供某种树结构)。也可能意外更改或删除用户定义的功能......
或者使用一些嵌入式脚本?
来自AWS专家的任何意见,请...
答案 0 :(得分:1)
如果不了解有关数据架构和触发更新的规则类型的更多详细信息,很难推荐任何内容,但是您可以将规则存储在数据库中而不是在用户脚本中对其进行硬编码吗?然后你可以只有一个脚本来获取更新的数据并检查是否有任何规则可以导致更新数据的通知。
答案 1 :(得分:0)
恕我直言,最好避免陷入困境,你必须接受来自外部的代码(无法控制输入)才能在系统内运行。你会从那些希望你开发他们糟糕编写的脚本的客户那里得到太多的电话。
我拥有的产品允许用户描述他们想要导入的自定义数据集的架构。该产品与已知数据源集成,并将其转换为内部架构。此外,该产品允许客户从自定义来源导入数据,以及要在此类自定义来源的属性上描述的条件。
您是否考虑过对产品中的条件表达式(当前需要通过用户定义的脚本进行评估)进行建模,并实现评估相关触发条件的后端评估引擎?根据您的结果,可以触发后期操作(在您的案例中发送通知电子邮件)。这应该足以满足大多数情况。
即使您绝对必须在某些罕见的情况下支持某些自定义脚本,Lambda也是一种低效的选择。为每个必须执行的脚本创建执行环境是一种过度的做法。如果没有脚本失控,你将无法控制你的环境。托管脚本执行环境将是最佳选择。