什么是架构
架构的概念
架构(Architecture)是指在设计和构建复杂系统时,将系统分解为多个组件或模块,并定义它们之间的关系、交互和行为的过程。架构涉及到系统的整体结构、组织方式、功能划分、数据流动、通信方式等方面,以满足系统的需求和目标。
架构设计是在做什么事情
架构涉及到的工作在不同的系统中,会有不同的表现形式,一般来说分为两种情况
- 新系统构建时:新系统构建往往伴随着复杂业务流程的梳理,这时候就需要从业务流程中抽象出子系统/组件/模块,并理清他们之间的关系,以及交互过程。
- 老系统的维护过程:老的系统往往存在着一些不合理的设计(就是欠的技术债),这些不合理的设计会带来很多的影响,架构师除了要理清原有子系统/组件/模块之间的关系以及交互过程之外,还需要解决不合理设计的问题,以保证业务能够正常且持续的进行
软件架构的分类
当我们谈架构的时候,首先应该搞清楚我们谈的是什么架构。不同种类的架构会使我们的关注点完全不同,架构的种类也有非常多种,通常来说,比较重要的有如下几种:
1、业务架构
业务架构是一家企业最重要的顶层设计,它主要是涉及到业务的流程,规则,边界等。如果业务架构规划设计的不合理,直接影响的就是业务的实际运转。以我们最常提的电商为例,电商业务主要由商品、仓储、订单、支付、用户、客服、购物车等业务模块组成,通过规划好用户在自己app内的业务流程,从而可以确定好各个业务模块之间如何交互。好的顶层设计有利于整体业务运转的高效,以及好的用户体验和企业人员人均价值的提升。
示例:某平台业务架构图(摘自参考文章1)
2、应用架构
应用架构是系统设计中很重要的一环。它主要关注的是子系统/子应用之间的关系,也包括子系统设计(尤其是交互设计),开发,部署等。
比如,国内某电商网站的应用包括网页端应用,移动端应用,后端应用,后端应用又会被拆分为若干个业务应用。通过设计好子系统/子应用本身以及他们之间的关系,企业可以更好的管理好自身的应用程序和系统,提高用户体验,降低开发人员维护/沟通协作成本,提高企业运作效率。
3、技术架构
技术架构所关注的点比较广,主要涉及到企业的技术的基础设施以及技术平台,包括软件、硬件、网络、安全、存储等。很多博客常说的洋葱架构以及CQRS架构都是属于工程架构,是软件架构的一个分支,也是很重要的一部分。
4、数据架构
数据是企业生产活动所产生的资源,一定程度上可以说明企业运转到了怎样的程度。数据架构关注点则是企业数据的存储、处理、分析以及共享等。
架构设计的目的是什么
软件架构设计的目的是为了满足软件系统的需求并实现其目标。具体而言,软件架构设计有以下几个目标:
- 满足功能需求:这是最基本的目标,软件架构设计旨在定义系统的功能模块和它们之间的关系,确保系统能够有效地实现所需的功能。通过合理的模块划分和组织结构,使得各个功能模块之间的协作高效、无冲突。
- 高扩展性:软件架构设计需要考虑系统的扩展性,即能够方便地增加新功能模块或修改已有模块,以应对需求的变化。良好的软件架构可以支持系统的快速演化和扩展,减少对现有功能的影响。
- 良好的维护性:软件架构设计要考虑到系统的可维护性,使得开发人员能够方便地理解和修改系统的各个部分。清晰的模块划分和良好的组织方式可以降低开发和维护的难度,减少引入错误的可能性。
- 足够的性能:软件架构设计要关注系统的性能需求,并采取相应的设计策略来提高系统的运行效率。合理的模块划分、资源管理和并发控制等措施可以提高系统的响应速度和吞吐量。
- 足够的可靠性:软件架构设计要考虑系统的可靠性,即确保系统在面对错误、异常和故障时能够继续正常运行或快速恢复。通过冗余设计、错误处理机制和容错性的设计,提高系统的鲁棒性和可靠性。
- 良好的安全性:软件架构设计要考虑系统的安全需求,确保系统的数据和功能受到充分的保护,防止未授权的访问和恶意攻击。通过合理的身份验证、权限控制和数据加密等措施,提高系统的安全性。