架构设计00-架构师知识体系04-怎么做架构设计

简介: 架构设计00-架构师知识体系04-怎么做架构设计

架构设计系列文章,请参见连接。
封面

背景

写出一份富有感情并对实际工作有指导意义的文章非常不容易。因为工作忙没有时间去梳理与整理这方面的思路是主要原因,但也有人越来越懒、越来越多事情要想造成的问题。而最近会重拾起写作这件事,因为只有对自己的提升才是对自己最大的认可与投资。

随着工作方向的变化,作者本人也对与架构设计的工作遗忘了很多。为了更好的为实际工作做指导,并且时刻保持有效、可靠的架构决策作者准备把之前在各种情况下做的架构设计过程做一个抽象并记录下来。

前面的文章中有关于架构设计理念的描述,架构设计理念是对架构设计的一个高度抽象。也会有架构师知识体系这样纯知识体系的内容。而对于一个架构师应该怎样进行架构设计,架构设计的过程是什么样的业界也有很完善的体系,比如说:MDD、DDD、风险驱动设计,演进式架构等。而本篇是作者在实际工作中真正使用到的架构设计过程。

因作者的知识面、工作方向、从业经验的影响,本文中肯定会有各种遗漏和欠缺。但这里的思路也代表着一种实际实践过程中的指导,故还是写下来。

方向

这里先需要明确一下本篇文章中架构设计具体是指那个方向的架构设计。软件的架构设计可以分为:企业架构(EA),业务架构(BA),技术架构(TA)。三个不同的方向就会有三个不同的设计过程与设计结果,所以这里简单的说一下这三个方向:

  1. 企业架构规划整个企业的业务蓝图。对蓝图进行拆解与实施。例如:TOGAF,ZACHMAN这样的EA。
  2. 业务架构是把企业的业务战略转化为日常运作的渠道,业务战略决定业务架构,它包括业务的运营模式、流程体系、组织结构、地域分布等内容。(TOGAF中的定义)
  3. IT架构对于企业架构与业务架构具体落地到技术层面时应该使用技术结构。
  4. 技术架构对于纯技术领域中关于架构的内容。例如:区块链的架构,人工智能的架构。

对于国内从事架构设计方向的大多数人来说最主要的方向还是集中在IT架构上。所以这里也集中说明IT架构的设计过程与方法。

步骤

  • 问题域的定义:

摆在架构师面前的问题是架构需要设计哪些东西?架构要涉及到多少细节?怎样的设计才能让团队顺利实施?对于一个产品来讲技术资产应该怎样进行管理?

针对这些问题,或者更多的架构设计问题应该以怎样的步骤去解决问题?怎样的工具去解决问题?

  • 解决域工具:

针对上面的问题需要有实际的工具和方法去指导架构师应该怎样完成工作,下面结合过程和方法对这部分进行说明:

  1. 软件需求=功能需求+非功能需求+约束:

每个项目都有自己的特点,在接触一个新的项目或着接收一个遗留系统的时候最长听见的一句话是:我们的系统逻辑不像其他的,我们的业务逻辑很复杂。而在架构设计前期最主要的工作就是了解功能、非功能、约束方面的内容。例如:一个业务流程是业务功能方面的需求,整体系统设计容量或现阶段容量、稳定性、安全方面就是非功能需求,再比如是不是有必须要在遗留系统里面保留的内容,是不是遗留系统不可能一步替换掉,用户的操作方式是否可以变更这个就是约束。
这部分主要是为了了解系统需要解决的问题,不管是业务问题还是技术问题,还是其他问题都需要了解清楚。在了解清楚问题域的情况下才能对整体系统有系统型的设计。
而在软件需求阶段有两个比较重要的产出物:容量评估约束列表
容量评估实践过程,可以参考:滴滴内部线上系统的容量评估方法微服务负载保护设计方法,还有作者写的帮Stack Overflow评估一下性能指标
约束列表就是将项目/产品中关于必须遵守的约定进行记录,以方便之后进行查询与参照。

  1. 设计方法选择:

设计方法可以选择数据驱动设计(设计数据流,数据存储结构等),模型驱动设计(UML),领域驱动设计(DDD),风险驱动设计(RDD),演进式设计(EDD)。在一个项目中不可能只选择一种设计方法进行设计工作,所以一般会采用多种方式结合的方式进行架构设计工作。

  1. 架构模式选择:

