《TOGAF学习之路》企业架构实践(一):从日常 IT 工作开始理解企业架构

企业架构实践(一):从企业 IT 系统的建设与管理开始

一、从日常 IT 工作开始

在企业 IT 管理工作中,每天都会接触各种各样的系统。

有负责企业资源管理的 ERP,有管理生产过程的 MES,有支持仓储业务的 WMS,也有 OA、HR 等日常办公系统。为了让这些系统正常运行,还需要数据库、中间件、虚拟化平台、容器平台、监控系统以及各种公共服务。

随着业务发展,系统数量逐渐增加,技术架构也会不断变化。

平时遇到的问题通常比较具体:某个接口为什么调用失败,业务数据为什么没有及时同步,某个服务为什么无法访问,或者一次系统变更会不会影响其他应用。这些问题需要结合具体情况逐一分析和处理。

但在处理这些问题的过程中,也会逐渐发现,很多问题并不完全属于某一个系统。

例如,MES 的数据同步出现异常,原因可能涉及 ERP 接口、集成服务、消息队列或相关业务处理逻辑;文件访问出现问题,除了检查应用本身,还可能需要检查对象存储、网络文件存储以及底层虚拟化环境。

如果只熟悉单个系统,就很难快速了解这些系统之间的联系。

我开始学习 TOGAF Standard 10,也是希望能够在已有的 IT 建设和管理经验之外,进一步学习如何从企业整体的角度看待业务系统、数据、应用和技术基础设施。

当然,日常 IT 管理和企业架构之间还有很大的距离。了解一些架构概念,并不意味着已经具备完整的企业架构能力。

对我来说,一个比较实际的起点,是先把企业现有的 IT 环境梳理清楚,看看目前有哪些系统,它们分别承担什么职责,又是如何联系在一起的。

二、先把现有的 IT 系统梳理清楚

在开始分析企业架构之前,我认为有必要先回答几个基本问题:

  • 企业目前有哪些 IT 系统和技术平台?
  • 每个系统主要解决什么问题?
  • 系统之间通过什么方式交互?
  • 系统运行在哪些基础设施上?
  • 哪些能力由多个系统共同使用?
  • 当前环境中有哪些问题值得进一步分析?

这些问题看起来并不复杂,但实际梳理起来,往往需要结合系统文档、部署信息、接口资料以及日常运维经验。

企业 IT 环境通常不是一次性规划完成的。很多系统是在不同阶段,根据当时的业务需求逐步建设起来的。随着业务变化,一些系统会继续保留,一些系统会被替换,还有一些公共服务会逐渐形成。

因此,第一步不一定是立即设计新的架构,而是先了解现状。

结合目前的实际环境,可以先从以下几个方面整理系统清单。

2.1 业务应用与协同办公

这一类系统直接支持企业的业务活动和日常管理。

系统 主要用途
易飞 ERP 企业原有的资源管理系统
D365 Finance and Operations 新业务环境使用的企业资源管理系统
MES 制造执行管理
WMS 仓储管理
OA 办公自动化与日常协同
HR 人力资源管理
Redmine 项目管理、任务跟踪及相关问题管理

需要说明的是,易飞 ERP 和 D365 Finance and Operations 是两套独立运行的 ERP 系统,服务于不同的业务环境,两者之间没有共享业务接口和数据。

从系统名称来看,它们都属于 ERP,但不能因此认为它们使用相同的数据、遵循相同的业务流程,或者彼此之间存在直接的集成关系。

MES 和 WMS 则分别面向生产执行和仓储作业。在实际业务中,它们需要与相关业务系统配合,才能支持从业务计划到生产执行、仓储作业等不同环节。

OA 和 HR 等系统主要服务于办公协同和人力资源管理。它们与 ERP、MES、WMS 的业务重点不同,但同样是企业 IT 环境的一部分。

这里需要注意一个区别:系统清单记录的是企业有哪些系统,而不是企业的全部业务流程。

知道企业使用 MES,并不意味着已经完整理解生产业务;知道企业使用 WMS,也不代表已经梳理清楚库存管理的全部规则。

系统清单只是进一步分析的基础。

2.2 应用集成与公共服务

除了直接面向用户的业务应用,企业还会建设一些公共服务,用于支持系统集成、文档生成、消息发送、文件存储等工作。

