架构师

软件架构师如何工作

旧巷老猫 提交于 2020-02-19 18:39:16
  通过阅读王概凯的架构漫谈和查阅一些其他资料,我大致了解了一下软件架构师的一些相关知识。   什么是架构呢?在架构漫谈中这样说道:把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。那又应该如何做好架构呢,最重要的有两点。一是识别问题,要正确的认识问题,需要问两个问题:这是谁的问题,有什么问题。二是要架构切分,架构的切分的导火索是人的负载太重。架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。它的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。   所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本

(课)软件架构师如何工作

孤者浪人 提交于 2020-02-19 17:57:24
  在谈如何工作前,我认为首先要谈谈工作的内容是什么,或者说是为什么而工作,工作的最终目的是想实现什么目标。   软件架构:根据要解决的问题,对目标系统的边界进行界定,并且对目标系统按照某个原则进行切分。之后对其设立沟通的机制。最后使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。最重要的最后一点,不论我们做什么,最终都是为了让人类本身受益,不管是直接的还是间接的。   说完工作的内容,为什么而工作,工作最终的目的是实现什么目标。接下来就要步入正题,来谈谈软件架构师如何工作,再有就是如何快速高效的工作,并且最终完美的实现当初的目标。   一个软件架构师如果想要快速的进入工作状态,并且能够快速的打开解决问题的思路,首先就要对问题中的大多数的新旧概念有一个大的把控,和比较好的理解,做到这几点,问题基本上已经搞定了一半了,明白概念背后的含义,利用对概念的理解,快速的进行学习。这样能够很快的识别和定位问题。当然,既然已经明白了真正问题的所在,解决起来就会相当得心应手喽。   在成功找到解决方案之前还有一个非常重要,说难也不难,但是说简单也不简单的事情,这个事情就是,寻找问题的主体,即真正要被帮助解决该问题的人,前面说到的是有什么问题,这一段说的是谁的问题,前面的问题不论你解决的再好,但是如果你没有找对主体,那么也只能说是白干一场。所以说问题如果被比喻成是心脏

软件架构师如何工作(《架构漫谈》阅读体会)

你。 提交于 2020-02-19 17:33:25
  摘自百度百科:所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。   正如《架构漫谈》作者所说,架构师必须是一个组织的领导人。软件架构师的主要任务并不是从事具体程序的编写,而是从事更高层次的开发架构工作,因此软件架构师需要有良好的组织管理能力以及一定的实权。   要想成为一名合格的软件架构师,首先要明白架构师是去帮助别人解决问题,而不是自己完成工作,并且工作完成与否是别人说的,不是自己,所以身为一名架构师要把完成别人工作当成自己的最大利益,要努力地越来越多的人依赖你 认同你。   架构师要学会发现问题,把别人的问题当成自己问题来思考并且解决问题。同时架构师是一个领导人,他所考虑的不光是解决问题,他更要考虑如何用最小的成本获取最大的利益。架构师是在不断的平衡与调整别人的利益过程中让组织成员都能够积极地为服务。所谓架构师,不光技术要好,还要有良好的管理能力。   通过阅读GItHub一篇文章,我了解到软件架构师的日常与必备技能,并把每个技能简单概括如下。 日常: 定义和确定所需的开发技术与平台; 定义开发标准,如编程标准、工具、审核流程、测试方法等; 对确定和理解业务需求提供支持; 设计系统并根据需求做出决策; 对架构定义

软件架构师是如何工作的

