技术架构概述
技术架构也是我们常说的软件架构、系统架构,是将业务需求和应用功能转变为技术实现的过程。技术架构在软件开发过程中应用得比较普遍,受到广大技术人员的普遍关注,它是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。技术架构可以帮助我们梳理系统边界、识别系统需求、识别系统风险和问题优先级、确定技术方案和路线,让团队之间达成共识且相互约束,并指引团队适应业务和技术的变化。
在企业架构中,技术架构是支撑整个企业架构体系的技术部分,也是企业架构中IT架构的最后架构阶段。技术架构以业务架构中的业务需求、业务能力、业务流程为指导,是从应用架构和数据架构的具体形态导出的对企业数字化系统和IT基础设施进行整体部署的一组技术标准规范、原则和最佳实践,并包含相关的技术选择标准、产品选择方案、技术实施路线等,目标是优化整个企业的IT运行环境,实现IT对业务服务高效率地交付。
从广义上来讲,技术架构涉及技术研发的方方面面,包括业务、数据、应用对应的软硬件能力,比如IT基础设施、中间件、网络、通信等。同时,技术架构从技术上指导应用系统的开发、部署、测试、交付、运维等,提出公共性、支撑性的指导,推进资源共享和系统协同,发挥现有资源和基础设施的效用,提升业务系统的互操作性。技术架构解决的问题包括技术分层、技术框架选择、开发语言选择、非功能性需求实现等。
技术架构的价值
技术架构的主要价值有以下几点。
- 理解对齐,形成共识:软件系统是为了实现用户需求,特别是针对企业架构,不同的人有不同的视角,技术架构需要将业务架构、应用架构、数据架构的需求转换成技术人员可以理解的技术语言。需求的实现往往可以有多种途径,如何选择途径?如何拆分系统?选择技术A还是技术B?这些都需要通过技术架构描述并记录下来,让大家理解对齐,形成共识。
- 标准规范,术语统一:软件开发的不确定因素很多,特别是大型企业的技术落地过程,往往有多种技术规范和标准,包括行业通用的和企业内部的,如开发规范、部署规范、稳定性保障规范等。同时,在技术层面有很多术语,不同的人有不同的理解,技术架构需要定义和解释清楚系统中涉及的关键概念,特别是非功能特性的选择和技术方案,并在整个架构设计和描述过程中使用标准和一致的术语。
- 言之有物,资产沉淀:如同讨论产品交互时对照产品原型图,讨论代码Review时需要看代码一样,技术架构也有相应的实物,即架构制图(简称架构图)。架构图是软件开发的高层次抽象,是架构持续演进的具体承载,也是技术团队的核心资产,对系统开发、新人培养等具有重要的作用,是技术团队的灵魂所在。
- 团队协同,明确分工:技术架构提供企业更有效地管理研发的流程,方便团队协同,比如通过构建企业开发平台、运维平台来协助系统的统一管理,进而结合上层应用架构、数据架构的落地,通过新技术(如云原生技术、容器化技术、敏捷交付、精益管理等软件工程管理技术)构建开发和运维一体化的平台,清楚地定义各团队的分工边界,确保业务需求和应用功能的稳定落地。