系统或平台 主要用途
ERP Sync Service 处理 ERP 相关的集成业务,连接 ERP 侧与后续集成环节
RabbitMQ 为系统之间的异步消息交互提供支持
Document Generator 提供统一的文档生成能力
Reporting Service 提供报表相关服务
Message Service 提供统一的消息发送能力,支持企业微信和 Email
MinIO 保存业务文件、图片等对象数据

这些服务的作用,是为多个业务场景提供可复用的技术或业务能力。

例如,不同业务系统可能需要生成 PDF、Excel 或 Word 文件。如果每个系统都自行开发文档生成逻辑,就可能出现重复实现、维护成本增加以及输出格式不一致等问题。

通过 Document Generator,可以提交 JSON 数据和模板代码,生成相应的文档。生成后的文件可以存储在 MinIO 等存储平台中。

Message Service 则提供统一的消息发送能力,支持企业微信和 Email 等渠道。

RabbitMQ 用于支持系统之间的异步消息交互。它与直接进行 HTTP 或 Web Service 调用的方式有所不同,具体适用场景取决于业务流程和集成设计。

ERP Sync Service 则承担相关 ERP 集成业务。在 D365 F&O 与 MES 的集成过程中,它不是一个可以忽略的中间环节,而是实际集成链路中的独立组件。

需要注意的是,公共服务并不意味着它们可以脱离其他系统独立存在。它们本身也需要运行环境、存储、网络和相应的运维保障。

当多个业务系统开始依赖同一个公共服务时,这个服务的可用性和变更管理就可能影响多个业务系统。

这也是为什么在梳理系统清单时,不能只记录业务应用,还需要把公共服务纳入其中。

2.3 身份认证与安全管理

身份认证和安全管理为业务系统提供基础支撑。

系统或平台 主要用途
自研 SSO 基于 OpenID Connect(OIDC)协议提供统一身份认证能力
AD Domain 提供域环境及相关目录服务
Jump Server 为受控的运维访问提供统一入口
防病毒软件 提供终端或服务器的恶意软件防护能力

公司建设了自研 SSO,采用 OpenID Connect 协议,为业务系统逐步接入统一身份认证提供基础。

统一身份认证不仅涉及登录页面,还涉及身份验证流程、系统接入方式以及与权限管理相关的设计。

从长期来看,逐步统一业务系统的身份认证方式,有助于减少重复建设,并为统一的身份管理提供基础。

不过,系统清单应该反映真实的现状,而不是只记录期望达到的目标。

目前,D365 Finance and Operations 尚未接入公司自研的 SSO。因此,在梳理身份认证架构时,需要将这一现状明确记录下来,而不能简单地认为所有业务系统都已经实现统一认证。

AD Domain、Jump Server 和防病毒软件承担的职责也有所不同。它们可能不直接参与某个业务流程,却会影响系统访问、安全管理和日常运维。

后续如果要进一步分析安全架构,还需要结合实际的账号管理、权限控制、访问路径和安全策略进行梳理。仅凭系统名称,还不足以判断整个环境的安全水平。

2.4 IT 服务管理与开发交付

企业 IT 不仅需要建设和运行系统,还需要管理服务请求、故障、项目以及软件开发和发布过程。

系统或平台 主要用途
Ticket System IT 服务请求、故障报修及问题处理
Redmine 项目管理、任务跟踪及相关问题管理
GitLab + CI/CD 代码版本管理、自动化构建、测试及部署

Ticket System 和 Redmine 都可能涉及问题记录和跟踪,但两者的实际职责边界,需要根据企业内部的使用方式来确定。

例如,可以由 Ticket System 主要承担 IT 服务请求和故障报修,由 Redmine 主要承担项目管理和开发任务跟踪。如果实际使用中存在职责重叠,就需要进一步明确两者的定位。

GitLab 与 CI/CD 可以放在一起理解。

GitLab 用于代码版本管理和协作开发,CI/CD 用于支持自动化构建、测试及部署。两者共同参与软件开发和交付过程。

从企业架构的角度来看,这些系统不直接承担生产、采购或仓储业务,但它们会影响业务应用的开发效率、版本管理和发布过程。

例如,一次应用升级不仅涉及代码修改,还可能涉及构建、测试、部署和变更管理。因此,开发交付平台也是企业 IT 架构中值得关注的一部分。

2.5 数据分析与低代码平台

随着业务系统积累的数据逐渐增加,企业还需要相应的数据处理、分析和应用开发工具。

