0 | 软件与架构
最近学习了一下极客时间《许式伟的架构课》,主要目的是想了解一下架构师的工作内容,以及涉及到的相关技术。对自己了解到的部分做一个笔记。
架构师与架构设计之间关系
架构师(架构师团队)约等于 软件工程管理
软件架构师的职责,并不单单是我们通常理解的,对软件系统进行边界划分和模块规格的定义。从根本目标来说,软件架构师要对软件工程的执行结果负责,这包括:按时按质进行软件的迭代和发布、敏捷地响应需求变更、防范软件质量风险(避免发生软件质量事故)、降低迭代维护成本。软件工程是一个非常复杂的系统工程,它同时又随时发生变化,自始至终都在迭代变化,从未停止。它是一个系统功 能,它需要依赖一个能够掌控整个工程全局的团队,来规划和引导整个系统的演变过程。这个团队就是架构师团队。软件工程的核心点就是在大量不确定因素中找到确定性,保证项目达到预期的目标。
架构与设计
架构设计是软件工程中一个环节,比如架构设计管理部分。设计是指定规格,架构是规格的一种实现方式。架构与设计综合业务和技术做出解决方案,业务架构需要在技术架构之上,这样业务才能实现。业务架构反过来也指导技术架构的演进。如果当前技术满足不了当前业务需求,那么技术就需要升级。所以架构设计=技术架构设计+业务架构设计,架构设计只是架构师工作的一部分。
架构设计知识地图
架构师的工作范围与职责太广,先关注到核心部分-架构设计管理,技术相关的部分。架构设计是给出一个问题的解决方案,一个小需求它解决方案可能是骨架代码和核心算法,一个大型的系统可能有复杂的设计与分析。但是他们之间有共同点就是设计原则与设计思想是一致的。所以我们需要了解设计原则和设计思想,以及如何进行问题的分析(分解)。
1、全局基础知识体系
单机:组成原理、编程语言、OS、网络
多机:网络协议、分布式原理与理论、分布式协议与算法。(存储流控)
中间件:存储、消息队列
算法:数据结构与算法
2、架构分析与设计
1、《面向对象分析与设计》 -分析与设计
2、《领域驱动设计》 -分析与设计
3、《架构整洁之道》-设计
4、《重构》-改进
5、《软件工程》-理论
6、《GoF 设计模式》-设计
7、《unix 编程艺术》-设计
3、具体基础平台架构范式-技术
- B/S 应用-关注web 应用
《淘宝技术这十年》
《大型网站技术架构:核心原理与案例分析》
《架构即未来:现代企业可扩展的Web架构、流程和组织》
- 微服务架构
《微服务设计模式》
- 大数据
4、具体行业领域架构范式-业务
- 物联网
- 电商