关于架构
企业架构
企业架构是企业进行项目决策的重要依据,同时也是支撑企业后续发展的重要基石。业务架构、数据架构、应用架构和技术架构是企业架构中的四个主要架构,它们在关注的方面和功能上有所不同,但是它们是相互关联和相互支持的,共同构成了企业的总体架构。
企业架构之4A架构
4A架构关键词:
业务架构:战略,价值链,端到端,业务流程,业务组件,自上而下分解
应用架构:系统建设,系统集成,中台,自下而上抽象
技术架构:技术选型,框架,PaaS平台,云原生,DevOps,微服务,容器化,部署架构
数据架构:数据标准,数据采集加工,数据入湖,数据治理,数据共享服务,数据安全,数据质量,数据架构
【1】
业务结构
业务架构定义了业务策略、治理、组织和关键业务过程。是企业架构的核心内容,承接了企业战略,直接决定企业战略的实现能力,是其他架构领域工作的前置条件。
主要目标是根据企业战略愿景,分析业务现状,识别现有业务能力及问题,提出业务改进需求,设计目标业务架构。(以价值链梳理分析业务开展流程,识别上下游依赖关系,从业务和产品的视角,描述整个平台或者产品的实现)
设计步骤:
- 识别战略,走访业务部门,问卷调查
- 外部因素,根据宏观背景(风口),行业空间(天花板),竞争情况(赛道),上下游产业链做规划
- 内部因素,根据商业模式,技术壁垒和资源投入进行规划
如何绘制业务架构图
A)根据用户操作流程,罗列功能模块
B)形成功能矩阵
C)横向分层,纵向分层
应用架构
应用架构为要部署的单个应用系统、它们之间的交互和它们与组织的核心业务流程之间的关系提供蓝图。
工作主要目标是根据企业现状应用架构需求及业务架构中的数据流分析结果,设计目标应用架构(支持业务和数据处理需要哪些应用系统,完成从业务到IT的转换)
设计步骤:
- 根据业务架构图,做业务到IT的转换,识别应用程序和组件 (上接业务)
- 优化应用程序和组件,该拆分就拆分,该聚合就聚合 (核心设计)
- 设计应用与业务功能,流程,数据的关系(核心设计)
- 设计应用集成,交互,开发 (下接开发)
技术架构
技术架构描述了需要支持业务、数据和应用服务的部署的逻辑软硬件能力,包括IT基础设施、中间件、网络、通信、流程、标准等。
工作主要目标是基于现状技术架构、技术标准、业务/应用/数据架构要求,设计目标技术架构。梳理AS-IS技术架构,形成平台分解图和技术谱系目录。(支持应用系统所需的技术架构,技术组件,技术选型)
设计步骤:
- 根据应用架构,进行技术支撑分析,识别技术支撑的必要条件
- 技术选型,包括开发架构,技术产品,开发技术栈,开发平台,运行平台
- 技术影响分析,成本,难易度,规划,治理
数据架构
数据架构描述了企业逻辑物理数据资产和数据管理资源的结构。
工作主要目标是根据企业现状数据架构需求及业务架构中的数据流转,设计目标数据架构。(描述企业数据来源,数据资产管理,数据治理,数据共享开放)
设计步骤:
- 上接业务,分析数据需求,识别数据类型,采集数据
- 数据模型设计,概念模型(识别业务域),逻辑模型(实体关系ER),物理模型(表字段)
- 数据治理,数据安全合规,数据质量管理
- 数据共享开放,支撑业务决策,业务创新
- 分析:根据数据应用层、数据接口层、数据层、数据采集层、数据源。
B/S架构
定义:
即 Browser/Server(浏览器 / 服务器)架构,是一种网络应用程序架构模式。(一种基于Web的系统架构,用户通过浏览器访问应用程序)
特点:
- 客户端轻量化: 用户不需要安装任何特定的客户端软件,只需使用标准的Web浏览器即可。
- 易于部署和维护: 所有更新和维护工作都集中在服务器端进行,无需在每个客户端上操作。
- 跨平台性: 只要有Web浏览器和网络连接,就可以从任何设备访问应用。
架构组成
客户端(浏览器)
用户通过浏览器(如 Chrome、Firefox、Internet Explorer 等)来访问应用程序。浏览器负责向服务器发送请求,并接收和展示服务器返回的数据。这种方式无需在客户端安装专门的软件,只要有浏览器和网络连接,用户就可以随时随地访问应用。
服务器端
1. Web 服务器:主要负责处理浏览器发来的 HTTP 请求,常见的 Web 服务器有 Apache、Nginx 等。它接收请求后,会根据请求的内容将相应的网页文件发送回浏览器,或者将请求转发给应用服务器处理。
2. 应用服务器:运行应用程序的业务逻辑。例如,处理用户登录验证、数据查询与处理、业务规则的执行等。常见的应用服务器有 Tomcat(主要用于 Java 应用)、IIS(用于ASP.NET应用)等。
3. 数据库服务器:用于存储应用程序的数据。它接收来自应用服务器的数据操作请求(如查询、插入、更新、删除等),并对数据库中的数据进行相应的操作。
工作原理
- 用户在浏览器中输入应用程序的 URL 地址,浏览器向 Web 服务器发送 HTTP 请求。
- Web 服务器收到请求后,如果是静态网页请求(如 HTML、CSS、JavaScript 文件等),则直接将相应的文件返回给浏览器;如果是动态网页请求(如涉及到数据查询、业务逻辑处理等),则将请求转发给应用服务器。
- 应用服务器处理业务逻辑,可能会与数据库服务器交互(查询数据、存储数据等),然后将处理结果生成动态网页内容返回给 Web 服务器。
- Web 服务器将应用服务器返回的内容发送回浏览器,浏览器对收到的内容进行解析和渲染,展示给用户。
C/S架构
定义:
- C/S 架构,即 Client/Server(客户端 / 服务器)架构,是一种常见的软件架构模式。C/S 架构是一种传统的分布式应用架构,它将应用程序分为客户端和服务器端两部分。
- 客户端负责用户交互界面和一部分业务逻辑,服务器端则主要负责数据管理和核心业务逻辑。
特点:
- 功能丰富: 由于客户端可以安装专用的应用程序,因此可以提供更丰富的用户体验和功能。
- 性能优势: 客户端可以利用本地计算资源进行一些计算密集型任务,减轻服务器压力。
- 安全性: 相对于B/S架构,C/S架构可以通过客户端应用程序更好地控制数据安全。
- 部署复杂度: 需要在每个客户端机器上安装、配置和更新软件,增加了维护成本。
架构组成
客户端(Client)
客户端是安装在用户终端设备(如个人计算机、移动设备)上的软件。它主要负责向服务器发送请求、接收服务器返回的数据并进行展示和处理。例如,在一款银行客户端软件中,用户通过客户端界面输入账户查询、转账等操作指令,这些指令会被打包成请求发送给服务器。客户端软件通常具有良好的用户界面,能够根据用户操作和服务器返回的数据进行交互展示。
服务器(Server)
业务逻辑处理服务器:负责处理客户端发送过来的请求。
它会根据应用程序的业务规则对请求进行分析和处理。[例如,在一个物流管理系统中,当客户端发送货物运输状态查询请求时,业务逻辑处理服务器会根据存储的物流数据(如货物的发货时间、运输路线、预计到达时间等)进行计算和判断,然后生成相应的结果。]
数据存储服务器:主要用于存储应用程序所涉及的各种数据。这些数据包括用户信息、业务数据等。
以电商平台为例,数据存储服务器存储了海量的商品信息(如商品名称、价格、库存等)、用户账户信息(如用户名、密码、收货地址等)和订单信息(如订单编号、下单时间、支付状态等)。它通过数据库管理系统来组织和管理这些数据,以便高效地响应服务器的查询和更新请求。
工作原理
用户通过客户端软件发起操作请求,例如在一个企业资源规划(ERP)客户端软件中,用户点击查询库存的按钮,客户端会将包含库存查询指令的请求发送给服务器。
服务器收到请求后,业务逻辑处理服务器会根据请求的类型和具体内容进行处理。如果是库存查询请求,它会与数据存储服务器进行交互,从数据库中检索相关的库存数据。
业务逻辑处理服务器将从数据存储服务器获取的数据进行处理和整合,生成客户端所需的结果。例如,将库存数据进行格式化,使其符合客户端软件的展示要求。
服务器将处理后的结果返回给客户端,客户端接收到结果后,在软件界面上进行展示。如在库存查询的例子中,客户端会将收到的库存数量、产品名称等信息以表格或其他直观的形式显示在界面上,供用户查看。
简述C/S架构和B/S架构的区别
联系:
都属于客户端-服务器架构:无论是B/S还是C/S架构,其核心都是将应用分为客户端和服务端两部分,客户端负责用户交互,服务端负责数据处理和存储。
都需要网络连接:两种架构都需要通过网络来实现客户端与服务器之间的通信。
都可以支持多用户访问:这两种架构都能够支持多个客户端同时连接到服务器上进行操作。
区别:
客户端形式不同:
B/S架构的客户端是浏览器,用户通过浏览器直接访问Web应用程序。
C/S架构的客户端是一个独立的应用程序,需要预先安装在用户的计算机上。
维护成本不同:
B/S架构由于客户端统一为浏览器,因此维护相对简单,只需更新服务器端的应用程序即可。维护成本相对较低。例如,一个在线办公网站更新了文档编辑功能,用户再次通过浏览器访问时就能体验到新功能。
C/S架构可能需要在每个客户端机器上进行软件升级或维护工作,这增加了维护的成本和复杂度。维护成本较高。例如,如果企业使用的一款 C/S 架构的财务软件需要更新功能,IT 人员需要逐一到每台装有该软件的计算机上去安装更新包。
性能差异:
B/S架构依赖于浏览器的能力,对于复杂的业务逻辑和大量的数据处理可能不如C/S架构高效。例如,一些 C/S 架构的设计软件,在本地客户端上可以快速进行图形渲染等操作。
C/S架构可以利用客户端的计算能力,适合处理大量数据和复杂的图形界面,提供更好的用户体验。例如,一些 C/S 架构的设计软件,在本地客户端上可以快速进行图形渲染等操作。
安全性差异:
B/S架构中,所有数据和逻辑都在服务器端运行,这通常被认为更安全,因为不需要担心客户端上的数据泄露。但由于是通过浏览器访问,容易受到网络攻击,如跨站脚本攻击(XSS)、SQL 注入等,安全性保障相对复杂,需要采取多种网络安全措施来保护服务器和数据。例如,电商网站需要不断加强安全防护措施来防止用户信息泄露。
C/S架构可能面临客户端的安全问题,比如客户端软件被恶意篡改等风险。例如,企业内部的 C/S 架构管理系统,可以通过设置严格的用户认证和权限管理机制来保障数据安全。
可扩展性:
B/S架构更容易扩展,因为它只需要更新服务器端,而不需要对客户端进行任何修改。
C/S架构扩展时可能需要更新客户端软件,这可能会导致一定的延迟。
平台兼容性:
B/S架构通常具有更好的跨平台兼容性,因为大多数浏览器都能运行标准的Web技术栈(如HTML、CSS、JavaScript)。例如,用户可以在任何操作系统的浏览器上访问同一个在线学习网站。
C/S架构可能需要针对不同的操作系统开发不同的客户端版本。例如,一个 C/S 架构的游戏软件,若要在 Windows 和 Mac 系统上都能使用,开发团队可能需要分别为这两个操作系统开发对应的客户端版本。