系统或平台 主要用途
Dremio 数据访问、查询及数据分析相关能力
Superset 数据可视化与分析报表
Kettle 数据抽取、转换和加载(ETL)
Budibase 低代码应用开发

这些平台可以帮助企业更好地利用已有数据,也可以支持部分数据处理和轻量级应用开发需求。

例如,Dremio 和 Superset 可以用于数据查询、分析和可视化;Kettle 可以用于数据抽取、转换和加载;Budibase 则可以用于构建部分低代码应用。

不过,工具能够连接数据,并不意味着不同系统的数据在业务含义上天然一致。

例如,不同系统中的物料、客户或库存数据,可能存在定义、编码和更新频率方面的差异。如果要进一步建设统一的数据分析体系,还需要明确数据来源、数据口径和数据质量要求。

这些内容属于后续数据架构分析需要考虑的问题。

2.6 基础设施与技术平台

业务应用和公共服务都需要运行环境。

如果只梳理应用系统,而不记录它们依赖的操作系统、虚拟化平台、数据库和中间件,就很难完整了解企业 IT 环境。

因此,基础设施和技术平台也需要纳入系统清单。

2.6.1 服务器与虚拟化基础设施

系统或平台 主要用途
Linux OS 主要服务器操作系统
VMware vSphere 提供服务器虚拟化及虚拟机管理能力
VMware vSAN 提供软件定义存储能力
NFS 提供网络文件存储访问能力

目前,企业服务器环境主要使用 Linux 操作系统。

VMware vSphere 用于虚拟化环境的管理,vSAN 提供软件定义存储能力,NFS 则提供网络文件系统访问能力。

这些技术处于不同的层次,但在实际部署中可能形成依赖关系。

例如,某项应用使用的文件存储服务,可能运行在 Linux 虚拟机上,而虚拟机的虚拟磁盘又依赖底层存储平台。

如果只记录应用连接的存储地址,就无法完整了解其背后的运行环境。

因此,后续还需要逐步把应用部署信息与基础设施信息联系起来。

2.6.2 容器平台、网络入口与运维支撑

系统或平台 主要用途
Kubernetes 容器编排与应用运行管理
Nginx Web 入口、反向代理及流量转发
NTP 提供网络时间同步
Prometheus + Grafana 监控指标采集与可视化
ELK 日志采集、检索与分析
企业级备份与恢复软件 提供数据和系统的备份与恢复能力

部分业务服务部署在 Kubernetes 中,例如 MES 和 ERP Sync Service。

Kubernetes 提供容器化应用的部署、调度和运行管理能力,但它并不能替代底层计算、网络和存储基础设施。

Nginx 可以承担 Web 访问入口、反向代理和流量转发等职责。

Prometheus 和 Grafana 分别承担监控指标采集与可视化展示等工作,ELK 则用于日志采集、检索与分析。这些工具可以从不同角度帮助运维人员了解系统运行情况。

备份与恢复软件同样属于基础设施管理的重要组成部分。

需要特别说明的是,系统正常运行,并不意味着数据已经具备充分的恢复保障。备份范围、保留周期、恢复时间以及恢复验证,都需要结合实际业务要求进行评估。

2.6.3 应用开发与实时通信技术

技术 主要用途
.NET / .NET Core 应用开发与运行平台
ASP.NET Core Web API 构建 HTTP API 服务
Vue 前端应用开发框架
SignalR 实时双向通信及服务端消息推送

在应用开发方面,企业使用 .NET / .NET Core 等技术。

ASP.NET Core Web API 用于构建 HTTP 接口,为前端应用和其他业务系统提供数据访问及业务处理能力。Vue 用于前端开发,SignalR 则用于支持实时通信和服务端消息推送。

这些技术分别承担不同职责。

将它们整理到同一份技术清单中,可以帮助我们了解企业主要采用的应用开发技术。但在后续架构分析中,还需要进一步明确它们分别应用在哪些系统中,以及相关应用之间如何交互。

2.6.4 API 网关、Web 代理与后台任务处理

技术 主要用途
Ocelot 基于 .NET 生态的 API 网关
Nginx Web 反向代理、访问入口及流量转发
Hangfire .NET 后台任务处理,支持定时、延迟及持久化任务

Ocelot 主要用于 .NET 生态中的 API 网关场景,Nginx 则是通用的 Web 服务器和反向代理工具。

