1 基本概念和目的

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有针对性地解决问题,即:有的放矢,而不是贪大求全。 在实际情况中,不一定每个系统都要做架构设计,需要结合实际情况。有时候最简单的设计开发效率反而是最高的,架构设计毕竟要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。

2 架构设计复杂度来源

高性能

高可用

可扩展性

低成本、安全、规模

3 架构设计三原则

合适原则

GFS为何在Google诞生,而不是在Microsoft诞生,其中Google有那么庞大的数据是一个主要因素,而不是因为Google的工程师比Microsoft的工程师更加聪明。

真正优秀的架构都是企业在当前人力、条件、业务等各方面约束条件下设计出来的,能够合理地将资源整合一起并发挥出最大功效,并且能迅速落地。这也是很多BAT出来的架构师到了小公司或者创业团队反而做不出成绩的原因,因为没有大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的效率非常高。

简单原则

无论是结构的复杂性还是逻辑的复杂性,都会存在各种问题,所以架构设计时如果简单方案和复杂的方案都可以满足需求,最好选择简单的方案。《UNIX编程艺术》总结的KISS(Keep It Simple,Stupid!)原则一样适用于架构设计。

演化原则

对于软件系统来说,变化才是主题。软件架构需要根据业务的发展而不断变化。 如果没有把握“软件架构需要根据业务发展不断变化”这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石。

为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很明显:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的。

实践中,架构师要提醒自己不要贪大求全,遵循演化优于一步到位的原则,因为业务的发展和变化总是很快的,**无论多牛的团队,都不可能完美预测所有的业务发展和变化路径。**实践中可以参考如下建议:

首先,设计出来的架构要满足当时的业务需要

其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。

第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等却可以在新架构中延续。

4 架构设计的流程

听说IT人的目标都是成为架构师,那么请收下这份架构养成计划相关推荐

  1. 10行代码实现目标检测,请收下这份教程

     翻译 | 林椿眄 编辑 | 阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 作为人工智能的一个重要领域,计算机视觉是一门可以识别并理解图像和场景的计算机及软件系统科学.该领 ...

  2. python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...

    完整代码 import pymysqlindex=''' +---------------------+ 首页 欢迎来到学生信息管理系统 1.登陆 2.注册 3.quit(按任意键退出) +----- ...

  3. 40个视频素材网站分享,高清、4K、免费……你想要的的这里都有,快来收下这份安利~

    作为一个后期狗,刚开始接触剪辑的时候,每次花时间最长其实不是剪辑,而是找素材,你们敢信,有时候就真的为一两个镜头找到天昏地暗,那时候的我还不知道有素材网站这种利器.为了避免你们同我一样遍寻素材而不得, ...

  4. 怎么改造计算机玩游戏,大神请收下我的膝盖 牛人将红白机改造成PC玩游戏

    如果你曾经拥有一台红白机,那么它现在是早就被当做废品卖掉,还是被丢在地下室不知道在哪个角落落灰呢?作为曾经最叱咤风云的游戏主机之一,大多数人对于红白机的印象只停留在回忆之中,一位名叫Ungreedy的 ...

  5. GitHub 消息邮件通知太烦人?收下这份指南!

    经常有朋友反馈说邮箱被 GitHub 的消息通知狂轰滥炸,各种无关的邮件提醒搞得很烦. 其实,对于这个问题,GitHub 官方肯定也是考虑到了的,并且很早就给出了对应的解决方案.在这篇文章里,我们一起 ...

  6. 听说go语言越来越火了?那么请收下这一份go语言书单吧!

    关注公众号[程序员书单]后回复"book"即可领取30+精品免费电子书 ​ Go 是一种简单.小巧.令人愉悦的语言.它也有一些犄角旮旯,但绝大部分是经过精心设计的.它的学习速度令人 ...

  7. 好文 | 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容

    之前有网友说想看架构师升级的文章,所以写了本文.先给本文中架构师做个定义:第一,能力上达到(似乎是废话),第二,公司肯承认,不仅能给架构师的头衔,更能按架构师的标准发工资. 对于程序员来说,架构师是职 ...

  8. 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容

    之前有网友说想看架构师升级的文章,所以写了本文.先给本文中架构师做个定义:第一,能力上达到(似乎是废话),第二,公司肯承认,不仅能给架构师的头衔,更能按架构师的标准发工资. 对于程序员来说,架构师是职 ...

  9. 连设计图都不会画,你还想做“系统架构师”?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作.目前正在 ...

最新文章

  1. mysql备份一个表到ftp_备份部分mysql表并上传至指定ftp服务器目录中
  2. 【网络】浏览器输入URL到展示页面全过程(含互联网协议及HTTPS简介)
  3. cv2.minAreaRect() 生成最小外接矩形
  4. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)
  5. 【渝粤题库】陕西师范大学200711 面向对象方法与C++ 作业
  6. 前端学习(654):优化插件
  7. 《Android深入透析》之界面
  8. TypeError at / 'AnonymousUser' object is not iterable
  9. 超过马云!中国第二大富豪诞生:年仅40岁,财富已达3200亿
  10. php 四级联动插件,JavaScript_jQuery实现的多选框多级联动插件,jQuery 实现的多选框联动插件 - phpStudy...
  11. stringbuffer字符串反转操作
  12. FGUI手势案例代码
  13. 中国石油大学(北京)-《钻井液工艺原理》第三阶段在线作业
  14. 给初学Python的小伙伴一些建议
  15. 1stOpt简单使用介绍
  16. matlab 检验异方差,stata中面板数据异方差的处理_stata面板异方差检验
  17. RabbitMQ入门教程(十四):RabbitMQ单机集群搭建
  18. 干货!基于常识图谱和混合策略的情绪支持对话系统
  19. 技术总监的“技术提升”
  20. 如何在-Mac-上强制退出应用

热门文章

  1. java为什么需要枚举_java – 什么是枚举,为什么它们有用?
  2. Zabbix 3.0 部署监控 [二]
  3. 产品经理,你该如何做好后台规划
  4. 产品经理如何应对一句话需求
  5. css选择器的应用的实验,HTMLCSS实验(3)---掌握CSS选择器的使用方法
  6. conceptd什么时候上市_阳山水蜜桃多少钱一斤?什么时候成熟上市?
  7. 作者:张丽丽(1984-),女,中国科学院计算机网络中心助理研究员
  8. 【Python】Sklearn创建三种仿真数据集
  9. Mongodb自带工具
  10. OrderOnline——设计概述