架构师训练营 - 第一周学习总结

一、大厂架构招聘解读
提练了大厂招聘后端架构的能力模型,刨析通过职责和职位要求,了解工作内容和能力要求。
1、以大厂招聘要求和面试部题为例:

面试题示例:

2、通过大厂招聘要求导出架构师的主要职责和能力模型:(课程内容大纲)


思考:自已的能力和需要提升的地方?还有多少差距?
3、什么是软件架构,如何设计

结合架构元素、架构、架构文档、架构视图之前的关系描述,通过UML领域模型的方式展现,系统与架构之间的关系。
如何做,又回到课程大纲:

架构师是一个帽子,而不是那把椅子,角色而非职位。非职位行政权威驱动。
关心的常见问题:
技术广度和深度权衡
如何积累沉淀知识
架构师如何成长?什么样的人适合作架构师(结合李智慧老师的过往经历,从一个普通程序员逆袭为架构,积累准备、关注整体、主动自驱很重要)
二、4+1视图
经典的4+1视图,之前的软考架构师考试论文用到这方面的知识以此为主线,论文顺利过关,这次算是温故知新


逻辑视图:系统的功能构成是什么?常见的系统模块组成图,按分系统、子系统、模块等元素,利于组织划分,成本/进度评估。相关方为客户、用户、开发方。对应架构文档中的业务架构、系统功能架构图

开发视图:系统是如何开发实现的?常见的系统的类图(领域模型)、包图、分层架构图、开发目录结构、开发框架图,相关方为开发、测试。指导开发设计与实现,大多数用户并不关心,除了甲方的技术部门。对应架构文档中的技术架构图。

物理视图:系统最终在什么物理环境是如何部署的?物理节点的部署结构、节点间网络布局及通讯方式。相关方为集成商、运维人员、部署人员。对应架构文档中部署架构。给的例子有点古老,IIS+oralce9i,15年以前的产物。结合新时代Docker或K8S容器化,物理视图如何演进,还需要关注物理节点吗?

过程视图:系统运行时是什么样的?如何优化性能?关注方为开发人员。下图是Apache Http Server的过程视图,是一个经典的样例,之前一直没有见到好的例子,这一方面做的并不是太好,可能大多数程序员并不涉及多线程之类,但随着MQ队列异步解耦广泛运用,之前画的应该属于这个视图。

场景:概述架构上最重要的场景是那些,重要的非功能需求是什么?相关方为用户、设计、开发。感觉为4+1不好理解一个地方之一,一般看到的是用例作为场景解释居多,以场景驱动另外4个视图之意

三、UML
基本上还是之前的了解的常规知识,最大的收获是理清了不同阶段不同角色应重点关注的UML图,可以作为一个团队使用UML的指引,在不同阶段关心不同的图

四、架构文档
给出了下面的模板,现次体出现部署架构的重要性,通过部署架构进行展开整体设计,逐层拆解。综合运用时序图、活动图(流程复杂时)、状态图(状态复杂时)。最近写的架构文档也基本是这个套路,加上了重要的架构技术决策,不过很可惜在这个行业里大部分为了验收后补还是占多数,无架构文档的还是比比皆是,为了工期、进度,文档能省则省。

思考:架构文档是否需要数据架构方面进行体现?
版权声明: 本文为 InfoQ 作者【Geek_5c3f14】的原创文章。
原文链接:【http://xie.infoq.cn/article/9d0ee85da501f0319ee3213e7】。文章转载请联系作者。
评论