购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 应对一切的单一后端

我们可以使用AWS Lambda函数来发布应用程序的后端逻辑。但这样是否就够了?我们还需要做些什么来满足一个后端应用程序所有的用例和需求呢?除了AWS提供的能力之外,我们是否仍需要开发传统的Web应用呢?

让我们来全面地考察应用程序后端所应该包含的过程和交互(见图1-6)。用户通过互联网访问后端,后端包含了一些需要管理的逻辑和数据。

图1-6 用户通过后端服务与应用程序交互,请注意后端有一些逻辑和数据

取决于应用程序计划支持的设备类型数量,使用应用程序的用户可能选择不同的设备。同时支持包括Web界面、移动设备、供高级用户集成第三方服务的Open API等在内的交互方式,正逐渐成为行业标准,也是一款应用取得成功的不二法门。

但审视不同设备与后端通信的接口,我们发现这些接口通常都是不一样的:Web浏览器往往占据主导,因为这些内容都需要被用户界面(动态生成的HTML、CSS、JavaScript和多媒体文件等)和应用后端逻辑(采用API的方式呈现)使用(见图1-7)。

图1-7 与应用后端进行交互有多种方式,使用Web浏览器的用户获取的信息不同于其他的前端客户设备

如果移动应用是在Web浏览器接口实现之后才开发的,那么后端服务需要在以Web渲染为主的API基础上进行重构,以满足移动应用的需求。不论原始应用是如何开发的,这样的重构通常都不太容易(花费不必要的时间)。这还会导致两套后端应用并存的尴尬局面,一套服务Web界面,另一套服务移动应用和可能的新设备,比如可穿戴设备、家庭自动化系统、物联网等。即使这两套后端被很好地设计,能够共享大部分功能(代码),这也是对开发资源的浪费,因为今后添加每一个新功能都需要理解两套平台上的实现差异,运行更多的测试,在一系列毫无价值的工作上浪费时间。

如果对数据进行分类,把可以导入一个或多个数据库的结构化数据分成一组,把文件之类的非结构化数据分成另一组,我们就能用以下几步,完成对整体架构的简化:

·增加一个安全的Web接口来访问所有的文件存储,这可以成为客户端直接访问的单一资源。

·把一部分的逻辑置于Web浏览器,使用JavaScript客户端与移动端的逻辑逐一配对。

从架构的视角来看,这个运行JavaScript的客户端程序,不论是功能实现、安全还是与后端交互的方式(见图1-8),跟移动应用都是一样的。

图1-8 在浏览器内使用JavaScript,后端简化为对所有应用提供API接口

再来看看后端的逻辑,我们现在为所有的客户端配置了单一架构,为所有运行中的应用配置了相同的交互和数据流。开发者成功地把后端逻辑与客户端的具体实现进行了抽象和分离,后端以标准化API调用为通用客户端提供服务(这种API调用只需定义一次,对所有终端用户都适用)。

这是非常重要的一步,因为前端的实现是随客户端而变动的,现在我们把它们从后端架构中抽离出来(见图1-9)。今后添加新的客户端设备时(如支持各种可穿戴设备),无须再对后端进行任何修改。

重新审视这个解耦的架构,我们会发现每一个API调用都会接受参数,在后端服务器上执行一些操作,然后返回结果。这似乎很耳熟?每一个API调用都是后端呈现出来的、基于AWS Lambda来实现的函数。以此类推,所有的后端API都可以通过使用AWS Lambda管理的函数来实现。

图1-9 把客户端想象为一个消费API的组合,通过在后端解耦各种前端设备的支持,就可以实现这样的目标

通过这种方式,我们获得了由AWS Lambda支持的单一服务器后端,为所有的客户端提供相同的API。 4N1KBjHBsNMi7n96FYJHFHvZE7bAIEYfAw4flVXsuQQz+1mX78jk1m4/Q0+oVMRK

点击中间区域
呼出菜单
上一章
目录
下一章
×