




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 IT架构的构建思路目 录 TOC o 1-3 h z u HYPERLINK l _Toc526847553 一、架构的定义 PAGEREF _Toc526847553 h 3 HYPERLINK l _Toc526847554 二、架构是做什么? PAGEREF _Toc526847554 h 3 HYPERLINK l _Toc526847555 三、做架构的最佳实践 PAGEREF _Toc526847555 h 6 HYPERLINK l _Toc526847556 四、什么是好架构 PAGEREF _Toc526847556 h 9 HYPERLINK l _Toc52684755
2、7 五、如何成为架构师 PAGEREF _Toc526847557 h 11 HYPERLINK l _Toc526847558 六、结语 PAGEREF _Toc526847558 h 11一、架构的定义在软件开发领域,自从架构这个词被广泛传播之后,产生的架构模式也非常多,架构关注点也在增加。但回到“道”的层面,架构的定义或者说本质还是:“架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。”摘自百度百科二、架构是做什么?很多做业务功能的增删改查开发感受到无趣的小伙伴常把做架构想象成一片乐土,没有嘈杂的业务声音干扰,可以专心做一番牛X的技术。会把架构单
3、纯的理解成,牛X的性能、牛X的TPS、高可用、支撑了多少PV等等。但是其实这些只是架构很小的一部分,并不是全部。在互联网时代之前都是C/S程序的天下,那个时候并没有对性能等有像现在这样的关注度,但是就已经有架构之说了。世上本无架构,只是由于团队越大越需要对整体的规则做约定,好让大家往同一个方向发力,避免各自为战,产生大量的内耗,所以才逐渐形成了架构。这条路的形成之由就是“世上本无路,只是因为走的人多了变成了路”。为什么说一个软件架构是很重要的呢?当我们的团队人数只有2、3个人,甚至只有1个人单枪匹马的情况下,可能架构凸显的作用并不是那么的明显。但是如果团队大了,相信下面的这些现象会比较常见:新
4、上一个系统,往往不是独立存在的,一般都需要与现存的系统进行交互,而需要集成交互的地方可能还很多,那么哪些集成是本系统需要实现的?同时,一般会划分为多个阶段开发,怎样界定系统的边界呢?软件系统是一个由多个模块组成的整体。因此当上游开发与我们负责的模块衔接老是出问题时,自己做再多的努力也无法扭转上游模块质量差带来的负面效果。(我想大家这时候肯定是抓狂的。)每次看到别人写的代码,老觉得自己来写的话肯定不会这么写,肯定比他写的更好。(我们做技术的,自我感觉良好是个常态)在某些场景下,自己脑子里有多套方案来实现,但是对孰优孰劣没太大感觉,最终基本上就是拍脑袋选了一个。某块代码维护的次数多了,特别是中间由
5、多个人接手过后,代码风格各异,难以理解。相似的代码在好几个地方出现,特别是一些非业务性的代码,比如日志处理等。再甚是在大型的分布式系统中,不同子程序使用了不同的同类型中间件,同样导致维护成本大增。在2个相依赖项目边界处的设计产生了分歧,并且站在各自的角度看都有道理。任何事物都是有两面性的,并不是说有了上面的这些问题,我们通过架构就要往另外一个极端去走。比如在大型的分布式系统中,不同子程序的确有必要在某些时刻选择同类型的其它中间件。如Kafka和RabbitMQ虽都是MQ,但在特定的场景下能发挥的价值是无法相互替代的。所以我们做架构有一点也是比较重要的,就是去Balance,选择一个投入产出比最
6、优的方案。关于这点第四段中会多说几句。除此之外,架构的主要目的是为了让大家往同一个方向,在同一个标准之上去发散扩张。一是把控硬性的下限标准,提高整体的最短版,二是提高上限水平位,也就是天花板位置,提供更大的发展空间。好比造一幢大楼,把框架结构设计好搭好,让大家形成一个共识,什么是承重墙不能破坏,什么是创变空间可以自定义。在这样的基础下各自发展。这个看上去是个限制,但却是做架构最重要的任务,所谓再多的文档,再多的最佳实践都比不上一条约束。降低复杂度、降低理解难度,是实实在在的收益。最怕的就是凭空假设带来的过度浪费。更甚之,我们做架构追求的理想国度是一个大家拥有一致共识的世界,架构是大家都像吃饭喝
7、水这样习以为常的习惯。去理解或者接手其它人负责的项目的时候就好像是自己写的一样。这个时候就消灭架构了,就好比现在没有人会教你如何吃饭一样。(就当YY一下吧)三、做架构的最佳实践上面提到更多的是做架构的目的。那么要做好架构,主要就是要做好抽象。做抽象的方式是类比,做类比的方式可以使用用例图,所以建议大家多画图,通过画图来将大脑中抽象的结果直观的体现在前面,再来进一步分析合理性。主要推荐2种图的类别,一种就是前面提到的用例图。如下图:另外一种是鲁棒图,如图:整个过程的主要目的是:描述其与外部实体(系统和最终用户)的交互;标识系统和外部实体间的信息和控制流。理想的世界里,我们程序的边界设计恰好匹配于
8、业务边界。然而我们作为工程师首先要承担业务需求的压力,只能挤时间去做这些非业务性工作。也因此老项目的业务边界也并不总是如新项目那样明晰。这意味着做任何架构的改动要考虑优先级,特别在拆分业务领域之前,要认真地思考业务的边界,排定优先级,考量拆分的收益与风险。划分业务的边界,则需要更多的思考拆分后的未来将如何沟通协作,然后再考虑技术因素。在技术因素前,主要考量这几点:是否拥有独立的团队来维护,以及是否拥有发展为一项独立业务的潜力。(非必要的情况下,一定要避免共享内核的开发方式)围绕领域而非 feature,有明确的维护团队,避免过于细粒度。拆分或者组合之后,能否改善现有的协作流程。能否帮助区分核心
9、、非核心业务,改善稳定性。上面这些完成了之后,便是选择合适的中间件、技术框架来满足技术层面的要求,这个的选拔主要以下面几点来考量:如果是直接引入第三方的中间件的话,成熟度如何?是否有大公司在用?(有大公司的口碑背书的肯定大大加分)近期的社区活跃度如何?(用于考量是否有更多的人在一起踩坑,降低各自遇到坑的数量和概率)硬指标,当前场景的硬性要求是否满足。如性能、对关键部分或者未来的可扩展性等。软指标,复杂度、可维护性等。这里可以罗列几个竞品的优劣势。最重要的是要自己去亲自验证上面的几点,并且做一定的模拟工作。如果曾经用过或者有其中一部分的经验可复用,这是加分项,毕竟在使用的过程中才发现hold不住
10、它,那是灾难性的!四、什么是好架构之前有听到过一句话,概括的很精辟。好的架构必须需要贴合业务。那么把业务+技术演变成一个数学公式来表达可以理解为:2个数字的和等于10,求如何组合能得到最大的乘积。那不是3*7,也不是4*6,而是5*5。所以架构不是生搬硬套,不是为了架构(搞事情)而架构,赶时髦,或者说装X。我们应避免通过个人的主观意愿来主导。比如自己觉得某个中间件好,就“拿着锤子到处找钉子”,这一敲下来,看着不错,但是带来的成本和风险被忽略了。可能有更好的解决方案,或者完全没必要在当下敲这一钉子下去。好的架构需要评判投入产出比,收益更高的就是更好的架构,就如下图的公式:产出可以理解为我们因此获
11、得的好处(诸如可靠性、安全性、可扩展性、可维护性、可伸缩性、性能等),成本是我们改造花费的投入,如人力物力和时间。特别注意的是风险这点,是很重要也是很容易被大家忽略的一点,是起到指数级作用的。选择的方案再好,如果都是一些hold不住的技术,那么风险就是无穷大,导致减号右侧无限趋近于0,最终的结果就是收益是负数,投入的成本打水漂,甚至还要加上其它额外的付出。五、如何成为架构师上面提到的这些关注点都是架构师的职责,另外特别重要的一点是,架构师必须要是个有追求的“好码农”(划重点)。软件架构师不像建筑师,其面对的本身是一个抽象的事物,如果再脱离了实操,这基本和纸上谈兵无异。所以实际工作中的难点、要点都得清楚,并且能够给出解决方案或者方向。另外只有熟悉实操才能更准确的评估成本。成为了一个真正的“好码农”就向架构师迈出第一步了。而后呢,需要不断以深广深广的节奏去开疆扩土,扩大自己的知识领域,当然需要以贴近当前工作内容的知识为主,这是第二步。到了这还没完,还有打造三板斧:业务能力、沟通能力、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地质学地球构造与矿产资源知识点梳理与习题集
- 全新危险废物运输合同
- 市政工程项目风险管理试题及答案
- 金融行业资金流水证明书(8篇)
- 鼓励创新思维实现团队突破计划
- 加强团队合作的仓库管理方案计划
- 有效进行仓库费用预算的方法计划
- 工程经济决策分析题目试题及答案
- 设计行业趋势分析与个人应对策略计划
- 水利水电工程创新策略与试题及答案
- 场区35kV集电线路电缆敷设工程监理实施细则
- 防范电信网络诈骗宣传教学课件
- 2023年USAPA美国匹克球协会官方规则翻译版
- 新一代国际结算系统需求规格说明书(汇款)V1.0
- 扫描电子显微镜SEM
- 煤矿测量规程
- 涉密人员录用审查表
- GB/T 39559.2-2020城市轨道交通设施运营监测技术规范第2部分:桥梁
- GB/T 19106-2013次氯酸钠
- 2023年江西省三支一扶真题及答案解析
- 中国铝业遵义氧化铝有限公司氧化铝工程分解分级槽基础工程 施工组织设计
评论
0/150
提交评论