【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

敏捷和模块化的关系

  • 2014-11-28
  • 本文字数:1255 字

    阅读完需:约 4 分钟

任何好流程的关键都是要模块化。许多公司的敏捷流程没有考虑他们应用的结构。由于这个原因,许多敏捷的举措都没有能够充分交付预期的商业利益。只有把底层实体(组织或者软件产品)的结构模块化,才能够实现敏捷。

Richard Nicholson 是 Paremus 的首席执行官和创始人,他在 OSGi (Java 模块化的开放的行业标准)的技术白皮书中描述了结构模块化和敏捷的关系。

一个实体要“敏捷”,它的结构就需要有高度的模块化。因此,关于敏捷的问题应该从“如何构建敏捷的业务系统?”变成“如何构建高度模块化的业务系统?”

随着业务单元和服务提供者的增加,组件构成数量和这些组件间的内部依赖也会随之增加。通常,如果任其发展下去,内部依赖的数量会迅速增加甚至超过组件的数量。结构会变得越来越复杂。

所以,敏捷系统需要显著地具备以下特征:

  • 一个分层的结构:每一层都是由下一层组件分层构成的。
  • 抽象:对于每一层来说,参与的组件所暴露的行为与那一层陈述的需求和能力有关。
  • 孤立:高度独立确保在每一层上每个参与的组件的内部构成对外是不可见的。
  • 自描述性:每一层内部参与的组件之间的关系是自描述的;也就是说,按照已发布的需求和能力来描述它们的相关性。
  • 变更的影响:通过语义性版本管理可以把依赖关系的变更影响表达出来。

Kirk Knoernschild 是 Gartner 的研究室主任,他在其《Java 应用架构》这本书中表达了对敏捷和结构模块化之间关系的看法,确定了“中层缺失”问题之所在。Knoernschild 总结说在传统 Java 应用的架构中缺失了本质上的结构层。粗粒度的模块化范围是传统的服务层,另一方面细粒度的模块化是 Java 包和类的层次。粗粒度和细粒度之间缺少中间层。

基于 OSGi 联盟创建的开放的行业标准,OSGi 通过提供 Java 模块化框架直接地解决这个问题。

  • OSGi bundle 按照 Java 包表述需求和能力。因此,第三方可以直接看出来特定的 OSGi bundle 能否被其他备选方案替代。
  • OSGi bundle 使用语义级版本管理。因此,第三方可以直接看出来一个 OSGi bundle 的变更对于那些使用者来讲是不是天翻覆地的变化。

OSGi 还在结构层之上提供了µServices 层。这里有轻量级的服务,这些服务能够在运行期彼此间动态地发现和绑定。OSGi 服务可能同时在同一 JVM 中,或者通过使用 OSGi 远程服务规范的实现,分布在不同 IP 段的多个 JVM 上。

Richard 描述了 OSGi bundle 与 scrum 和看板的映射:

我们很难把 Scrum 应用于大型的单片系统代码库。相反地,Scrum 的概念很好地映射了高度模块化的代码库,这类代码库包含许多自描述的、强隔离的 OSGi bundle。

看板的概念很自然地映射了高度模块化的代码库,这类代码库包含许多自描述的、强隔离的工件;特别要注意的是,看板制品(WIP)流程的思想直接映射了 OSGi bundle 的子集,大家都围绕它们积极地开展工作。因此,看板基于拉动的流程速率是与更细粒度的 OSGi bundle 的变更或发布相匹配的,如果在制品流程中的每个更小的 OSGi bundle 都可以相对地缩短花费的时间,那么自然而然看板基于拉动的流程速率就会相应地有所提升。

查看英文原文: Relation of Agility and Modularity

2014-11-28 05:071966

评论

发布
暂无评论
发现更多内容

TiDB多活方案

TiDB 社区干货传送门

实践案例 集群管理 数据库架构选型 数据库架构设计

文盘Rust -- 子命令提示,提高用户体验

TiDB 社区干货传送门

开发语言

TiDB v6.0.0 DMR 源码阅读——缓存表

TiDB 社区干货传送门

TiDB 源码解读 新版本/特性解读 6.x 实践

TiCDC 6.0 原理之 Sorter 演进

TiDB 社区干货传送门

TiDB 源码解读 6.x 实践

你踩过这些坑吗?谨慎在时间类型列上创建索引

TiDB 社区干货传送门

性能调优 TiDB 底层架构 OLTP 场景实践

基于 TiDB 场景式技术架构过程 - 理论篇

TiDB 社区干货传送门

数据库架构选型 数据库架构设计

这一年,我和 TiDB 的故事

TiDB 社区干货传送门

TiSpark v2.4.x 升级到 TiSpark v2.5.x

TiDB 社区干货传送门

实践案例 6.x 实践

TiDB VS MySQL

TiDB 社区干货传送门

OLTP 负载性能优化实践

TiDB 社区干货传送门

性能调优 OLTP 场景实践

避坑指南 生产环境TiKV的IO-Util趋近100%问题定位

TiDB 社区干货传送门

集群管理 管理与运维 TiKV 底层架构

分布式数据库 TiDB 6.0 集群保姆级安装手册

TiDB 社区干货传送门

6.x 实践

离线安装 TiSpark v2.5.1

TiDB 社区干货传送门

6.x 实践

生产环境TiDB集群缩容TiKV操作步骤

TiDB 社区干货传送门

扩/缩容

TIDB 6.0新特性漫谈之Clinic

TiDB 社区干货传送门

新版本/特性发布 6.x 实践

TiFlash 源码阅读(三) DeltaTree 存储引擎设计及实现分析 - Part 1

TiDB 社区干货传送门

利用odbc连接oracle与tidb

TiDB 社区干货传送门

迁移 实践案例 数据库架构选型 应用适配 数据库连接

TiFlash 面向编译器的自动向量化加速

TiDB 社区干货传送门

性能调优 应用适配

我和 TiDB 的故事 - 2020~2022

TiDB 社区干货传送门

TiDB 性能优化概述

TiDB 社区干货传送门

性能调优

Performance Overview 面板重要监控指标详解

TiDB 社区干货传送门

监控

使用 Vagrant + VirtualBox 虚拟机搭建TiDB v5.4 实验环境

TiDB 社区干货传送门

安装 & 部署

TIDB监控升级解决panic的漫漫探索之路

TiDB 社区干货传送门

监控 实践案例 集群管理 故障排查/诊断 扩/缩容

TiDB 6.1 新特性解读 | TiDB 6.1 MPP 实现窗口函数框架

TiDB 社区干货传送门

新版本/特性解读 6.x 实践

TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析

TiDB 社区干货传送门

TiCDC canal_json的实际应用

TiDB 社区干货传送门

迁移 管理与运维 新版本/特性解读 OLTP 场景实践

TiDB 6.1 单机环境 On openEular 2003 SP3

TiDB 社区干货传送门

实践案例 版本测评 应用适配 6.x 实践

TiDB 性能分析和优化

TiDB 社区干货传送门

性能调优

TiSpark v2.5 开发入门实践及 TiSpark v3.0.0 新功能解读

TiDB 社区干货传送门

6.x 实践

TiSpark 3.0.0 新特性实践

TiDB 社区干货传送门

实践案例 新版本/特性发布 HTAP 场景实践 大数据场景实践

让秒杀狂欢更从容:大促背后的数据库(下篇)

TiDB 社区干货传送门

敏捷和模块化的关系_研发效能_Savita Pahuja_InfoQ精选文章