生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

在应用程序架构中实践敏捷

  • 2008-12-21
  • 本文字数:1426 字

    阅读完需:约 5 分钟

微软最近在“模式及实践”分类下发布了一篇文档,名为“如何用敏捷架构进行设计”,为如何使用敏捷方式进行架构提供了详细的指导。

文档推荐用以下列举的条目做为输入,开始设计之路:

  • 用例和使用场景
  • 功能需求
  • 非功能需求(质量相关话题,如性能、安全性、可靠性)
  • 技术需求
  • 目标部署环境
  • 限制

设计应该产生这些输出产物:

  • 架构特征明显的用例
  • 架构热点
  • 候选架构
  • 架构刺探

该文档通过明确建议不要一步完成架构设计,而要采取五步法实现的方式引入敏捷:

  • 第一步:确认架构目标。清晰的目标可以帮助你致力于自己的架构,还能帮助你致力于解决设计中合适的问题。好的目标帮助你决定什么时候完工,以及什么时候需要开始下一个新的阶段;
  • 第二步:关键场景。使用关键场景让设计只关注最经常发生的事情,以及在候选架构准备好时对它们进行评估;
  • 第三步:应用概览。理解你的应用类型、部署架构、架构类型以及技术等,以将设计和应用要服务的真实世界密切联系起来;
  • 第四步:关键热点。根据质量特征和架构框架确认关键热点。在设计应用时,总有一些地方是经常犯错的。
  • 第五步:候选方案。创建一个候选架构或者“架构刺探(Architectural Spike”,然后用关键场景、热点和部署限制等对它进行评估。

第一步:确认架构目标

根据微软模式与实践部门首席程序经理 J.D. Meier 所说,这一步的目的是评估“在接下来的几步上要花费多少时间、精力以及全部努力等”。第一步的结果应该是:

  • 构建原型
  • 确定关键技术风险
  • 测试潜在路径
  • 共享模型和约定

第二步:关键场景

根据 J.D. Meier 的说法,可基于下面这些用例的要素,确定什么是最好的场景:

  1. 对于所部署应用的成功和接受度来说,它们是重要的;
  2. 用例中充分体现了设计,可资用于评估架构。

第三步:应用概览

要将真实世界的细节和具体事物引入到设计中,应用概览是必不可少的,我们可以通过以下几步来创建它:

  • 决定应用类型:首先,要决定你要构建的应用是什么类型。是移动应用,富客户端,富互联网应用,服务,Web 应用还是其他组合等?
  • 理解部署约束:下面,要理解你的目标部署环境,然后决定它会对你的架构产生什么影响。
  • 确定重要的架构类型:决定在你的设计中要使用哪种架构类型。你会构建一个面向服务的架构,C/S,分层的,消息总线还是其他组合等?
  • 决定相关的技术:最后,根据你的应用类型和其他约束来确定相关技术选型,并决定在架构中你要利用哪个技术。

对于以上提到的所有步骤,文档都提供了建议,下面提供了一个在多个架构类型中做选型的例子:

  • C/S:对系统进行隔离,这样客户端可以从服务器发出请求;
  • 基于组件:将应用设计分解成可复用且接口定义良好的组件;
  • 分层:将系统以分层的形式隔离成功能类似的集合;
  • 消息总线:定义能被所有连接系统使用的已知格式,从而使得它们不需要了解真实接收端之间的区别;
  • 面向对象:一种基于将任务分成可复用对象的编程类型,这些对象包含数据以及和对象相关的动作;
  • 面向服务(SOA):一种使用契约和消息以服务的形式暴露和消费功能的应用。

第四步:关键热点

在这一步,我们应该“确定应用架构中的热点,来理解那些经常犯错的地方。关键热点则可以通过质量特征和横切关注点来组织起来。”文档中提到的众多热点包括:可用性、交互性、可维护性、可靠性、安全等。

第五步:候选方案

确定好关键热点后,架构的初步草案就已经形成了。然后,要回到第二步来评估候选架构,然后根据第三、第四、第五步产生一个新的候选。这个过程迭代重复,通过每个迭代对自己进行优化。

查看英文原文 Practicing Agility in Application Architecture

2008-12-21 23:591084

评论

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

电竞游戏主播直播系统平台,在市场该如何变现?

软件开发-梦幻运营部

几种常见的排序算法总结

不在线第一只蜗牛

算法 排序算法 教程分享

只需3分钟!组织架构图如何简单快速制作

Geek_09ea8e

组织架构图

我干嘛要去学Python???!!!

代码生成器研究

如何系统、科学地自学编程知识?

代码生成器研究

为什么 Mac 适合编程?

代码生成器研究

淘宝商品详情API接口文档(API SDK)

tbapi

淘宝商品详情数据接口 淘宝API接口 淘宝商品详情页面数据 淘宝商品详情数据采集方法 天猫数据接口

一文弄懂竞品分析 - 竞品分析是什么| 从哪些方面分析 | 竞品分析报告怎么写?

彭宏豪95

效率工具 产品经理 在线白板 竞品分析 SWOT

IDC最新报告,增速减缓+AI增势,阿里云视频云中国市场第一

阿里云视频云

云计算 视频云

拼多多商品详情数据接口应用在哪些场景?

tbapi

拼多多 拼多多商品详情接口 拼多多API接口

智能汽车的山海之盾

脑极体

智能汽车

体育数据服务商提供API接口,有哪些赛事数据

软件开发-梦幻运营部

喜讯!云起无垠成为国家信息安全漏洞库(CNNVD)技术支撑单位

云起无垠

百度大模型安全解决方案获WitAwards 2023 年度大奖

百度安全

安全 大模型安全

SQL 通配符:用于模糊搜索和匹配的 SQL 关键技巧

小万哥

MySQL 数据库 程序员 sql 后端开发

2023年datafun随手记(1)

Hua

大数据 AI GPT LLM

Presto+Alluxio数据平台实战

数新网络官方账号

大数据

CART算法解密:从原理到Python实现

快乐非自愿限量之名

Python 算法 PyTorch

软件测试/人工智能|一文教你如何配置自己的AutoGPT

霍格沃兹测试开发学社

全链协同,链接未来|端点科技联合IDC重磅发布新一代ERP白皮书

科技热闻

铭文聚合交易平台 Scorpio:铭文赛道狂潮的新引领者

股市老人

保姆级连接FusionInsight MRS kerberos Hive

数新网络官方账号

Java hive 华为云 Dbeaver

C/C++ 开发SCM服务管理组件

不在线第一只蜗牛

c 开发语言 c++、

鸿蒙学堂·创新实训营再度启航深圳,中国移动、国家电网等40余家企业参与

最新动态

跃见书单 | 一文带你读懂《人工智能简史》

码上跃见

AIGC #人工智能

软件测试/人工智能|教你如何使用ChatGPT的API

霍格沃兹测试开发学社

北京同仁堂签署鸿蒙生态合作协议,加速推进鸿蒙原生应用开发

最新动态

E往无前 | 海量数据ES 扩展难?腾讯云大数据ES 扩展百万级分片也“So Easy~”

腾讯云大数据

ES

登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?

Zilliz

azure Milvus Zilliz zillizcloud

软件测试/人工智能|AutoGPT原理与架构介绍

霍格沃兹测试开发学社

12 月 3 日北京,时序数据管理前沿技术+行业应用尽在 IoTDB 用户大会!

Apache IoTDB

在应用程序架构中实践敏捷_方法论_Abel Avram_InfoQ精选文章