1. 软件架构认知
1.1 组成派和决议计划派
组成派
- 组件:代码包,模块,范畴,CBM,SOA
- 软件体系架构:就是描绘核算组件和组件的交互
- 架构规划:拆解、界说、相关组件,画图和完结
决议计划派
- 架构的真理是由架构决议计划,是才智和思想
- 软件体系架构:由一个个决议计划组成的有机整体
IT界的莫扎特
-
桥梁
:从“产品”听众获取创意 -
指引
:指引“研制”乐队完结演奏 -
切割
:将长篇高文切割成乐章 -
交互
:将乐章和声部交叠协奏 -
决议计划
:在思考中挣扎,在决议计划中完美 -
演进
:逐步优化
面试题
作为架构师,你的日常作业主要有哪些?
作业广度;组成和决议计划;莫扎特6高文用
- 加分项:办法论完好,新架构框架,新技能框架
作为架构师,有什么推重的书或者大师?
- 学习才干、知识体系
- 加分项:体系书本、新技能书本,大师互动分享
你在架构规划进程中的难点?
- 事例深度;决议计划派思路,莫扎特6高文用触发
- 加分项:决议计划依据,理论-实际-理论
1.2 软件架构的意义
1.2.1 架构是项目干系人进行沟通的手法
语境不同,态度不同,渠道失真
SWOT 剖析
1.2.2 架构有助于循序渐进的原型规划
-
拆迁者形式:一次性全部搬迁
-
绞杀者形式
:一个一个模块进行搬迁
- 补葺者形式:
习惯度函数
- 原子 vs 整体性习惯度函数
- 触发式 vs 持续式习惯度函数
- 静态 vs 动态习惯度函数
- 自动 vs 手动习惯度函数
- 暂时 vs 预设习惯度函数
1.2.3 SWOT剖析
1.2.4 约束条件
-
ADMEMS矩阵
-
RAID矩阵
-
那些质量最中心
- 扩展性、功用、可用性、安全性、耦合性
- 可操作性、可重用性、伸缩性、可维护性、易用性、可移植性
1.2.4 架构和安排结构
- 怎么处理环境问题?开发、QA和生产不匹配
- 怎么处理耦合问题?凤凰项目和传统体系耦合
- 怎么决绝资源公用问题?要害人员疲于在多项目中切换
- 怎么满意峰值需求?突发性事务需求、功用测验需求
- 怎么处理安全问题?最小价值完结安全合规审计
1.2.5 架构可复用、可传递的模型
办法论复用(ABSD、DSSA、AT、EA、TOGAF)
- 模型复用(UML、SOA、CBM)
- 工件复用(素材、图片、表格、图标、文件)
架构复用
剪裁(三七准则,保留30%仍是70%)
- 架构资产更新(内部资产库,外部架构社区)
1.2.6 面试
-
标题:作为架构师,遇到部分抵触怎么处理? 题眼:决议计划派,语境、态度、沟通渠道处理,架构决议计划
加分项:办法论完好(通用言语、RASCI)决议计划、SWOT剖析)
-
作为架构师,平常规划重视那些要素? 质量(扩展性、功用、可用性、安全性、耦合性) 加分项:多角度剖析,实际事例侧重点剖析
-
怎么处理新老架构之间的抵触? 题眼:处理技能债,架构演进策略 加分项:多形式运用(拆迁、补葺、绞杀)、抵触预防
-
作为架构师,选择一个你的实战项目,描绘运用架构怎么随着安排架构的改变而演进?
-
选择一个项目,描绘该项目中,你怎么选择、复用和剪裁合适的架构规划框架、规划形式、架构风格、软件包?
1.3 依据软件架构的软件开发ABSD
- ABSD办法论:功用分化、架构风格、软件模板、递归
- 什么是架构的真实驱动:事务、质量、功用需求
- 详细完结:需求、规划、文档化、复审、完结、演化
需求驱动
四大基石
- 功用分化:运用已有的依据模块的内聚和耦合技能
- 架构风格:选择架构风格来完结质量和事务需求
- 软件模板:描绘软件元素在同享服务和底层架构的根底上,怎么进行交互
- 递归:清晰界说迭代的每一个进程
自顶向下功用分化
体系结构6大进程
需求进程
面试题
-
对于新事务,怎么完结一个完结的架构规划流程? 题眼:架构规划办法论(如ABSD的需求、规划、文档化、复审、完结、演化) 加分项:能将规划准则、架构风格和演化进程描绘清楚
-
怎么在架构规划中选择合适的软件风格和软件模板? 需求驱动论(功用、质量、约束) 加分项:能结合实际项目,描绘怎么依据需求选择风格和模板
1.4 依据特定范畴的软件架构开发DSSA
- DSSA办法论:特定问题域的运用模型
- 范畴具有普遍性、笼统性、重用性
- 剖析、规划、完结、迭代
DSSA根本活动
建立进程
#### 三层模型范畴剖析办法和人员分工
- 范畴专家:产品司理-需求规约、范畴字典
- 范畴剖析人员:体系剖析员、产品司理、企业架构师
- 范畴规划人员:运用架构师、本身程序员-软件重用和范畴规划
- 范畴完结人员:老带新形式
面试题
-
描绘一下你在大型架构规划中的责任,以及怎么和其他部分同事配合? 题眼:人员分工、架构师沟通、架构师责任、组件和决议计划 加分项:结合特定办法论(如ABSD、DSSA 、AT等)
-
描绘一下对范畴架构的了解? 题眼:范畴驱动模型、DSSA范畴架构开发办法 加分项:能将事务映射到范畴,并复用现有架构元件
-
描绘一下你们公司的事务模型? 题眼:范畴驱动模型,本公司中心域DSSA软件架构 加分项:能将地点工作的范畴DSSA软件架构解说清楚
1.5 架构思想办法论AT
2. 架构师中心才干
2.1 学了这么多技能,为啥还成不了架构师?
-
三观培育 技能 -> 事务 (钱) 事务驱动性公司
-
目标:高并发、高可用、可扩展性、快速改变、安全性、本钱操控
-
十项全能
-
打破职位边界:技能人员、产品司理、项目办理(
落地
) -
刻画三维
-
全面开展
- 走到聚光灯下
- 跳出舒适区:活跃跑位才有时机
- 自动承担:自动承担一个项目,为成果担任
- 表达主意:没有主意,仍是主意太少
- 做让事务部分最惦记的技能人员,才干升任架构师
面试
- 大型运用中架构规划的考量点 高可用、吞吐量、扩展性、快速改变、本钱平和和安全性
- 工作生涯规划的问题 初期强调技能道路,远期转办理道路、培育软实力 事务重要性(技能调研,产品才干,大局观、影响力的构建)
- 什么特质使你从一个团队脱颖而出? 软硬实力+事务才干
2.2 架构师开展方向
运用范畴架构师
代码是榜首生产力
了解事务,需求剖析与拆解(事务了解层次)
事务架构师
技能计划最佳实践。不要小看事务,懂事务的架构师才值钱
体系架构师/企业架构师
技能道路和演进
技能生态扩张事例
技能平台输出道路:由内向外
-
事务平台输出道路:由外向内
:微信-小程序
推动项目落地
和谐才干:共同利益,资源
,有打法,厚脸皮
面试
-
个人工作生涯规划 架构师方向是一个不会犯错的答案
-
对架构师才干模型的知道?
事务+技能
事务层面(了解事务,需求剖析和拆解,事务对接,范畴治理) 技能层面(单兵才干(深度和广度)、技能选型、有码在手、组件和模块化结构) -
地点工作的技能开展趋势\事务开展趋势? 敞开平台是BAT的战略方向 中台化的看法:肯定公司的事务方向、学习工作榜首的经验来回答
-
项目快速落地? 优先级+时间表+和谐才干
2.3 化技能为生产力
2.3.1 拆解技能难题-三段论
以大化小
责任范畴区分
分层构建处理计划
推演作业中的处理计划,总结沉积办法论
2.3.2 处理问题从转换思想开始
拥抱改变
2.3.3 面试题
-
讲一讲你在项目当中碰到的难题 强技能导向,不要将推动时分的困难
-
你是怎么处理的? 有思考有打法:三段论; 事务背景-技能难点-拆解问题以大化小; 学到了什么
2.4 环绕事务做技能架构
2.4.1 技能助力事务的两个方向
2.4.2 自建体系 vs 外包收购
投入收益曲线
安稳性++ 风险阻隔
研制资源平衡
- 同质化 vs 中心事务
-
掌握中心技能
:直接盈余事务,术业有专攻
以新零售事务为例:
事务特点拟定技能开展道路
- 阿里系
- 抖音系
面试题
-
谈一谈工作开展?根底平台类?or 事务类 10年前:到技能强的部分去(情怀)
技能日新月异
现在:到事务复杂的部分(实际)真实有价值在事务,尖端绩效都是事务团队
-
聊一聊详细项目 事务为先:先让面试官明白你的事务 技能主线:为什么选用这个技能?和事务的联系 幻想空间:未来的改善点,事务量double架构计划
2.5 拟定技能开展道路图
2.5.1中长期的技能架构道路图
- 短期:强事务驱动
- 中期:承上启下
- 远期:面向未来
2.5.2 规划面向未来的架构
挑战:用户量级的增加
面向未来:容量规划 底层架构
面试题
3. 架构规划准则和规约
3.1 架构规划准则和规约
3.1.1 根本准则
敞开关闭准则
对修正关闭,对扩展敞开
简单说:就是不修正原有完结类,而是新写完结类。
缺陷:会导致代码臃肿。
单一责任
一个类只做一件事
依靠倒置准则
以笼统为基准比以细节为基准搭建起来的架构要安稳得多,因而大家在拿到需求之后,要面向接口编程,先顶层再细节来规划代码结构。
接口阻隔准则
接口阻隔准则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不运用单一的总接口,客户端不应该依靠它不需求的接口。
接口阻隔准则和单一责任准则差异?
接口阻隔:指的接口
单一责任:指的是类和办法
迪米特法则
迪米特准则(Law of Demeter LoD)是指一个目标应该对其他目标保持最少的了解,又名最少知道准则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合
里氏替换准则
组合和聚合准则
3.1.2 规划高并发体系
局部并发准则
服务化拆分
3.1.3 高可用体系
- 限流
- 降级
- 弹性核算
- 流量切换
- 回滚
3.1.4 简单轻量的架构
3.1.5 面试
研讨各类技能文章,了解高并发事务的处理计划: 红包,春晚红包,大局发号器,秒杀,抢单
3.2 架构规划准则
3.2.1 微服务运用服务拆分
3.2.2 不同维度对服务拆分
压力模型
主链路规划