架构设计首先依据是基于业务需求,其次架构设计是经过系统性地思考, 权衡利弊之后结合现有资源约束下的最合理决策,最终明确的系统骨架: 包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指导原则. 并由它来指导团队中的每个人思想层面上的一致。

可以包括但不限于以下几方面:

1、系统性思考的合理决策:比如技术选型、解决方案等。

2、明确的系统骨架:明确系统有哪些部分组成。

3、系统协作关系:各个组成部分如何协作来实现业务请求。

4、约束规范和指导原则:保证系统有序,高效、稳定运行。

什么是风险驱动设计

对于未知的业务,可能存在诸多未知的风险,风险驱动架构设计是发现问题并解决问题,通过对业务需求分析可能存在风险点,寻找最合适解决方案。

架构设计不仅要能够满足功能需求还要能够满足非功能需求,例如性能、安全、可用性、可靠性、可扩展性等质量属性,并约束整个系统,风险驱动设计是通过风险管理过程,应对计划,助于降低决策错误之几率、避免损失之可能。

如何实施风险驱动设计

对业务需求深入了解

业务需求了解是架构设计的基础,只有对业务需求足够的了解,才能够发现出表面的风险,进而挖掘底层存着的风险。如果对需求理解不够清楚,另外业务没有应有的预判,那么就会导致架构设计可能满足不了需求特性,不能有该有的质量属性,例如:可扩展性、性能、安全等等,总之架构设计一方面明确系统的骨架,另一方通过业务需求深入了解之后发现可能存在的风险点,从而降低或消灭这些风险点。

通过风险管理过程、应对计划、降低风险

风险管理过程告诉我们如何识别风险、对风险如何描述、及对风险如何分析,如何制定风险应对计划,帮助我们消灭风险或降低风险。在系统发展的过程中可能面临的风险如下:

需求方面

需求在系统的发展过程占据主导作用,也是风险的起源,需求本身特性是善变的,不是一成不变的,那么架构设计也是需要随着需求变更而变更的,在这个变化的过程风险也是一直存在其中的。

技术选型方面

技术选型是对于项目的成功是至关重要的,技术选型需要兼顾几方面,第一是能够满足业务属性,从实际业务出发,技术圈里流行一句话:不以业务为基础的架构都是耍流氓;第二是团队成员对该技术较为擅长,能够得到团队成员的拥护。第三是看社区活跃度,建议选择活跃度高,自然知名度就高了,也能很快为大家所熟知和学习,所以,活跃度高,也可以认为其推广度也是不错的,不过,还有一种技术也会有极高的活跃度:有极大争议的技术,这种情况只能持有更为谨慎的态度了,除非到了非用不可的地步了。第四是技术前瞻性,这个不太好指标量化,只能考技术管理者的经验而定,相对比较流行的技术。

代码架构方面

代码架构在系统中是非常重要的,是根基,决定未来整体项目的代码风格和维护性,代码架构是为了提供更好的可读性和可维护性。代码架构是为了研发人员提供切实可行的指导,如果代码架构设计不足,就会造成全局的架构设计。

例如:代码规范,如果团队内部没有适合的团队规范,那么每个人的风格都不统一,最终将会导致代码无法维护,可读性差,如果再次在此基础上新增或修改代码,面临的风险就会增加很多;再例如中间件的使用,如果大家没有标准化,那么就可能会导致每个使用方式都统一,久而久之就会导致无法维护、可读性差,同样的道理,风险也会随之而来,另外没有代码架构设计,那么就没有办法做技术架构,很多技术设施就无法统一建设,从而就没有办法为团队赋能。

数据架构方面

数据架构这块是系统的最下层,往往数据架构设计大部分决定上层业务架构和应用架构设计方案,数据架构这方面涉及数据存储选型、关系型非关系型、数据模型、表结构、主从方式等,还涉及数据安全方面,上层架构基本上基于数据架构设计和实现的。例如:在交易系统中,两个人相互转账,如果A要给B转账5块钱,在这样的需求如何对数据架构进行设计?

首先:分析交易系统中对数据一致性比较高,可以采用Mysql数据库作为底层数据架构的存储。

其次:对Mysql数据库结构需要使用innodb存储引擎,原因是支持事务,其他的存储引擎不支持事务。

再次:在进行转账时,需要开启事务,在A开始转账时首先对转账金额进行检查,确保转账金额未超出账户总金额

