1.7.6 物理视图
物理视图展示了如何将软件安装到物理硬件中。对于Web服务,我们经常讨论持续集成和持续部署(CI/CD)管道。这意味着先将对软件的更改作为一个单元进行测试,然后与现有应用集成,作为一个集成整体再进行测试,最后面向用户发布。
我们前面假设这是一个网站,但也可以将其部署为命令行应用,它可能在本地计算机上运行,也可能在云端运行。除此之此,还可以直接在核心的分类器中创建Web应用。
图1.17显示了Web应用服务器图。
图1.17 应用服务器图
图1.17中显示了客户端(client)和服务器(server)节点,以及安装在它们之上三维盒子形状的组成部分。我们已经确定了3个组成部分:
• 运行客户端程序的client app:这个客户端程序与分类器Web服务连接并发出RESTful API请求。它可能是一个用JavaScript语言编写的网站,也可能是一个用Kotlin或Swift语言开发的手机App。所有这些前端都通过HTTPS协议与我们的Web服务器连接。这种基于HTTPS的安全连接需要配置数字证书和加密密钥对。[15]
• GUnicorn网站服务器:可以处理Web服务请求和HTTPS协议。更多细节可查看链接1。
• Classifer分类器应用:在这个视图中,复杂度被隐藏了,整个Classifer包被缩减成Web服务框架中的一个小组件。可以用Python的Flask框架开发Web服务应用。
在这些组件中,客户端的client app不是开发分类器工作的一部分。我们把它包含在图1.17中是为了更完整地展示上下文,但在本书中不会开发它。
我们使用了一个虚线依赖箭头来表明Web服务器依赖于我们的Classifier应用。GUnicorn将引入我们的Web服务器对象并使用它来响应请求。
现在我们已经勾勒出应用,可以考虑编写一些代码。我们在写代码时,应保持图的更新。有时候,它们会在复杂的代码中为我们指明方向。