3.5 可扩展性与可重用性
随着业务的发展与演进,应用程序也需要持续扩展以应对不断增长的用户群,同时不断地添加更多功能并获得竞争优势以保持领先地位。解决方案的设计必须具有足够的可扩展性和灵活性,以支持现有功能的修改或新功能的添加。为了实现应用程序的模块化,组织通常希望搭建一个平台,使其具备一组功能,各个功能作为独立的应用程序运行。只有可重用的架构设计才能实现这样的目标。
为了实现解决方案的可扩展性,解决方案架构师需要尽可能地使用松耦合的架构。比较好的做法是创建一个基于RESTful或基于队列的架构,这将有助于模块之间或跨应用程序的松耦合通信。更多关于架构种类的内容参见第6章。接下来,我们将通过一个简单的示例来阐述什么是架构灵活性。
图3-7展示了一个电子商务应用程序的基于API的架构设计。它有一系列独立服务,例如产品目录、订单、支付和运输,终端用户应用程序按需调用这些服务。客户使用移动端和浏览器在线下单。这些应用程序需要产品目录服务在Web上展示产品,需要订单服务来进行下单以及支付服务进行付款。产品目录服务和订单服务又会与运输服务进行通信,将订单配送到客户手中。而实体店则会使用销售点系统,由销售代表进行扫码下单并收款。由于客户直接在店内取货,所以该系统不需要依赖运输服务。
图3-7 基于API的可扩展架构
从图3-7还可以看到返利API,它用于第三方API集成。这样的架构使你可以对现有的设计进行扩展,通过集成返利API来维系客户,并通过在购买时提供返利吸引新客户。
现在,你可以理解在线商城和实体店如何重用支付服务。如果组织要对礼品卡、食品等服务扩展收款功能,它们仍然可以重用支付服务。
可扩展性和可重用性不仅限于服务设计。它还可以深入具体的API框架设计,软件架构师应使用面向对象的分析和设计(Object-Oriented Analysis and Design,OOAD)概念(如继承和容器等)来搭建API框架。这将让架构具备足够的扩展性和可重用性,以便为服务添加更多的功能。