两者都可能参与请求转发,但具体职责取决于实际部署方式,不能仅凭技术名称判断它们是否存在功能重叠。

Hangfire 主要用于处理 .NET 应用的后台任务,例如定时任务和延迟执行任务。

它与 RabbitMQ 的定位不同:Hangfire 主要面向后台任务的调度与执行,RabbitMQ 则主要提供消息传递能力。

在实际架构中,理解这些组件的职责边界,有助于避免把不同层次的技术混为一谈。

2.6.5 数据库与数据访问中间件

技术组合 主要用途
PostgreSQL + Pgpool PostgreSQL 数据库及相关的连接管理、数据库访问能力
MySQL + ProxySQL MySQL 数据库及相关的数据库代理、连接管理和查询流量管理

企业使用 PostgreSQL 和 MySQL 等关系型数据库。

与单独列出数据库相比,将数据库和相关中间件组合起来,更容易体现实际的技术搭配。

PostgreSQL 与 Pgpool 组合,MySQL 与 ProxySQL 组合,分别构成相应的数据库访问技术栈。

具体的连接管理、流量分配和高可用能力,仍然取决于实际的版本、配置和部署方式。仅凭使用了某个中间件,并不能直接判断数据库已经实现了某种高可用架构。

后续如果要进一步梳理数据库架构,还需要了解数据库与应用之间的连接关系,以及相关的备份、恢复和运行保障方式。

2.6.6 缓存与分布式协调

技术 主要用途
Redis 缓存及其他基于内存的数据访问能力
ZooKeeper 为分布式系统提供协调服务

Redis 常用于缓存和临时数据存储等场景。

ZooKeeper 则为分布式系统提供协调能力,具体用途取决于哪些应用或组件使用它。

这些技术通常不会直接出现在最终用户的操作界面中,但可能是某些应用正常运行的重要依赖。

因此,后续绘制系统关系图时,也需要根据实际情况将这些组件纳入分析,而不是只关注用户能够直接访问的业务系统。

2.6.7 文件存储与其他技术服务

系统或平台 主要用途
MinIO 对象存储
NFS 网络文件存储访问
Shlink 短链接管理服务

MinIO 用于保存业务文件、图片及其他对象数据,NFS 提供网络文件系统访问能力。

在当前环境中,MinIO 的持久化存储使用 NFS,NFS 服务运行在 Linux 虚拟机上,相关虚拟磁盘由 VMware vSAN 提供存储支持。

Shlink 则用于短链接管理。

这些服务看起来比较分散,但都可能与业务应用的运行和使用体验有关。

至此,我们可以初步形成一份涵盖业务应用、集成服务、身份认证、开发交付、数据平台以及基础设施的 IT 系统清单。

这份清单不一定一开始就完整,也不需要一次性把所有技术细节都整理出来。随着对系统的了解不断加深,可以逐步补充相关信息。

三、从系统清单进一步了解系统之间的关系

完成系统清单之后,我们可以回答企业有哪些系统、每个系统大致负责什么。

但仅有清单仍然不够。

企业 IT 环境并不是一组互不相关的软件和服务器,而是由业务系统、集成服务、数据库、中间件和基础设施共同组成的整体。

因此,下一步需要了解系统之间的关系。

3.1 D365 F&O 与 MES:通过 ERP Sync Service 和 RabbitMQ 进行集成

目前,D365 Finance and Operations 与 MES 之间并不是直接通过 RabbitMQ 进行交互,而是通过 ERP Sync Service 和 RabbitMQ 等组件共同完成相关集成。

从系统关系来看,可以将这条链路概括为:

D365 F&O ↔ ERP Sync Service ↔ RabbitMQ ↔ MES

这里的箭头表示系统之间存在交互关系,具体的数据流向和处理方向需要结合不同的业务接口进一步确认。

在这条集成链路中,各组件承担不同的职责:

  • D365 F&O:负责相关 ERP 业务处理。
  • ERP Sync Service:承担 ERP 相关的集成业务,连接 ERP 侧与后续集成环节。
  • RabbitMQ:为集成服务与 MES 之间的消息交互提供支持。
  • MES:负责相关制造执行业务。

从业务角度看,D365 F&O 与 MES 存在数据交互需求;但从技术实现来看,两者之间还存在 ERP Sync Service 和 RabbitMQ 等中间环节。

这两种视角并不矛盾,只是关注的层次不同。

