《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 则用于支持实时通信和服务端消息推送。

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

将它们整理到同一份技术清单中,可以帮助我们了解企业主要采用的应用开发技术。但在后续架构分析中,还需要进一步明确它们分别应用在哪些系统中,以及相关应用之间如何交互。 Continue reading “《TOGAF学习之路》企业架构实践(一):从日常 IT 工作开始理解企业架构”