采用云架构还是采用微服务架构其实是需要进行抉择的。就像在IoT项目中最好的方式是使用《控制环路模式》去做相关的架构设计。在区块链系统的架构中最好使用P2P的方式进行架构设计。所以,需要根据不同的项目采用不同的架构模式进行设计。不过选择架构模式是也可能会遇到约束的问题,比如说公司/客户要求必须使用微服务进行设计。针对这部分有要求的项目/产品就需要遵守约束中的规定。
在选择架构模式是也不是只选择一种架构模式,肯定是需要选择一个主架构模式,再选择几个辅助架构模式,使用多种架构模式结合的方式进行架构的设计工作。

  1. 架构全景图

选择完成设计方法、架构模式的选择之后,就需要制定一张完整的架构全景图。全景图包括:业务全景图架构全景图
业务蓝图可以代表业务的整体情况。
架构全景图代表架构中对于业务的拆分以及业务拆分之间的关系。

  1. 填充细节

在有了全景图之后,就需要对架构设计的细节进行填充。填充的内容包括:业务拆解业务核心流程设计技术选型非功能设计

  1. 架构设计演进

对于软件系统搭建完成之后,就意味着架构已经开始老化了。而应对架构老化的问题就必须进行架构的演进。而架构演化的过程需要有合适的时候将功能/代码下线。所以这个阶段就是服务治理的过程。

以上描述的是项目架构从0到1的过程。而对于架构从1到100的过程就需要持续的演进动作。而演进过程中要谨防的是架构的腐化,防止架构中被遗留代码/服务/项目限制架构的发展。

实施

上面已经说明了架构设计的步骤,而现实中对于这个过程的实施也会有所不同。这里再次说明一下具体实施过程中要做的事情:

  1. 非功能需求确认

询问客户系统中的用户数、sku/spu数、交易数、活跃时间、单页面停留时间等信息。

  1. 容量评估

收集到这些信息之后再根据上面提供的容量评估方法进行容量评估即可。

  1. 整体架构设计

选择架构模式、技术栈后将整体架构按照架构模式的内容拆分为架构模式中所需要的组件。

  1. 核心流程设计

进行细节核心流程的设计。比如说交易系统的交易流程。

  1. 核心存储结构设计

根据容量评估进行存储的设计。包括:对象存储,内容发布网络,缓存,数据库等。

  1. 可靠性、性能、稳定性设计

还是根据容量评估进行非功能型方面的设计。

对于完全新系统来说可以进行这样的设计过程,但对于需要兼容遗留系统的设计过程需要考虑遗留系统的特点。遗留系统最可能使用的方式是使用Sidecar模式进行设计。

总结

前面有关于架构设计原则指导,还有架构师的知识体系,这里又说明了个人的架构设计过程。也算是相对完善的阐述了作者对于架构设计的理解。不过之后还是会输出关于其他方法论的具体理解的文章。

参考

为什么大部分人做不了架构师?这2点是关键
企业架构方法论可以简化吗?

你是个软件架构师吗?

架构师及其目标在软件项目中的挫折感
给敏捷团队中的架构师的 10 个建议
架构:系统的概要设计
架构师成功沟通的 3 个关键

目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 架构师
【架构师】AI时代架构师必备技能
【架构师】AI时代架构师必备技能
|
1月前
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
65 10
|
1月前
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
|
1月前
|
敏捷开发 Java 测试技术
「架构」模型驱动架构设计方法及其运用
本文探讨了MDA在软件开发中的应用,从需求分析到测试,使用UML建模功能需求,通过PIM设计架构,自动生成代码以减少错误。MDA提升了可维护性、可扩展性和可移植性,通过工具如Enterprise Architect和Eclipse MDT支持自动化转换。虽然有挑战,如模型创建和平台转换,但结合敏捷方法和适当工具能有效解决,从而提高开发效率和软件质量。
48 0
「架构」模型驱动架构设计方法及其运用
架构01-----抖音直播平台核心架构设计
架构01-----抖音直播平台核心架构设计
|
3月前
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
104 11
|
3月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
168 0
深度思考:架构师必须掌握的五大类架构设计风格
|
3月前
|
机器学习/深度学习 人工智能 架构师
【架构师】AI时代架构师必备技能
【架构师】AI时代架构师必备技能
|
3天前
|
监控 负载均衡 API
从单体到微服务:架构转型之道
【8月更文挑战第17天】从单体架构到微服务架构的转型是一项复杂而系统的工程,需要综合考虑技术、团队、文化等多个方面的因素。通过合理的规划和实施策略,可以克服转型过程中的挑战,实现系统架构的升级和优化。微服务架构以其高度的模块化、可扩展性和灵活性,为业务的持续发展和创新提供了坚实的技术保障。
|
12天前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
50 6

热门文章

最新文章