微笑、不失礼 提交于 2020-02-19 17:31:28
  学习计算机技术的过程中往往会遇到一个问题:这个东西是干什么的。如果能弄清这个问题的答案,那就能理解我们所要学习的技术的整体架构。在这就有了架构这个概念。 架构是什么   在弄清架构是什么之前,更需要弄清我们日常生活中常见事务的过程,这是因为计算机是个神奇的领域,在需求我们的创造力的同时,更需要我们的逻辑感,所以软件工程师往往会用现实生活中的东西来作为灵感来源,方便他们为手上的工作做出最精妙的设想。从原始社会开始就有了分工这个概念,男人狩猎女人采摘,使得整个氏族能有条不紊地发展起来,这对于古人类学家来说就是一种社会架构;而随着人类社会的复杂化,这种简单的工作划分就完全不再适用了,而到了现代社会,估计就人类学家而言这个社会架构也就像他们这一辈子都无法完全研读的一本百科全书了。   计算机是人类为了降低自己的工作复杂度而产生的工具,也不知道为什么,在创造这个机器的时候,人们总是有意无意的使它更接近于现实中存在的东西或者逻辑,面向对象技术就是最好的例子,这也是软件工程师为了把现实映射到计算机里的伟大实践。如果计算机工作的过程只是二进制的不断延伸,那估计没几个人能用计算机。所以,我们现实中存在的架构这个东西也就顺理成章地在计算机里面产生了。 软件架构师能力一——判断   架构好比分层的鸡尾酒,相互之间不能过度的交流,否则会混成一杯平凡的酒,如何判断出某种液体适合这种酒就是调酒师的工作了—

软件架构师如何工作

痴心易碎 提交于 2020-02-19 15:05:47
软件架构师如何工作 阅读了王概凯老师的架构漫谈九篇博客,从中了解到了什么是架构、什么是软件架构师以及软件架构师应如何工作。软件架构师首先要搞明白问题的主体,之后把问题进行拆分形成架构,是工作人员的效率更高。架构师还必须要明白,所给出的解决方案 -- 架构的分拆、合并方案,只有让问题的主体的权责对等,才能够真正的解决别人的问题。一般明白了问题的主体,以及主体的利益所在,做到这一点也没有问题。 架构产生的动力是事情必须由人执行的工作,每个人的能力、时间有限,人对目标系统有更高的要求,目标系统的复杂性使得单个人完成这个系统很困难。架构是根据要解决的问题,对目标系统的边界进行界定,并对目标系统按某个原则的进行切分,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间,并对这些切分出来的部分,设立沟通机制,这得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。 一名软件架构师,必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处,反过来,具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是很健康向上的,因为每个人的权利和义务就是比较均等的。并且这类领导对于组织成员权利和义务的对等状况会非常的敏感,会及时的调整组织架构,在问题发生之前就解决了。架构师要能够发现“是谁的问题”

云架构师进阶攻略

独自空忆成欢 提交于 2020-02-16 07:56:15
https://mp.weixin.qq.com/s/tHRl5OQHY2mNXqKwACCVWw?utm_source=tuicool&utm_medium=referral 一、架构的三个维度和六个层面 1.1、三大架构 在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构。 第一个是IT架构,其实就是计算,网络,存储。这是云架构师的基本功,也是最传统的云架构师应该首先掌握的部分,良好设计的IT架构,可以降低CAPEX和OPEX,减轻运维的负担。数据中心,虚拟化,云平台,容器平台都属于IT架构的范畴。 第二个是应用架构,随着应用从传统应用向互联网应用转型,仅仅搞定资源层面的弹性还不够,常常会出现创建了大批机器,仍然撑不住高并发流量。因而基于微服务的互联网架构,越来越成为云架构师所必需的技能。良好设计的应用架构,可以实现快速迭代和高并发。数据库,缓存,消息队列等PaaS,以及基于SpringCloud和Dubbo的微服务框架,都属于应用架构的范畴。 第三个是数据架构,数据成为人工智能时代的核心资产,在做互联网化转型的同时,往往进行的也是数字化转型,并有战略的进行数据收集,这就需要云架构师同时又大数据思维。有意识的建设统一的数据平台,并给予数据进行数字化运营。搜索引擎,Hadoop,Spark,人工智能都属于数据架构的范畴。 1.2、六个层面 上面的三个维度是从人的角度出发的

云架构师进阶攻略(3)