如果只记录 D365 F&O 与 MES 之间存在数据交互,就容易忽略实际承担集成工作的服务和消息中间件。只有进一步梳理这些组件,才能更准确地理解系统之间的依赖关系。

例如,当 MES 没有收到预期的业务数据时,问题不一定出在 MES 本身。还需要结合实际的数据流向,检查 ERP Sync Service 的处理情况、RabbitMQ 的消息状态,以及相关环节是否出现异常。

这也说明,集成服务本身需要作为独立的应用组件进行管理。它的运行状态、接口处理逻辑和部署方式,都可能影响相关业务流程。

目前,ERP Sync Service 部署在 Kubernetes 中,RabbitMQ 也部署在 Kubernetes 中,但 RabbitMQ 采用单实例部署方式,并不是集群部署。

这属于现有架构中的客观情况。它是否需要调整,需要结合业务重要性、可接受的中断时间、恢复要求和运维能力进行评估。

通过这条链路可以看到,企业应用集成并不一定是两个业务系统之间的直接连接。实际实现中,可能还需要集成服务和消息中间件共同参与。

3.2 ERP 与 WMS:通过 Web Service 进行集成

ERP 与 WMS 通过 Web Service 进行集成,而不是通过消息队列进行交互。

这种集成方式需要重点关注接口调用关系、请求与响应、异常处理,以及系统之间的数据一致性。

与消息队列模式相比,Web Service 的调用过程和错误处理方式可能不同。因此,不能用同一套假设来理解所有系统集成。

进一步梳理时,需要明确接口双方的职责、数据来源、数据流向,以及接口调用失败后如何处理。

这些信息有助于建立比较清晰的接口依赖关系,也能为后续的故障排查和系统变更评估提供参考。

3.3 公共服务也会形成系统依赖

除了业务系统之间的集成,公共服务也会形成依赖关系。

例如:

  • 业务系统可能调用 Document Generator 生成文档。
  • Message Service 为相关业务场景提供企业微信和 Email 消息发送能力。
  • Document Generator 生成的文件可以存储在 MinIO 中。
  • MinIO 的持久化存储依赖 NFS。
  • NFS 服务运行在 Linux 虚拟机上,相关虚拟磁盘由 VMware vSAN 提供存储支持。
  • 业务应用可能依赖 PostgreSQL 或 MySQL 保存业务数据。
  • 部署在 Kubernetes 中的应用依赖相应的容器运行环境和底层基础设施。

这些关系需要结合实际部署和调用情况进一步核实,并不是所有系统都必然存在上述全部依赖。

但它们说明了一个问题:系统之间的关系不只有业务接口。

有些是应用调用关系,有些是数据存储关系,有些是运行环境依赖,还有些与身份认证、安全管理和运维保障有关。

如果只画出业务系统之间的接口,就可能忽略文件存储、数据库、中间件和基础设施带来的影响。

因此,在后续梳理中,需要逐步区分不同类型的依赖关系,并根据分析目的选择合适的表达方式。

四、从日常 IT 工作理解 TOGAF 的四大架构领域

学习 TOGAF Standard 10 之后,我开始尝试把平时接触的 IT 工作与企业架构的概念联系起来。

在入门阶段,我认为比较容易理解、也比较适合从现有系统出发进行实践的,是以下四个架构领域。

4.1 业务架构(Business Architecture)

业务架构关注企业的业务能力、业务流程、组织以及业务之间的关系。

以制造企业为例,可以从销售、计划、采购、生产、仓储和财务等业务活动出发,分析企业如何开展业务,以及不同业务活动之间如何衔接。

ERP、MES 和 WMS 都是支持业务活动的系统,但业务架构并不等于系统清单。

一个业务流程可能涉及多个系统,一个系统也可能支持多个业务流程。

因此,梳理业务架构时,需要先理解业务本身,再分析系统如何支持业务。

4.2 数据架构(Data Architecture)

数据架构关注企业数据的组织方式、数据实体、数据流向、数据存储以及数据之间的关系。

例如,物料、客户、供应商、生产订单和库存等数据,可能会在不同系统之间流转。

即使系统之间已经建立接口,也仍然需要进一步明确:

  • 数据由哪个系统负责维护?
  • 哪个系统是特定数据的权威来源?
  • 数据通过什么方式同步?
  • 不同系统中的数据定义是否一致?
  • 数据出现不一致时如何处理?

这些问题不能仅靠接口清单解决,还需要从数据架构的角度进行分析。

