百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

立志成为架构师的你请收下——架构设计的三种思维

yuyutoo 2025-05-24 18:05 4 浏览 0 评论

软件架构的几个误区

1. 架构的目标即灵活性 灵活性越好的架构越能适应未来变化的需要,但不是架构设计的目标,一味追求容易陷入另外一个坑,造成性能的损失和资源的浪费。 2. 一套成熟的开源框架就是架构 框架是一类软件的可复用设计,是一个可扩展的半成品软件,并不是软件的架构,架构是软件设计的重要决策。 3. 大型系统才会考虑架构 的确,架构的设计要依赖于用户规模的考量,不能过度设计,但是并不代表不需要考虑良好的架构体系,很多软件产品一直以一个DEMO形式在运行,无人问津,并没有投入到真正的生产环境,问题没有暴露,若用户真正使用时即使是一个简单的软件依然会出现问题,优势是在数据安全、访问性能、伸缩性等非功能性需求上。 4. 微服务是最好的架构理念 独立功能甚至独立资源, 颗粒度小,松散耦合的组件化是微服务的优点,但大部分开发、运维在实践中依然遇到了新的问题:

  • 服务分散排查问题非常困难
  • 服务的抽象以及之间如何协作是一个较大的难点,设计往往被工期、成本所限制
  • 部署维护造成了资源的浪费和性能的损失

生产环境服务的现状

  1. Beta测试才发现架构问题
  2. 产品2.0不到半年要开发3.0
  3. 真正用户来了之后各种故障和漏洞

从架构设计上缺失了哪一环?遗漏了什么?我们应如何避免,当然架构师是最重要的原因,没有不好的架构,只有不好的架构师,那我们可以有什么方法体系来避免此类问题的出现吗?


引自《软件架构设计》一书

其实这并不是笑话,有很多的实际案例,每种角色都是从自身的角度去考率,没有完整的方法体系和全局思维,所以我们在设计架构的时候除过专业能力之外应具备以下3种思维模式,这也是技术人员最缺乏的思维,但我认为也是最重要的思维,因为 “软件架构师不仅是技术方案的设计者”

用户思维

用户思维就是以用户为导向的,站在用户的角度去思考问题,用户的需求即是企业的需求,用户的喜好就是企业的喜好,同样应是产品软件设计的喜好。

  • 用户是谁?
    架构设计关联用户
  • 用户的需求? 知道了用户,那么在架构设计过程中就应该考虑每类用户的需求 (1)最终客户除过软件满足的功能性需求外,更关注的是用户体验是否好,如果一个网页的访问要等1分钟,显然用户是没有耐心的 (2)产品经理关注的用户功能是否都能够满足,需求变动响应的及时性,当产品经理提出一个新的需求或者需求变动时,如果你回答需要重构的时候产品经理会崩溃的 (3)开发人员关注的是清洗的功能模块以及模块之间的明确协议,以及基础的技术选型方案等 (4)运维人员关注的更多的是部署的易用性,可维护性,容错性(异常及时恢复)、数据安全等 (5)运营人员关注的是客户问题处理的及时性,产品功能的稳定性等

在架构设计过程中首先要了解用户是谁,每类用户关注的需求是什么,再针对性的去思考,这样才不会出现遗漏,但是仅仅了解需求是不够的,我们还需要了解用户是在什么样的场景下使用这些功能。

场景思维

  • 频率场景
    每类用户 是在什么情况下使用,是一个高频还是低频,是刚需还是非刚需,刚需也可以是低频。如果是一个高频刚需,那就需要重点的去考虑,我在公司负责大数据采集挖掘平台的整体架构设计,随着业务发展,每天逐渐出现了数据的峰值,因资源不够造成了数据的延时性不高,因为每天出现,从而形成了一个高频事件,这就需要我们在架构设计的时候考虑如何在峰值出现的时候不降低数据处理的及时性,同时又能不造成资源的浪费,所以结合成本、技术、客户体验设计了一套自动伸缩的弹性资源扩充机制,监测数据处理的及时性,如果及时性降低到一个预警值后则自动触发扩充资源。
  • 空间场景
    用户是在PC端还是在移动端,用户所使用的是一个高配置还是一个低配置设备,这些空间场景的因素都是我们在架构设计中应该考虑到的问题,否则直接会影响到用户的体验和感受。
  • 特殊场景
    在特定的场景下引发特定的需求。比如每年的淘宝双11促销活动就是一个特殊的场景,在设计整个系统架构时应充分考虑系统的伸缩性和队列机制。