再次:对B账户进行相关的检查

再次:开始对A进行账户减钱操作之后,对B账户进行加钱操作

最后:提交事务,期间一旦失败确保事务未提交,从而保证数据的一致性。

业务架构方面

业务架构包括业务规划,业务模块、业务流程,对整个系统的业务进行拆分,对领域模型进行设计,把现实的业务转化成抽象对象,没有最优的架构,只有最合适的架构,一切系统设计原则都要以解决业务问题为最终目标,脱离实际业务的技术情怀架构往往会给系统带入大坑,任何不基于业务做异想天开的架构都是耍流氓,所有问题的前提要搞清楚我们今天面临的业务量有多大,业务未来增长走势是什么样,其过程一定是一个循序渐进逐步的过程。 合理的架构能够提前预见业务发展1~2年为宜。这样可以付出较为合理的代价换来真正达到技术引领业务成长的效果。

应用架构方面

应用架构是基于业务架构之后进一步拆分和分明,为系统划分明确的边界、职责,通过对系统拆分、业务平衡、降低了业务的复杂度、从而提升迭代效率,同时避免技术复杂性、确保业务架构落地。明确应用间通信机制和数据格式。应用的分偏向于业务,反映业务架构,应用的合偏向于技术,影响技术架构。

架构演进方面

架构演进是系统发展的必经之路,不论是从单体到分布式还是微服务再到ServceMash等等,都是业务快速发展,能够好的为业务赋能,提升产研效率,提供稳定性,那么架构演进过程面临的风险就有很多,列如:分布式情况下数据如何确保一致性,如何确保服务可用性等等,只有能够清晰认识到这些风险,对风险管理及应对,才能在架构演进的过程如鱼得水。

质量属性方面

质量属性这部分是更多偏向可用性、可靠性等等,这些都是非功能性需求,随着系统的发展可能面临的问题都是不一样的,复杂度也是如此。面对复杂的业务、每一个点在做好都能难,这方面也是如此,在每一次技术方案评审,都需要能够这方面的意识,时刻考虑如何提升系统的健壮性。

持续对风险管理

风险不只是系统建设初期才有,而是伴随着系统一直存在的,不论在什么阶段需要持续对风险管理,及时更新和监控风险,定期对风险复盘宣贯,提升团队对风险的意识,风险是无处不在的,也是未知的。如果没有对风险持续管理,那么可能面临的问题是,你的系统可能出现故障之后,你才会意识到,也有可能是你的风险管理计划不是最新,和当前的系统或者发展不匹配,那么风险管理也是没有意义的,只有时刻对风险管理计划进行管理,确保和当前的系统是匹配的。

小结

风险驱动设计是为了告知我们,架构设计能够有这方面的意识和思想去看待问题,时刻通过上述方法论对技术方案或者架构设计进行风险管理,确保架构设计在风险管理范围内,另外也要持续对风险管理更新,确保风险管理和当前系统是匹配的,是最新的,是可用的,而非形同虚设,真正能够为架构设计保驾护航,从而提升系统的稳定性,风险是无处不在,也是未知的,只有保持敬畏,才可能战胜它。

关于稳定性建设之道大纲速览

目录:关于【稳定性建设之道】大纲速览_jackl-CSDN博客从理论、方法、实践多维度阐述稳定性、从全局视野出发、由内到外、从组织到文化,从风险识别到风险预防、从面向失败到主动失败多个阶段,多维度去描述如何打造一个高可用的系统。https://blog.csdn.net/liu_dudu/article/details/122333724