4.3 应用架构(Application Architecture)

应用架构关注企业应用系统的组成、职责、交互关系以及应用之间的协作方式。

易飞 ERP、D365 F&O、MES、WMS、ERP Sync Service、Document Generator 和 Message Service 等,都可以纳入应用架构的分析范围。

通过应用架构,可以逐步回答:

  • 哪些应用支持哪些业务能力?
  • 应用之间通过什么接口或机制交互?
  • 哪些公共服务被多个应用依赖?
  • 哪个应用发生变化时,可能影响哪些其他系统?
  • 是否存在职责不清晰或重复建设的情况?

前面的系统清单和集成关系梳理,可以为应用架构分析提供基础。

4.4 技术架构(Technology Architecture)

技术架构关注支撑应用运行的技术基础,包括计算资源、网络、存储、操作系统、数据库、中间件、容器平台以及相关技术服务。

例如,Linux、VMware vSphere、vSAN、Kubernetes、PostgreSQL、MySQL、RabbitMQ 和 Nginx 等,都可以从技术架构的角度进行分析。

技术架构不只是记录使用了哪些技术,还需要进一步了解这些技术如何组合,以及它们对应用可用性、性能、安全性和可维护性的影响。

例如,应用部署在 Kubernetes 中,并不意味着它与底层基础设施完全解耦。它仍然可能依赖数据库、文件存储、消息中间件和网络服务。

理解这些依赖关系,有助于分析系统故障、技术风险和架构改进方向。

4.5 四大架构领域之间的联系

这四个领域并不是相互独立的。

业务架构说明企业需要开展哪些业务活动;数据架构关注这些活动所使用的数据;应用架构说明哪些应用系统支持这些业务活动;技术架构则为应用提供运行环境。

例如,一个生产业务流程可能涉及生产订单、MES、ERP Sync Service、RabbitMQ、数据库和 Kubernetes 运行环境。

从业务架构看,这是一个生产业务流程;从数据架构看,需要分析生产订单及相关数据的来源和流转;从应用架构看,需要分析 ERP、集成服务、消息中间件和 MES 之间的关系;从技术架构看,则需要考虑数据库、消息中间件和应用运行平台。

同一个问题可能同时涉及多个架构领域。

这也是我学习企业架构时逐渐认识到的一点:业务、数据、应用和技术不能完全分开看。只有将它们联系起来,才能更完整地理解企业 IT 环境。

五、梳理现状,是为了发现值得进一步分析的问题

建立系统清单、梳理系统关系,并不是为了记录尽可能多的技术名称,也不是为了证明现有架构有多复杂。

我认为,这项工作的实际价值在于帮助我们发现平时容易忽略的问题,并为后续分析提供依据。

5.1 公共服务的影响范围

Document Generator、Message Service 和 MinIO 等公共服务,可能被多个业务系统使用。

如果这些服务出现故障,影响范围可能不止一个应用。

因此,需要进一步了解哪些系统依赖这些服务,以及服务中断会对哪些业务造成影响。

这并不意味着所有公共服务都必须采用相同的高可用方案,而是需要先明确它们的实际用途和业务重要性,再决定相应的保障措施。

5.2 中间件的可用性

RabbitMQ 目前采用 Kubernetes 单实例部署。

对于这种部署方式,需要结合实际业务要求评估其可用性。如果 RabbitMQ 发生故障,可能会影响依赖该中间件的系统集成流程。

进一步分析时,可以关注故障时的业务影响、消息持久化与恢复机制,以及业务能够接受的中断时间。

是否需要调整部署方式,应当结合业务重要性、恢复目标、技术成本和运维能力综合判断,而不是仅凭部署实例数量就直接下结论。

5.3 文件存储与数据保护

MinIO 用于保存业务文件和图片,当前采用多节点部署,持久化存储使用 NFS。NFS 服务运行在 Linux 虚拟机上,相关虚拟磁盘由 VMware vSAN 提供存储支持。

从依赖关系来看,这涉及对象存储、网络文件存储、虚拟机和底层存储等多个层次。

需要注意的是,多节点部署并不等于已经具备独立的数据备份保障。

目前,MinIO 没有独立的备份机制。因此,有必要进一步评估相关数据的保护方案,包括备份范围、保留周期、恢复流程和恢复验证。

随着业务文件持续增长,存储容量和数据恢复也需要纳入长期规划。

5.4 身份认证的统一性

