架构设计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 个关键

目录
相关文章
|
15天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
63 6
|
15天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
30 1
|
3月前
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
1月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
高并发下的秒杀系统设计是一个复杂的挑战,涉及多个关键技术点。40岁老架构师尼恩在其读者交流群中分享了16个关键架构要点,帮助解决高并发下的秒杀问题,如每秒上万次下单请求的处理、超卖问题的解决等。这些要点包括业务架构设计、流量控制、异步处理、缓存策略、限流熔断、分布式锁、消息队列、数据一致性、存储架构等多个方面。尼恩还提供了详细的实战案例和代码示例,帮助读者全面理解和掌握秒杀系统的架构设计。此外,他还分享了《尼恩Java面试宝典》等资源,帮助读者在面试中脱颖而出。如果你对高并发秒杀系统感兴趣,可以关注尼恩的技术自由圈,获取更多详细资料。
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
|
1月前
|
消息中间件 运维 数据库
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
|
1月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
高并发下,如何设计秒杀系统?这是一个高频面试题。40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试Shopee时遇到了这个问题,未能很好地回答,导致面试失败。为此,尼恩进行了系统化、体系化的梳理,帮助大家提升“技术肌肉”,让面试官刮目相看。秒杀系统设计涉及16个架构要点,涵盖业务架构、流量架构、异步架构、分层架构、缓存架构、库存扣减、MQ异步处理、限流、熔断、降级、存储架构等多个方面。掌握这些要点,可以有效应对高并发场景下的秒杀系统设计挑战。
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
|
3月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG相比Greenplum的HAWQ在架构设计上有什么不同
MPP架构数据仓库使用问题之ADB PG相比Greenplum的HAWQ在架构设计上有什么不同
|
12天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
11天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
11天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
27 1
服务架构的演进:从单体到微服务的探索之旅
下一篇
无影云桌面