第三篇:稳定性之借风险之力驱动架构演进相关推荐

  1. 图解通信原理与案例分析-23:5G NR的三大场景、四大基本特征、三组关键技术、两大网络架构演进、八大组网方案

    目录 第一章  移动通信发展路径 第二章 5G三大应用场景(外在服务) 2.1 eMBB 增强移动宽带 2.2  URLLC 超可靠低时延通信 2.3 mMTC 海量机器类通信 第三章  5G的四大特 ...

  2. 网易换肤第三篇:动态换肤实现!

    脑图:https://note.youdao.com/s/DWUvTqgU Demo源码参考:这里. About 网易换肤第一篇:换肤技术解密! 网易换肤第二篇:本地换肤实现! 网易换肤第三篇:动态换 ...

  3. 读谷歌大数据三篇著名论文有感

    文章目录 第一篇:Google File System 第二篇:Google Bigtable 第三篇:Google MapReduce 三篇论文看完后的想法 第一篇:Google File Syst ...

  4. ACM顶会CIKM 2022放榜!度小满AI Lab三篇入选

      视学算法报道   编辑:好困 [导读]国际顶会历来是AI技术的试金石,也是各家企业大秀肌肉的主战场. 近日,第31届ACM信息与知识管理国际会议(The 31th ACM Internationa ...

  5. 12.6%!IJCAI 2020接收率断崖式下跌,但还是有华人大佬中了三篇

    机器之心报道 参与:泽南.张倩.蛋酱 人工智能顶会 IJCAI 2020 论文接收结果出炉了,但大部分小伙伴却高兴不起来. 北京时间 4 月 20 日晚,IJCAI 2020 接收结果出炉了:在 47 ...

  6. 第三篇——第二部分——第一文 SQL Server镜像简介

    原文: 第三篇--第二部分--第一文 SQL Server镜像简介 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26951563 镜像是 ...

  7. 计算机专业简历推荐信范文,个人简历自我推荐信范文【三篇】

    [导语]自我推荐信在个人简历中是一个比较重要的环节,一般自荐信简单抓住重点就行了.以下是无忧考网为大家精心搜集和整理的个人简历自我推荐信范文,希望大家喜欢! [篇一] 尊敬的领导: 您好!衷心感谢您能 ...

  8. 安全公司正在借 AI 之力,预测、防御并抵抗网络攻击

    为了提升防御系统的安全性并打造新一代网络护盾,各大网络安全公司都开始瞄上了新兴的人工智能技术.雷锋网对 CB Insights 近日所做的研究报告做了编译,未经许可不得转载. 而推动人工智能与网络安全 ...

  9. 计算机帮教助教活动总结,【助教总结】_助教总结范文三篇

    教师是一种很神圣的职业,不仅是正式教师,就连助教的作用也尤为重要:那么对于担任过助教的人来说,助教总结是一项非常重要的工作.让我们来看看助教总结范文吧. 第一篇:助教总结 700字 一年的数学助教工作 ...

最新文章

  1. 我个人认为.NET总有开源的一天
  2. windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
  3. IO多路复用之select全面总结(必看篇)
  4. 画面风格写实的5z20
  5. 采用GDI生成Code39条形码
  6. 无心剑中译奥修《奥修对爱与婚姻的印象》
  7. java 之 单例模式(大话设计模式)
  8. 分享一个不错的数据分析实战案例【全程附图】EXCEL
  9. 联通微服务怎么还款_重磅!中国联通推出微信签约代扣新功能
  10. c语言入门自学课件ppt,C语言入门教程ppt(434页)免费版[精品课件]
  11. 智慧园区导航可视化分析平台技术方案
  12. 用DOS命令格式化U盘
  13. 广东电大计算机绘图试题,2014年电大计算机绘图期末复习试题及答案参考小抄.doc...
  14. taobao.trade.fullinfo.get( 获取单笔交易的详细信息API接口),淘宝店铺订单明文接口代码分享
  15. 清华大学软件学院计算机系,清华大学软件学院雍俊海教授学术讲座
  16. 操作系统------虚拟存储器 请求分页存储管理方式
  17. 人生时间计算器_人生时钟,你现在几点?
  18. Flink SqlServer CDC 连接器的使用
  19. Element UI数字组件四舍五入问题及居右显示
  20. FoxitReader3.0注册码和foxit pdf creator key

热门文章

  1. Java讲课笔记12:static关键字
  2. Java案例:HttpClient演示
  3. 13.相机和图像——聚焦于对象实战,不断变化的焦距,景深_3
  4. 18.外部相机校准——刚体变换,变换和旋转,外参数矩阵 测验_3
  5. apf svg matlab,【涨知识】APF和SVG的区别与联系
  6. 【英语学习】【Level 08】U03 My Choice L2 All-time favorite character
  7. 【英语学习】【WOTD】bathetic 释义/词源/示例
  8. 计算机网络学习笔记:第二章
  9. VS2010+Opencv-2.4.0的配置攻略
  10. mysql linux设置密码_Linux下第一次使用MySQL数据库,设置密码