公司自研 SSO 基于 OIDC 协议,为业务系统逐步接入统一身份认证提供基础,但 D365 F&O 目前尚未接入。

这意味着,在分析身份认证架构时,需要区分已经实现的能力与后续需要推进的工作。

后续可以根据实际业务需求,进一步梳理不同系统的登录方式、身份管理边界和权限控制方式,判断是否需要进一步统一。

这里的重点不是简单地追求所有系统采用相同的技术,而是理解现状、明确需求,并在此基础上做出合理的架构决策。

5.5 技术组件的职责边界

企业 IT 环境中往往存在多种技术组件。它们可能在部分能力上有所交集,但实际职责并不完全相同。

例如:

  • Ocelot 与 Nginx 都可能参与请求转发,但所处的技术层次和使用场景可能不同。
  • Hangfire 主要处理后台任务,RabbitMQ 主要提供消息传递能力。
  • PostgreSQL + Pgpool 与 MySQL + ProxySQL 分别属于不同的数据库技术组合。
  • GitLab + CI/CD 涉及代码管理和自动化交付,不只是一个代码仓库。
  • Kubernetes 负责容器编排,并不能替代底层存储、网络和虚拟化基础设施。
  • MinIO 提供对象存储服务,NFS 提供网络文件系统访问能力。

把这些组件整理清楚,有助于后续理解技术依赖和系统边界。

具体功能仍然需要结合实际配置和部署方式判断。不能只凭技术名称,就认定某项能力已经实现。

六、为什么要从企业整体的角度看 IT?

在日常工作中,很多问题最初都是以单点问题的形式出现的。

例如,某个接口异常、业务数据没有及时同步、某个服务无法访问文件,或者一次系统变更影响了其他应用。

如果只从单个系统的角度出发,分析范围可能会不断扩大,却仍然难以快速定位问题。

当系统清单、应用关系和基础设施依赖逐步清晰之后,就可以从更完整的角度分析这些问题。

例如,当应用无法访问文件时,可以沿着实际依赖关系,检查应用服务、对象存储、NFS、虚拟机以及底层存储,而不是一开始就假设问题一定出在应用代码中。

当集成流程出现异常时,也可以根据接口关系和消息处理过程,分析问题发生在哪个环节。

这种方法不仅适用于故障排查,也适用于系统规划和架构改进。

引入新系统之前,可以分析它与现有系统的关系;调整技术组件之前,可以评估可能受到影响的应用;规划基础设施时,可以结合应用的重要性和实际依赖确定优先级。

这些工作听起来并不复杂,但真正做好并不容易。它需要不断积累系统信息、验证实际情况,并与业务人员和技术人员沟通。

对我来说,学习企业架构并不是要用一套新的术语替代原来的 IT 管理工作,而是希望借助相对系统的方法,把原本分散的经验和信息组织起来,让分析问题和规划改进有更清晰的依据。

七、从系统清单开始,逐步理解企业架构

回顾这次梳理,第一步只是整理企业现有的 IT 系统和技术平台。

但在这个过程中,我逐渐认识到,系统清单只是起点。

知道企业有哪些系统,只能回答“有什么”;理解系统之间的关系,才能进一步回答“它们如何协作”;将业务、数据、应用和技术联系起来,才有可能从企业整体的角度理解 IT 环境。

这与 TOGAF Standard 10 所提供的企业架构方法有很多可以相互参照的地方。

不过,一份系统清单还不能称为完整的企业架构。它还需要进一步补充业务能力、业务流程、数据关系、应用交互、技术依赖,以及架构改进的目标和路径。

对于已经运行多年的企业 IT 环境而言,从现有系统入手是一种比较务实的方式。

不需要一开始就建立复杂的模型,也不需要立即改变现有系统。可以先把已有信息整理出来,再根据实际业务需求逐步补充和验证。

这也是我学习和实践企业架构时,现阶段比较认同的一种做法:先了解现状,再分析问题;先把关系梳理清楚,再讨论如何改进。

下一篇,我准备继续围绕系统之间的关系展开,尝试从现有系统清单出发,进一步梳理应用依赖,并区分业务依赖、接口依赖和基础设施依赖。

这只是一个开始。后续还有很多内容需要学习和实践,但至少可以先从熟悉的 IT 环境出发,一步一步把企业架构这件事理解得更清楚。

Leave a Reply

Your email address will not be published. Required fields are marked *