定义
系统架构师,是在信息系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施的人。 他们(与系统分析师)共同确立系统的主体架构和实现方向,并负责指导软件工程师等开发人员的编码开发工作
这是维基百科上对系统架构师的定义,比较清晰的表达了架构师职责范围;根据此定义并结合自身感受,将其概括为:制定问题/需求的合理解决方案,并保证其顺利落地。此处关键是如何评判解决方案是否合理,自己理解可从以下三点进行核对:
- 具备清晰的核心设计概念,并贯穿方案始终
- 方案必须是可度量的、实现的、可测试的
- 符合普适的架构原则
《架构即未来》15个架构原则
(1)N+1设计。永远不少于两个,通常为三个
(2)回滚设计。确保系统可以回滚到以前发布过的任何版本
(3)禁用设计。能够关闭任何发布的功能
(4)监控设计。在设计阶段就必须要考虑监控
(5)设计多活数据中心。
(6)使用成熟技术。只用确实好用的技术
(7)异步设计。只有在绝对必要的时候才进行同步调用(这条自己存疑)
(8)无状态系统。只有当业务确实需要的时候,才使用状态
(9)水平扩展非垂直扩展
(10)设计至少要有两个步骤的前瞻性。在扩展性问题发生前考虑好下一步的行动计划
(11)非核心则购买。如果不是你最擅长的,也提供不了差异化的竞争优势则直接购买
(12)使用商品化硬件。
(13)小构建,小发布,快试错。全部研发要小构建、不断迭代,让系统不断地成长
(14)隔离故障。实现故障隔离设计,通过断路保护避免故障传播和交叉影响
(15)自动化。设计和构建自动化的过程
要求
具备哪些能力可胜任架构师这个职位,目前自己理解主要有四点,以后有新体会了再调整
- 问题/需求分析推演能力。找到问题本源,进行合理的假设推演确定最优逻辑方案。
- 良好技术视野并具备一定技术前瞻性,良好技术整合能力。立足实际通过整合成熟技术输出最优架构方案
- 熟练的编码技巧和细节把控。具备良好的编程习惯,丰富的业务经验是保障方案实现质量重要一环
- 良好的问题排查、性能调优能力。作为技术牵头人需有能力解决实施过程中遇到的技术难题