探秘架构之本质
何为架构?
下图所示,是古代木质建筑的结构详解图鉴:
转至软件领域,其中的“木”所指何物?软件架构中的“结构”是如何锻造的?而那些构筑软件的“木”又是如何彼此链接的呢?
在软件领域,所谓的“木”即为系统组成的基本要素,我们将其称作架构要素。这些要素可以是子系统、模块、应用服务等。
架构则是由这些要素所组成的结构。不同的软件系统因其设计的场景各异,所以其结构也各具特色。
关于连接,这是通过明确架构元素间的接口与交互关系,以及集成机制,实现元素之间的链接。这样的连接可以是分布式调用、进程间通信或是组件间的交互等。
概括而言,架构之本质即为要素、结构与连接的融合。它按照特定的结构将系统要素进行连接与交互。
架构图,不仅是技术的表达,更是沟通的桥梁。归根结底,它的目的是为了便于交流与理解。
向上:在汇报工作中,架构图用于向领导层展示并争取其支持与认同。
向下:通过不同的视图来清晰自己的思路,并借助架构图与团队成员进行交流沟通。
架构的构建需首先熟悉业务,从而形成业务架构。根据业务需求,继而构建相应的产品架构、数据架构以及应用架构,并最终通过技术架构实现落地。
业务架构——战略指引
业务架构是对业务需求的提炼与抽象。它使用一套方法论对产品(或项目)所涉及的业务需求进行边界划分。简单来说,就是根据一套逻辑思路对业务进行拆分,确保软件开以满足业务需求。
在电商系统的例子中,如商品分类、商品管理、订单处理、支付与退款等功能被清晰界定。在构建业务架构时,无需考虑技术实现细节、并发量预测或硬件选择等问题。
产品架构图——功能细化
产品架构图进一步细化了各业务板块的功能。以电商为例,账号模块包含登录、注册、找回密码等功能;商品模块包含商品上架、品类管理、相似推荐等功能。
将电商的每个业务板块细化出其核心功能模块,即可得到如下的电商平台产品架构图。
应用架构图——整体布局
应用架构描述了公司所有产品和系统的整体结构与布局。
以电商为例,我们将绘制其应用架构图,展示其各部分的相互关系与整体布局。
技术架构图——技术选型与分层
技术架构主要关注如何满足应用系统的技术需求。它不涉及具体的技术实现细节,而是关注如何根据识别的技术需求进行技术选型,并清晰地描述各个关键技术及其之间的关系。
技术架构需要解决的问题包括技术分层的纯技术决策、开发框架的选择、开发语言的选择以及涉及非功能性需求的各项技术选择。
这是一个通用公司技术架构图的示例。不同的公司或产品可能有所不同,但大多数的构成元素是通用的。
数据架构图——数据管理与设计
数据架构关注于数据的存储与管理。在设计时需遵循系统的业务场景,进行数据的异构设计、数据库读写分离以及分布式数据存储策略等。
在电商系统中,数据架构的一个概览如图所示。虽然绘制数据架构图通常是架构师的工作,但产品经理对此的理解也是非常重要的。
无论是公司是否有专门的架构师,产品经理对以上所述内容的了解都将对其工作大有裨益。