服务
关于
CloudProse博客
聚光灯

无服务器如何处理业务复杂性

无服务器有助于以标准化的方式传达业务复杂性。
贾里德·崔特(Jared Short Trek)
贾里德·肖特(Jared Short) | 2020年6月18日

最近,无服务器上最有趣的“挖掘”之一就是它并不简单的概念。典型的M.O.正在显示带有许多箭头和图标的复杂图表,让人在理解正在发生的事情时感到压倒性的复杂性和绝望感。另外,我相信人们可以看一下那些非常相似的图,然后看看现在通过体系结构和功能连接使隐性业务复杂性变得明显。

让我们以示例图为例 在Twitter上引起轩然大波.

如果您花时间阅读该论证的话,那么在论证的两面都有一些有效的观点。

对于我们将要进行的讨论,我花了一些时间在一个更传统的模型中对该图进行重做,其功能组件和连接现在通常在代码中处理 干净地 在“应用服务器”中建模。

显然,我可以自由地保留一些内容以简化此过程。但是,这与我从典型的设计会议中看到的图表相当接近。重要功能仍在此处建模,您知道将要使用的核心技术和服务以及大致的使用方式。将数据存储在DynamoDB表中,将文件上传到S3,用SES向用户发送电子邮件等。

比较这两个图,第二个肯定看起来没有那么危险了。

但是,在每条箭头结尾的线的后面都是隐式的代码堆栈,用于管理将所有内容连接在一起。看这张图,我无法确切地告诉您后台工作人员在做什么,或者系统的稳定性如何。我无法确切告诉您文件是如何上传到S3的,或它们是用来做什么的。

如果我们想要弄乱学究的军刀,我本可以将线条标记得更好些,或者添加一些顺序以使内容更加清晰。那错了。

当使用无服务器和云本地服务构建应用程序时,我们使用的构建块在个人之间具有更大的共享上下文。获得更丰富的词汇集。具有离散组件的副产品意味着我们的图以更清晰,更少抽象的方式传达意图和目的。

我有一个单一职责的lambda函数,而不是一个应用程序服务器。我没有“后台工作人员”,而是通过“步骤功能”使用状态机。有人可以查看我的图并收集上下文,而这些上下文将需要更多的故意工作才能以更传统的模式生成。

不要误会我的意思,没有人说无服务器很容易。您不能在周末采用它,而期望它在周三之前派息。 Cloud-Native并不能拯救您其他所有糟糕的决定。

我们许多人都在说,我想我们终于想出了办法,那就是无服务器有助于以标准化方式传达业务复杂性。用途明确的组件和服务有助于减少抽象,并使您更容易理解要构建的内容。此外,您通常可以了解系统在何处将存在不同类型的问题(可伸缩性,可靠性,安全性),并且架构师可以专门解决这些问题,而无需增加系统其他所有部分的复杂性。

如果您考虑一下,我们发现了云的“两次测量,一次切割”(图表两次,yaml一次?)。由于我们选择使用的服务的性质,现在需要一些额外的时间和周到的考虑,这可以为我们节省很多时间和痛苦。

作者
贾里德·崔特(Jared Short Trek)
贾里德·肖特(Jared Short)