﹥>﹥吖頭↗ 提交于 2020-02-16 04:21:28
此文已由作者刘超授权网易云社区发布。 欢迎访问 网易云社区 ,了解更多网易技术产品运营经验。 十、基于Hadoop和Spark了解大数据平台 对于数据架构的部分,其实经历了三个过程,分别是Hadoop Map-Reduce 1.0,基于Yarn的Map-Reduce 2.0, 还有Spark。 如下图是Map-Reduce 1.0的过程。 Map-Reduce的过程将一个大任务,split称为多个Map Task,分散到多台机器并行处理,将处理的结果保存到本地,第二个阶段,Reduce Task将中间结果拷贝过来,将结果集中处理,取得最终结果。 在Map-Reduce 1.0的时候,跑任务的方式只有这一种,为了应对复杂的场景,将任务的调度和资源的调度分成两层。其中资源的调用由Yarn进行,Yarn不管是Map还是Reduce,只要向他请求,他就找到空闲的资源分配给他。 每个任务启动的时候,专门启动一个Application Master,管理任务的调度,他是知道Map和Reduce的。这就是Map-Reduce 2.0如下图。 这里Yarn相当于外包公司的老板,所有的员工都是worker,都是他的资源,外包公司的老板是不清楚接的每一个项目的。 Application Master相当于接的每个项目的项目经理,他是知道项目的具体情况的,他在执行项目的时候,如果需要员工干活

软件体系架构师工作流程

孤人 提交于 2020-02-07 08:33:56
在我看来软件体系架构师就相当于房子的大致骨架的设计师,房子的稳定性取决于架构是否稳定是否满足需求,所以软件体系架构师首先要做的就是对软件的需求进行认识和分析,因为需求对于整体构架的设计至关重要,所以软件体系架构师要在软件需求分析阶段的适当时宜尽早介入,在一些软件过程能力成熟度较低而软件项目重要性较高的软件项目团队,软件体系架构师可以在概念化阶段介入。在这一阶段软件体系架构师与软件需求人员一起将所有的需求从不同的级别分层数理列表归纳总结建立跟踪矩阵,并划分为不同的类型进行数理列表归纳总结建立影响分析表,找出不同需求类型之间的相互支持、相互制约关系的影响。 第二步是确定对架构关键的需求,软件体系架构师将所有的需求进行筛选,在深思熟虑之后做出合适的需求权衡和取舍,最终确定对软件架构其关键作用的子集,控制架构设计时需要详细分析的用例个数,找到架构的重点非功能需求。要根据需求确定架构目标(即是组成设计过程、确定使用范围并确定什么时候该结束的因素)。并且要了解架构的消费者。要确定架构是否会被其他设计师、开发人员、测试人员、业务人员或管理人员使用。确定架构受众的需求,以让架构更为成功、更有影响力。了解条件限制。了解技术限制、使用限制、和部署限制。从一开始就要了解这些限制,这样你才不会在将来遇到一些意想不到的麻烦。 第三步进行概念性架构设计,首先分析关键用例和有用例规约,运用鲁棒图

软件架构师的工作流程

送分小仙女□ 提交于 2020-02-07 08:33:26
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。通俗的说,主导系统全局得分析设计和实施、负责软件构架和关键技术决策的人员就是软件架构师。 软件架构师在需求分析阶段介入。在这一阶段软件体系架构师与软件需求人员一起将所有的需求从不同的级别分层数理列表归纳总结建立跟踪矩阵,并划分为不同的类型进行数理列表归纳总结建立影响分析表,找出不同需求类型之间的相互支持、相互制约关系的影响。并同需求分析人员共同建立需求规格说明书。 第二步是确定对架构关键的需求,软件架构师将所有的需求进行筛选,在深思熟虑之后做出合适的需求权衡和取舍,最终确定对软件架构其关键作用的子集,控制架构设计时需要详细分析的用例个数,找到架构的重点非功能需求。要根据需求确定架构目标(即是组成设计过程、确定使用范围并确定什么时候该结束的因素)。并且要了解架构的消费者。要确定架构是否会被其他设计师、开发人员、测试人员、业务人员或管理人员使用。确定架构涉众的需求,以让架构更为成功、更有影响力。了解条件限制。了解技术限制、使用限制、和部署限制。从一开始就要了解这些限制,这样你才不会在将来遇到一些意想不到的麻烦。为后面的工作打下坚实的基础。