架构设计系列文章,请参见连接。
背景
前面几篇文章说了很多问题,什么是架构、架构为什么重要、架构师知识体系等文章,也翻译了《如何系统学习软件设计和架构》。而作者在从业的这么多年以来,也一直在学习架构设计。而业界也有很多架构设计的方法论,理论基础。
对于系统的学习架构作者也没有很好的方法,去系统的学习架构方法。作者只能尽量的去查找并学习架构到底应该怎样学习。这里对于这些方面进行逐个的分析与深入,以帮助作者与读者更好去学习架构设计。
问题定义
学习一项事物的时候,做好的方式是带着问题去学习。那么学习架构设计时我们应该带着什么问题去学习呢?
- 架构到底干了什么?能给我们带来什么?
- 谁驱动了架构设计?谁来做架构设计?
- 怎么输出一个架构?怎么做架构设计?
- 用什么做架构设计?
- 什么架构才是好架构?
- 架构怎么落地实施?架构落地偏差怎么样解决?
- 实践中的架构模式有哪些?
前面文章中也提过IASA这个组织,这个组织提出来架构师的技能图表。这个技能表比作者之前编写的《架构师知识体系》更加以人为本的方式进行架构师技能描述。下面会总结IASA的技能表和其他的一些内容进行学习架构设计的方法。
思维转变
在解决上面的问题之前,需要做一些简单但是很难的事情。从一个程序员升级到架构师并不像从初级到中级、再到高级的这个过程,而从程序员到架构师是一个质的变化。所以说升级到架构师时需要做下面这几件简单而又很难的事情。
-
第一条思维:从代码跳出来才可以真正的学习架构
现在很多高级程序员或者初级架构师有一个重要的误区:"架构就是框架"、"架构就是《高级》技术"。作者只能说架构和技术是两个领域的东西。架构是追求美的,技术是准求准的。两个事物的目标都不一样,怎么可能是一种东西。
-
第二条思维:最新的并不是最好的。
适时适事分析决断是最新的技术并不是最好的思维的精华。作者一直坚持着一件事:所有的技术都有它适用的范围,一项技术不可能适用于所有的场景。需要根据具体的使用场景去确定在一个领域内使用的具体技术。例如:通信,在iot场景下的通信最好的方式是mqtt。而在互联网场景的通信最好的方式是HTTP,在微服务场景下最好的通信方式是rpc。
-
第三条思维:方法论是必不可缺的。
作为一个必须要有理论基础。理论基础在软件行业中很多都是经验,而不是具体的公式推导。这些方法论有很多很多,在不同的方面体现着不同的作用。这些方法论是经过很多次经验教训总结归纳出来的。所以从成长的角度来说从别人的经验教训中获取经验是一个聪明人应该做的。例如:奥卡姆剃刀和YAGNI原则都是在不同的场景下总结出相同的经验教训。
-
第四条思维:为自己织一张知识的网。
自我管理是自我提升的最重要内容。而在自我管理中对于架构师的基本技能的管理就需要有完整的技术知识体系(网络)。有了这张网队自己知识的欠缺,知识间联系就更有把握。可以更好完善自我也可以更好的指导实践。
对于这四条思维转变是逐层递进的。在成为架构师的过程中需要不断的学习与总结,总结出系统化的知识体系。最后还是一个现在流行的一句话:人生在于提升认知。
解决方案
提出问题是最难的。也就是意识到这里有问题,才有办法去解决这些问题。如果一直没有意识到问题,那问题就永远解决不了。所以,认识问题、认识本质、根因分析才是解决问题的本质。
而在问题定义中我们对于学习架构师这个问题做了一个定义。带着这些问题去解决学习架构师这件事可以更加体系化。
在之前介绍IASA组织中,有一个叫做《系统架构的五大基础》的技能表。这个五支柱的目标是基于以人为本的方法创建一本IT架构能力指南,该指南传达了体系结构发展的各个层次的最佳实践和学习目标。
IT架构师的知识体系是通过对架构师工作任务分析的信息来定义的。我们学习并将其组织成有意义的技能支柱。
我们所有这一切的目标都是在这个环境中,所有人都能找到了学习和实践体系结构的途径和方法。大多数项目失败是因为它们没有按时或按预算完成,更糟糕的是,他们没有解决他们开始的商业问题。我们相信通过共同的技能、工具和培训以解决这些问题,这就是我们创造知识体系的原因。IASA 认为, 以下几点可以说是一个 IT 架构师的成功的必要条件:
-
技术战略(企业技术战略:BTS)
通过技术开发和实施商业战略的技能。架构师如果不能深入理解企业的业务背景,或者不具备进一步深入理解的能力, 那么他将无法满足企业、机构、客户的业务目标。他们必要的知识包括金融、IT 企业战略的演进,行业热点、趋势、标准等也是架构师需要长期关注的内容。
具体内容还包括:- 商业基础
- 战略发展与合理化
- 行业分析
- 企业价值评估
- 投资优先次序和规划
- 需求发现和约束分析
- 合规性
- 体系结构方法与框架
- 风险管理
-
IT 背景
管理和交付技术计划时使用的技能和知识。这里的 IT 背景是指为了形成合理、成熟的解决方案, 一名架构师在一个特定企业背景中所应该具备的技能。这里说的技能应同时包含架构本身的技能和组织流程方面的技能, 也就是说架构师需要在各方面具有执行和创新的能力。举个例子来说, 一名好的架构师不仅须要熟悉行业内的趋势, 理解各项技术的优缺点, 但同时也还需要了解特定 IT 背景中各个各种技术的使用和方法论。- 技术项目管理
- 资产管理
- 变更管理
- 基础设施
- 应用程序开发
- 治理
- 测试方法、工具和技术
- 知识管理
- 决策支持
- 平台和框架
-
设计技能
在业务和技术中解决问题并在实现之前对其进行描述的技能。设计技能是架构师的主要技能。拥有设计技能不仅可以创造一个新的架构, 更重要的是对架构设计的审核;我们不能仅仅关注于完美的蓝图,更重要的是决策过程中的判断、依据和各种权衡因素的考量。该领域的技术以及设计的方法论是作为一个名架构师必须具有具备的知识。 当然, 对各种设计的工具、模式、风格、观点的熟悉也必不可少。同时, 架构师须要需要以业务需求为依据来做出合理决策。- 需求建模
- 体系结构描述
- 分解和重用
- 设计方法和过程
- 设计模式和样式
- 设计分析和测试
- 整个生命周期的可追溯性
- 视图&视点
- 整个系统设计
-
人员能动性
在人类系统内工作的沟通、社会和组织能力。人员能动性研究的是在IT项目或环境中管理、引导人员,并协调人员之间的关系。在这方面,架构师也需要这方面的技能,他们需要管理不同文化的差异,处理和客户之间或和项目成员之间的关系。 虽然大多数情况下, 架构师不会有承担直属经理或项目经理的职责, 但他们仍然需要领导和管理的能力, 尤其是协作和协商的技能, 同样重要的是演讲和协作技能。- 管理文化
- 客户关系
- 领导与管理
- 同伴互动
- 合作与谈判
- 演讲技巧
- 写作技巧
-
质量因素
跨领域的系统关注点,如性能、安全性和可靠性。IASA将决定架构质量的各个因素归为四大类: 使用方面的因素, 演化方面的因素, 操作方面的, 以及最重要的安全方面的因素。 这些质量因素通常是会互相牵制, 基于时间、成本、需求、人员等限制, 架构师往往需要在这四个方面之间做反复权衡。我们需要对这些质量因素做量化的分析和监控。然而, 这些质量因素的标准也必须具有实际意义的, 因为客户往往只需要系统达到 99.999% 的可用性,而往往不愿意支付达到这一质量标准所须需的费用。- 负载均衡和优化质量属性
- 可管理性、可维护性、可支持性、可扩展性和灵活性
- 监控和管理
- 性能、可靠性、可用性、可扩展性
- 安全
- 可用性、本地化、可访问性、个性化/可定制性
- 打包、交付、部署
对于IASA的五大支柱每一个都是一个非常大的领域,而IASA的公开材料中并未对这些内容进行完整的阐述。所以,从IASA的这几个部分可以自行深入研究,也可以在IASA上报一个培训。不过IASA的培训和资料的话没有接触过,不知道怎么样可以自行判断。
总结
要成为架构师就需要对自己的认知进行不断的提升,不断的改进。而成为架构师之路是一条漫长而艰辛的路,而且在这条路上需要不断的探索新的路径。在不断的学习中组织出自己架构师知识网络才能真正的成为架构师。
实践与理论在架构师成长过程中一样重要。通过实践去验证理论,通过理论去指导实践就是架构师之路上重要的策略。
参考:
Capability Taxonomy and Descriptions 3.0