成为架构师是每个程序员的梦想,但并不意味着把编程做好就能够自然而然的成为一个架构师,优秀的程序员和架构师之间还有一个明显的鸿沟需要跨越,这个鸿沟就是“不确定性”

架构设计并没有像编程语言那样的语法约束,更多的时候是面多多种可能时的“选择”

例如:

  • 选先进的技术还是团队熟悉的技术?先进的出问题怎么办?熟悉的后续技术演化困难怎么办?
  • 用Angular还是React,一个很强大一个更灵活
  • MySQL还是MongoDB?
  • 淘宝的电商架构咳哟简单的照搬么?
  • 等等

但存在共性原则:合适原则、简单原则、演化原则


合适原则

合适优于业界领先。

优秀人才的技术情节导致各种以先进技术主导的创业失败,原因有:

  1. 将军难打无兵之仗(人数)
  2. 罗马不是一天建成的(积累)
  3. 冰山下面才是关键(业务)

所以真正的优秀架构都是在企业当前人力、条件、业务等各种约束下设计出来的。BAT的架构师到小公司没有了大公司的资源、平台、积累和业务,只照搬大公司的做法和技术即会失败!

简单原则

简单优于复杂。

软件领域复杂度体现两个方面:

1、结构的复杂性

  • 组成复杂系统的组件数量更多
  • 同事这些组件之间的关系也更加复杂
  • 组件增多整体出现鼓掌的概率增加,可用性下降
  • 某个组件改动会影响关联的所有组件
  • 定位复杂系统的问题比简单系统更加困难

2、逻辑的复杂性

  • 单组件承担功能过多,导致逻辑复杂度升高
  • 后续的功能修改会影响很大
  • 使用了复杂的算法难以实现修改和问题解决

如果简单和复杂的都能满足需求,最好选择简单的方案!

演化原则

演化优于一步到位。

软件架构同建筑架构相似,但建筑不可变,软件可变。
例如:Windows的演化、Android的发展。

软件架构类似于大自然“设计”的一个生物,通过演化适应环境,逐步变得强大。

  1. 首先满足当前需要
  2. 不断迭代保留,不断完善
  3. 业务变化时,架构扩展、重构、甚至重写。

不要贪大求全,分析清楚自身业务特点,快速落地,不断完善演化。

【从零开始学架构-李运华】08|架构设计三原则相关推荐

  1. 阿里P9李运华:架构到底是指什么?

    你好,我是李运华. 2018 年,我发布了<从 0 开始学架构>这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟. 后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务.为什么 ...

  2. mysql 魔乐_魔乐科技 李--兴--华 企业级架构会话授权管理 OAuth

    资源内容: 魔乐科技 李--兴--华 企业级架构会话授权管理 OAuth|____OAuth代码.rar|____200301h_springcloud与oauth统一认证(springcloud整合 ...

  3. SpringBoot微架构-李兴华-专题视频课程

    SpringBoot微架构-2719人已学习 课程介绍         SpringBoot是Spring推出的一种微架构的开发框架,在现在的项目开发之中使用非常普遍,并且也是现在所有企业开发的基础要 ...

  4. SpringCloud微架构-李兴华-专题视频课程

    SpringCloud微架构-5680人已学习 课程介绍         SpringCloud是现在热门的RPC开发框架,也是以后的RPC开发趋势.在本套课程之中将为读者详细的讲解分布式技术的发展历 ...

  5. 阿里P9李运华:想成为架构师,你必须知道CAP理论

    CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的ACM PODC上提 ...

  6. 《李兴华Java架构师 》完整版

    一.常用的LDAP服务器有以下几种 1:Apache directory server 2:Sun directory server 3:openDS 一个开源的,基于LDAP和DSML标准的Dire ...

  7. 从零开始学架构 01-架构基础【笔记】

    从零开始学架构(李运华) pdf下载地址 https://pan.baidu.com/s/1cZJOR3cfpmS1BDfp6gJaBQ 提取码:u2ou 说明:对从零开始学架构这本书看时所做的记录, ...

  8. 从零开始学 Web 系列教程

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新-- github:https://github.com/Daotin/Web 微信公众号:前端队长 博客园:http://ww ...

  9. 【从零开始学微服务】04.微服务架构的特点

    大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家. 微服务架构被技术大牛们总结出了以下九个特点: 服务组件化 围绕业务功能 产品而不是项目 强终端弱管道 去中心化管理 去中心化数据管理 基础 ...

  10. 从零开始学架构5 - 实战篇

    从零开始学架构5 - 实战篇 38 | 架构师应该如何判断技术演进的方向? 潮流派? 保守派? 跟风派? 技术演进的动力 1)对于产品类业务,答案看起来很明显:技术创新推动业务发展! 苹果开发智能手机 ...

最新文章

  1. Linux架构思维导图
  2. python3多进程写时拷贝_Python实现多进程的详解(附示例)
  3. kafka消费并导出_如何使用Docker内的Kafka服务?消息服务测试实践篇
  4. modbus报文解析实例_云原生、全栈可编程的下一代SDN解析与实践 (一)丨传统SDN架构演进...
  5. 将MATLAB中的图像信息用到Vivado中
  6. python display函数_【python】pandas display选项
  7. Akash Network主网现已部署Sushiswap应用
  8. esp虚拟服务器,esp32搭建web服务器
  9. python 3.6中使用open函数遇见的问题
  10. golang从简单的即时聊天来看架构演变
  11. VB C# 语法对比图 (代码实例)
  12. python局域网alive ip侦听
  13. Java研发方向如何准备BAT技术面试
  14. 推荐一款UI非常Good的 Redis 客户端工具
  15. php 手写签批 手机办公_好签原笔迹手写签批SDK
  16. MBP TouchBar自定义使用
  17. ZigBee Dotdot
  18. 【Developer Log】ProGuard扰码web项目(WAR)
  19. php fatal error: cannot redeclare,Fatal error: Cannot redeclare 常见问题
  20. 组件对外接口设计-易用性

热门文章

  1. Microsoft Office Professional Plus 2010在安装中出错 解决办法 安装office2010出错
  2. ai里怎么做阴影效果_使用ai制作出文字阴影效果的详细方法
  3. emu8086打印等腰三角形
  4. 《水经注全国POI兴趣点1.0》发布
  5. JDBC下载,使用,访问数据库
  6. NMEA的GPGGA数据包解析 字符转数字
  7. CellularAutomation(细胞自动机)
  8. 【TSP问题】基于禁忌搜索算法求解旅行商问题Matlab源码
  9. VMware激活密钥
  10. PAT (Basic Level) 1045 柳婼、旭神两大思路分析【测试点】样例