第1章 架构师的修炼

1.1 何为软件架构

1、在开发软件的时候是否必须要设计架构?

答:不是;要不要设计架构视软件的系统规模及复杂度进行考量。

2、架构设计与其他的概要设计、详细设计有什么不同?

答:架构设计更多的是从宏观角度、从全局角度去思考问题。概要设计、详细设计考量的是具体的细节,更多的是从微观角度考量。

3、什么是软件架构?

答:软件架构,就是指从宏观角度说明一套软件系统的组成与特性,它要求架构师在进行架构设计时,必须具有大局观,首先从全局角度去思考问题。

软件架构包含逻辑架构、数据架构、开发架构、运行架构和物理架构5个方面;

逻辑架构:就是软件要为哪些用户提供什么功能。逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问层”这样经典的“三层架构”。架构设计最忌讳经验主义。每个项目的特点都是不一样的,应当依据项目的需求去仔细考量,而不是“炒冷饭”。

数据架构:就是软件逻辑中的数据结构。数据架构,更关注的是数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。更贴切来讲,如何选择需要的关系型数据库、流行的NOSQL,如何保障数据存储层面的性能、高可用性、灾备等等。很多时候,和物理架构是有紧密联系的,但它更关注数据存储层面的,物理架构更关注整个基础设施部署层面。

开发架构:就是软件代码的层次骨架构。开发架构则更关注程序包,不仅仅是我们自己写的程序,还包括应用程序依赖的SDK、第三方类库、中间价等。

运行架构:就是软件在运行过程中所体现的非功能需求。例如并发带来的问题,比较常见的“线程同步”问题、死锁问题、对象创建和销毁(生命周期管理)问题等等。

物理架构:就是软件的物理部署以及网络拓扑。物理架构,更关注的系统、网络、服务器等基础设施。

1.2 如何成为合格的架构师

1、如何成为合格的架构师?

答:首先培养自己的思维习惯,从宏观、整体、大局上思考问题;然后一步步落实到细节上。

2、架构师的职责有哪些?

答:

(1)架构师是介于需求与研发中间的人

(2)架构师是统领全局的将军

架构师与项目经理都是统领全局,那么区别在哪?项目经理属于管理岗,架构师属于技术岗,他们的职责分工不同;项目经理关注的是软件之外的人的因素,比如任务怎么分工、进度怎么把控、人员怎么调配等;架构师关注的都是软件之内的设计问题,比如采用什么技术、怎么分层分模块、怎么制订技术规范等。

(3)架构师要作为“技术大牛”攻克技术难题

架构师不一定精通所有技术的所有细节。架构师的背后是一个团队;在这个团队里架构师往往直到指引方向的作用,而更多的细节是架构团队各个成员去具体实现。

(4)架构师作为战略规划师去规划未来战略

3、架构师的几种类型?

答:

    (1)解决方案架构师:侧重于沟通客户,理解 业务,为客户制订技术解决方案;

    (2)系统架构师:能力更加均衡,负责从项目的需求分析到技术落地的全流程;

    (3)平台架构师:更侧重于技术,将技术难题封装成开发平台,支撑业务系统;

    (4)企业架构师:从具体项目中独立出来,更侧重于规划未来的技术战略;

4、架构师应具备哪些思维模式?

答:

    (1)宏观思维

宏观思维是对架构师最基本的要求;遇到问题时,不要直接就落实到设计实现的细节,而应该努力先从宏观、整体上去思考问题,培养自己的大局观。从整体上进行分析、思考 、规划的基础上,一步步去细化落实,最终解决问题。

    (2)抽象思维

实质上就是在复杂每亩各个个体的基础上抽象出共性,然后再思考 这些共性的问题应当采用什么方法去统一解决;架构设计就是将各个模块中共性的问题按照统一的方法规范化地解决,从而达到降低系统维护成本、提高系统可维护性的目的。

        1)实例化需求

如果做的设计太抽象 ,自己绕不出来了,遇到这种情况的时候,首先应当思考我们要解决的是什么问题,然后找到它们要应用的场景,这些场景就是这个问题的实例化。先分析在这个场景中应当怎么解决,再分析在下一个场景中应当怎么解决;分析的多个,设计就开始收敛,设计思路也就越来越清晰。

2)分而治之

首先将要设计的系统分为不同的角度、不同的模块、不同的问题,然后针对这些不同的角度、模块、问题,逐个击破,问题就迎刃而解了。

1.3 如何成为顶级的架构师

1、如何成为顶级的架构师?

答:

    (1)将业务转换为技术的能力

沉淀多个的行业信息化建设经验,潜心研究相关的业务领域知识,深入挖掘业务存在的痛点,然后有针对性地制订相应的技术方案。

    (2)合理利用技术支撑业务的能力

即能高大上又能快速落地的能力;首先,“高大上”的技术方案必须要有,它是敲门砖,没有它就拿不下项目;它可以作为一个远期的目标,给客户一个值得期待的愿景。有了远期目标后,还需要有一个个小目标,逐步落实愿景,可以将远期目落实到数个一二个月就能实现的短期目标中。

    (3)具备前瞻思维和战略思维

宏观思维和抽象思维是成为合格架构师的基本要求,或要更进一步成为顶级架构师,还必须具备前瞻思维和战略思维。

1)前瞻思维:就是站在技术的最前沿去预知整个产业未来发展趋势的能力,只有具备这种能力的架构师,才能像导师一样为团队指引前进的方向。

架构师应当保持清醒的头脑,关注热点,但不盲目投入。选择投入还是不投入,是一种决策能力的体现,也是顶级架构师区别于普通架构师的重要能力。

2)战略思维:就是对整个团队,甚至对整个公司未来战略发展的一种思考能力。战略思维,就是具有敏锐的嗅觉,能够评估日常的每项工作对于未来是否具有战略意义,然后在此基础上对具有战略意义的工作加大投入,帮助团队开展更多更有潜力的业务。

1.4 “5视图法”架构设计

1、“5视图法”是哪5视图?

答:逻辑架构、数据架构、开发架构、运行架构、物理架构。

2、如何利用“5视图法”进行架构设计?

在使用“5视图法”进行架构设计时,不是5个视图同时进行,而是按照一定的顺序,这个顺序是“从不同时间点开始并行进行”的顺序。

从逻辑架构开始,从客户业务需求开始;在架构设计中做出的所有决策,都是基于用户需求的考量。在这个过程中特别忌讳“经验主义”;逻辑架构的设计,就是对当前用户需求的梳理,确认当前系统应当包含哪些功能。

在逻辑架构的基础上,进行数据架构与开发架构的设计;数据架构就是对业务流程的梳理,即功能性需求的梳理。一个系统功能性需求的梳理工作量非常庞大,在架构设计阶段,要“抓大放小,抓住主要问题”。“数据”是功能需求的主要问题,只要抓住了数据结构,及对这引起数据架构的处理,就抓住了功能性需求的核心,这就是数据架构。

从逻辑架构到数据架构是一个由粗到细的过程,而从数据架构到开发架构则是一个由细再回到粗、总结归纳的过程。在开发架构阶段,要总结归纳共性,对整个系统进行规划,从更高的层次进行规范,为开发团队大规模地入场参与设计开发做好准备。

在分析清楚功能性需求后,架构师就可以着手那些关于性能、响应速度、吞吐量等非功能性需求的分析,即运行架构的设计。

最后,所有对性能、安全、可靠性的设计调优,最终都将落实到服务器节点、资源设备、网络拓扑等物理设备上,这就是物理架构的设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值