场景化思维就是需要洞察用户的身份、空间、时间、意图、行为等特征,同样要考虑架构设计关联的所有用户场景,不同类用户场景也会不同,比如运维人员的场景和最终用户的场景完全不同。

敏捷思维

用户思维和场景思维充分考虑之后,大部分人可能会认为设计一个完整的架构成本太高,周期会很长,那我们应如何降低成本,缩短周期,避免过度设计,造成资源、研发周期的浪费呢,同敏捷开发的思想一样,我们在设计架构的时候同样应具备敏捷思维。 重大需求决定架构的成败 我们在综合各类用户需求之后,要对分散凌乱的需求进行梳理,梳理出关键需求、关键质量、关键约束,重点对这些重大需求先做架构设计。

关键需求决定架构成败

总结

用户思维和场景思维是技术人员最缺失的,架构师在业界大部分都被定义为技术人员,其实无论是架构师或程序员都应具备用户思维和场景思维,这样设计、研发出来的软件系统才能更好的符合预期,符合用户体验,在这个时代,不仅是产品经理具备用户思维,企业中的每个角色都应具备用户思维和场景思维,同样敏捷思维又保证了不会过度的设计,造成不必要的浪费,因为不是每个企业都有bat那样的雄厚资金成本支撑。

架构设计思维过程


将凌乱分散的需求通过设计变成有序、多维的架构是每个架构师的价值所在

作者:杨伟锋poplar
链接:
https://www.jianshu.com/p/e75cfa7db102

来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐

Linux内核网络设备驱动

1.接收数据包过程概述介绍数据包收包过程,有助于我们了解Linux内核网络设备在数据收包过程中的位置,下面从宏观的角度介绍数据包从被网卡接收到进入socket接收队列的整个过程:加载网卡驱动,初...

「技术」一文带你掌握Linux字符设备架构

一、Linux设备分类Linux系统为了管理方便,将设备分成三种基本类型:...

「技术干货」一文搞懂Linux内核调试方法(二)

上篇回顾:一文Linux内核调试方法(一)...

Pytorch学习Day 5: 神经网络基础(nn.Module)学习课程

学习目标理解PyTorch中nn.Module类的作用和核心功能。掌握如何使用nn.Linear构建简单的单层神经网络。学会访问和打印神经网络的参数。通过代码实践加深对PyTorch神...

内存问题探微

这篇文章是我在公司TechDay上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在TechDay上做的...

阿里架构师的5年经验总结:盘点数据仓库常用的4大数据工具平台

数据仓库是解决方案,真正落地的时候,还要依托于工具平台。...

软考系统架构师2021_备考说明---软考高级之系统架构师_备考笔记

第一轮一个半月.这些是考试内容.这个通过率全国,只有百分之10左右..挺难的....

从 Java 程序员到架构师:技术进阶与能力跃迁的完整路径(深度版)

#程序员如何进阶为架构师?#从Java程序员到架构师:技术进阶与能力跃迁的完整路径(深度版)...

大厂架构师被A1逼疯:我20年经验不如A1五分钟生成的方案

程序员末日?AI竟包办八成代码!前端真的凉了?...

立志成为架构师的你请收下——架构设计的三种思维

软件架构的几个误区1.架构的目标即灵活性灵活性越好的架构越能适应未来变化的需要,但不是架构设计的目标,一味追求容易陷入另外一个坑,造成性能的损失和资源的浪费。2.一套成熟的开源框架就是架构框...

系统架构师之——软件开发方法

不管你是开发人员,还是互联网行业人员,基本上经常看到各种各样的软件相关的图,如什么架构图什么设计图什么模式图甘特图等。很多时候总是傻傻分不清。对此,我们很有必要对系统开发基础知识有认知。对于一名程序员...

系统分析师和系统架构师的区别是什么?

软考高级包括系统分析师、信息系统项目管理师、网络规划设计师、系统架构设计师和系统规划与管理师,其中,系统分析师和系统架构师这两个科目是大家很容易搞混淆的,因为都属于软考,所以他们的报考时间、报考条件都...

软件开发 “四高”的详细分析——高扩展

高并发架构的黄金法则:用“分治异步”玩转每秒10万+请求弹性架构:像搭乐高一样扩展你的系统杰夫·贝索斯曾说:“架构不是设计出来的,而是演化出来的。”高并发系统的核心在于...

复习七天通过软考高级系统架构师

前言软考复习的方式可以分为两种:报班和自学。首先晒一下成绩,开心的一批,虽然考的不是很好!!每科满分75,需要同时都>=45分才算合格。...

软件开发 “四高”的详细分析,即高并发、高性能、高扩展、高可用

高并发(HighConcurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(ResponseT...

取消回复欢迎 发表评论: