当前位置: 首页 > news >正文

【如何做好应用架构?】

一、应用架构定义

应用架构描述了各种用于支持业务架构并对数据架构所定义的各种数据进行出来的应用功能。这些应该功能指的是用来管理在数据架构中定义的数据,并对业务架构中定义的各项业务功能进行支持的能力。

其核心目标是确保应用系统高效、灵活、安全的支撑业务需求,并于技术架构、数据架构、业务架构协同一致。

二、应用架构组成

应用架构包括应用域、应用组、一级应用模块、二级应用模块、功能/子功能。一个完整的应用架构通常包含以下几个部分:

1、应用组件(明确组件的职责、边界、粒度)

定义构成应用架构的基本构建块。这可以是一个大型单体应用、一个微服务、一个功能模块、一个平台服务(如身份认证服务、支付服务)

2、应用功能(功能定义需要清晰、无歧义,并与业务能力映射)

详细描述每个应用组件所提供的具体业务功能或技术能力。例如,“订单管理”、“客户信息管理”、“API网关”。

3、应用交互与集成(实现松耦合、高内聚、可维护性高的集成)

描述应用组件之间如何通信和交换信息

4、应用分层与分区(提供结构化的视图,便于理解和管理复杂度,例如java中的MVC)

将应用组件按照逻辑功能或架构层次进行分类和组织。常见的分层包括:

  • 展现层/用户界面层:

负责用户交互(Web前端、移动App、桌面客户端)。

  • 业务逻辑层/服务层:

实现核心业务规则和流程(微服务、业务API)。

  • 数据访问层/集成层:

负责与数据库或其他系统交互(数据访问对象、API适配器)。

5、应用部署视图(连接应用架构与技术架构)

  • 描述应用组件如何映射到物理或虚拟的基础设施(如服务器、容器、云平台区域/可用区)上运行。

  • 包括负载均衡、高可用性(HA)、灾难恢复(DR)等部署拓扑结构

6、应用目录(应用架构治理的核心管理工具)

  • 一个清单或数据库,记录企业内所有应用系统的详细信息,通常包括:

    • 应用名称、描述、所有者
    • 业务功能支持
    • 技术栈(编程语言、框架、数据库)
    • 供应商(内部自研还是外部采购)
    • 生命周期状态(战略、维护、淘汰)
    • 成本、关键性、风险
    • 与其他架构元素(业务能力、数据实体、技术组件)的关联关系

7、应用标准与原则(确保架构的一致性和质量)

  • 定义应用设计、开发、集成、部署和运维必须遵循的通用规则和最佳实践。例如:

    • 技术选型标准(如首选语言、框架、数据库)
    • 安全标准(如身份认证、授权、数据加密)
    • 集成标准(如首选API规范-RESTful/GraphQL, 消息协议)
    • 非功能性要求标准(性能、可伸缩性、可用性、可维护性)
    • 云原生原则(如12-Factor App)
    • 微服务设计原则(如单一职责、领域驱动设计)

三、如何做好应用架构

做好应用架构是一个持续迭代和治理的过程,需要做好以下几点:

1、以业务为驱动

应用架构存在的根本是为了支撑业务,必须紧密对齐业务,理解核心业务流程、业务能力以及未来发展方向。应用组件的划分、功能的定义、集成的涉及都应服务于业务需求。

2、清晰的目标

应用架构是为了解决问题,需要明确架构要解决什么样的问题,例如消除冗余系统、降低集成复杂度、提升敏捷性、降低成本等。

3、分析现状

结合应用目录,评估现有架构优势、劣势,识别架构问题,哪些技术过时、哪些集成混乱,哪些系统维护成本高昂等。

4、设计新的架构

基于现有的架构与现有架构的现状,设计新的架构,并且指定切实可行的演进路线,规划从现状迁移到目标状态的路径,明确分阶段实施的里程碑和优先级。优先解决通电或支持关键业务计划。

新的架构可以根据业务场景和需求选中当前最合适的架构风格,使用应用成熟的设计模式解决一些常见问题(例如发现、熔断、限流、高并发等场景)。

新的架构应充分考虑到架构的性能、可扩展性、可用性、安全性。

5、强化标准和治理

指定并强制执行架构标准与准则,确保不同团队和应用遵循一致的规范,减少技术碎片化。建立架构评审委员会,评审关键项目的架构设计是否合理,确保其符合企业架构标准和目标。定期进行应用 的健康度评估和治理。

6、持续治理与优化

应用架构是以业务为基础,为业务服务,并不是一成不变的,业务需求在变,技术发展也在变,需要定期审视架构的有效性,根据业务和技术的变化进行调整和优化。

总结:
应用架构是企业的架构的骨架和神经,做好应用架构需要明确核心,理解业务需求和定义,优秀的架构能够显著的提升IT对业务变化的响应速度、降低系统复杂度和维护成本、增强系统的健壮性和安全性。

相关文章:

  • 基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
  • 【强化学习】——03 Model-Free RL
  • 【前端】js如何处理计算精度问题
  • 并发编程 - go版
  • Go中的协程并发和并发panic处理
  • Ubuntu ssh 永久添加私钥
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(九)
  • JMeter 实现 MQTT 协议压力测试 !
  • 大陆4D毫米波雷达ARS548调试
  • MySQL 的 redo log 和 binlog 区别?
  • 探秘鸿蒙 HarmonyOS NEXT:实战用 CodeGenie 构建鸿蒙应用页面
  • 窗口聚合窗口聚合
  • 【C++11新特性】
  • SQL知识合集(二):函数篇
  • std::conditional_t一个用法
  • Linux-07 ubuntu 的 chrome 启动不了
  • 【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)
  • 总结vxe-grid的一些用法
  • 前端vue打开多个窗口,关闭窗口后才继续执行后续逻辑
  • 【C语言】字符与字符串
  • 怎么找淘宝客网站/推广新产品最好的方法
  • 六安市 网站集约化建设/新平台推广
  • 火影忍者网页制作网站/长沙网站关键词排名公司
  • 网站制作售后/注册域名费用一般多少钱
  • 地方门户网站源码/app推广策划方案
  • 网站建设网站定制/seo建站