开启智能后端和架构设计沉淀 第一篇
Posted AI智能后端和架构设计
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开启智能后端和架构设计沉淀 第一篇相关的知识,希望对你有一定的参考价值。
从事后端开发多年,也学了一些前端皮毛,但是一直没有特别多的精力和时间去做系统化思考和沉淀。
关于怎样才能成为才能成为一名合格Web架构师?似乎是最先需要思考的。
那问题来了:一、什么是架构师?二、架构师的核心价值?三、架构师的需要掌握哪些能力?合格的架构师需要哪些技能,需要哪些知识体系,好像是一个似懂非懂的逻辑。
经过自己的思考和互联网的信息的整理:
一、什么是架构师?
先分享一段互联网的摘选:
为什么大部分的程序员成不了架构师
https://zhuanlan.zhihu.com/p/86262782
架构师,程序员, 产品经理的区别,大概就是建筑行业里建筑师,建筑工人,甲方业主的区别。
产品经理说我要建这么这么一栋楼,架构师说好吧,我来帮你看看是做成砖木结构还是 框架结构,房型怎么设计,水电气怎么布局,预算多少,然后程序员上阵,按照图纸把楼建起来。运营是大楼的物业管理,负责营运大楼。
软件开发越来越成为传统行业(即便在互联网企 业),一个成熟的软件团队内部自然会分化出这些角色,各展所长。但非常不同的是,建筑工人很少能自发成长为建筑师,后者都是科班出身,因为建筑学科已经高 度发达,需要掌握结构力学,美学等技术,现在软件行业还没有这么高的成熟度,程序员和架构师接受的都是一样的计算机教育,所以程序员可以自学升级到架构 师,走一条不同的升级打怪路线。
那么,架构师是什么人呢?
按所工作的不同软件层分,有网络架构,系统架构,数据架构,业务架构,应用架构,平台架构。
按所解决的问题领域分,有电商架构,支付架构,搜索架构,安全架构,性能架构,游戏架构,多媒体架构,等等等。
按其工作的深度来分,有集成架构,业务架构,模块架构,框架架构,中间件架构,软件架构,引擎架构,服务器架构,甚至编程语言架构。
是不是太乱了?好比在设计师的世界观里一切东西都需要设计。软件也需要精心设计,在优秀的程序员眼里,每一行代码都需要架构!都体现了架构。
为了解决问题,程序员自然需要架构,他们中的佼佼者被冠以架构师的名号,获得了一定的话语权,逐步成为一个职业分工,我想,这就是架构师的本来面目。
成为架构师,需要经验和眼界。
https://blog.csdn.net/weixin_44048532/article/details/85126982
用七句话总结对架构师的定义:
1.以工程思维全面理解业务需求
2.基于模型和基础模式抽象简化
3.提出恰当可行的整体解决方案
4.在限定资源范围完成明确目标
5.满足业务需求且保证系统质量
6.在可预见的周期内具备扩展性
7.并在系统生命周期内持续演进
二、架构师的核心价值?
第一,技术开源化
开源已经成为互联网技术的主流,多数公司使用开源技术,自行选型维护,出了问题自己解决,而且技术更新很快,需要能够高效学习快速上手。
开源的技术流,与大众创业、万众创新一样,充分发挥创造力,各种风险和坑也都由使用者来买单。
第二,产品敏捷化
业务调整快,小步快跑,快速试错,必然弱化长期规划,创业公司可以先上MVP,已经上规模的公司怎么保持活力?
可以将新的业务做成独立的模块,解耦,降低依赖,更重要的是时刻关注架构的灵活性,有备无患。
第三,服务全网化
面向全网用户,随时提供服务,系统规模大,停止服务就会损失收入,要求尽可能无缝升级。
业务不可控性较大,业务量可能很大波动,一旦业务爆发,要有快速的弹性部署方案。
第四,系统复杂化
难免有很多的临时方案,以及有用没用的功能堆积,会使系统的可维护性,架构合理性越来越差。
系统的交互越来越多,关联性强,需要工具结合系统机制进行管理,否则就会失控。
第五,人力高效化
根据摩尔定律,基础设施成本日趋廉价,而人工成本则持续走高,这是两个必然方向。
那么就需要提供更好的技术平台,好钢用在刀刃上,技术人员的能力要求越来越高,高效做有意义的事,简单重复的东西让机器去做。
在互联网+的时代背景下,架构师的核心价值是什么?
软件架构师的最大价值不在于掌握多少先进的技术,而在于具有将一个大系统切分成N个低耦合的子模块的能力,这些子模块包含横向的业务模块,也包含纵向的基础技术模块。这种能力一部分源自专业的技术和经验,还有一部分源自于架构师对业务场景的理解、对人性的把握、甚至对世界的认知。
划重点:互联网竞争,本质上效率上的竞争。
架构的好与坏也是为了最终会 体现在团队的业务效率上。
评价架构师价值核心关键项:产品服务的稳定性、扩展性、性能、体验、迭代效率、硬件成本、团队开发成本效率上、快速响应业务发展等等。
这些内容将决定架构师以及整个团队的价值。
三、架构师的需要掌握哪些能力?
先看一段摘要吧:
架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求。总结起来大概有下面几点技能要求:
一、 架构师有优秀的编码能力,解决开发人员无法解决的难题。
二、 架构师对系统的大数据容量高性能高并发高容错的网站有架构设计和开发经验。
三、 架构师对操作系统、数据库、服务器各种软件使用的配置比较了解,比如Linux、Web负载均衡、反向代理、数据库集群、容灾等比较了解。
四、 架构师对软件开发过程有清晰明确的认识,也就是对软件工程有有明确的认识,并能把需求进行分析、建模。
五、 架构师学习能力很强、接触知识面要很宽广、喜欢关注和接触各种新的技术。
六、 架构师沟通能力很强。
七、 架构师对从事的行业的业务要有深刻的了解。
换个角度看看这些要求:
第一条要求你是个优秀的程序员。
第二、第三条要求你要懂DBA,运维都需要懂的知识。
第四条要求你是个项目经理。
第五条要求你是个技术全才,不仅学的要深,还要学的广。
第六条、第七条要求你熟悉公司业务人员、产品人员要懂的知识。
这个要求太高了,架构师就相当于战争中的司令员的位置,是整个团队的核心和灵魂,这种技术要求甚至技术总监和CEO都不具备,唯一要求少点的就是管理能力,如果再具备管理能力,那就甚至能超过技术总监和CTO了,而中国不乏管理人才,怪不得有人总结说,中国没有合格的架构师呢,也难怪,大概算一算,这种要求相当于一个人学6个人的知识,并且都能达到专业的水平,这就意味着你的领悟能力和学习能力,要高于常人几倍!所以说,成为架构师确实需要天分啊。
成为优秀程序员,需要学好的知识:
1、 面向对象编程、UML画图、设计模式、代码重构
2、 常用ORM工具
3、 MVC,WCF,XMl, JQuery ,SQL以及性能优化
4、 FrameWork一些深入的知识
5、 高性能代码,比如静态化,MemCached等手段。
6、 最好也了解一些其他语言,比如Java,php等。
成为DBA,需要学好的知识:
1、 常用数据库,MSSQL、mysql、Oracle,性能调优熟练,备份、负载均衡、集群、容灾熟练
2、 大数据量处理熟练
3、 各种数据库监控软件
成为运维,需要学好的知识:
1、 各种Web负载均衡的硬件,比如F5,软件,比如nginx等原理和配置
2、 反向代理加速,比如SquID等
3、 操作系统,Linux是必须懂的,各种好的工具都在Linux下。
4、 各种性能监控软件。
成为产品和业务以及项目经理,需要学好的知识:
1、 沟通和理解能力。
2、 该行业和本公司的业务逻辑。
3、 软件工程的知识。
4、 质量控制、进度控制、人员组织等。
看来想成为合格的Web架构师,需要学太多东西了,只有一条路可走--持续不断的修炼和学习。
另外学习中,采用先深后广的策略是明智的选择,一门学深了,其他知识可能都会融会贯通,那样比较的学起来会很快。否则可能陷入知识的海洋里,没准淹死了。
总体的看来,Web架构,分为服务器架构和程序架构两个方面的架构,一般的Web架构师还是偏向程序架构,因此学好语言,程序架构是基础,学好了这些,做一个合格的架构师没大问题,毕竟DBA,运维的东西在公司都有专业的人在干。
所以深度还是要深入学习编程的知识、软件架构知识,有了这个基础后,Web架构师应该在大数据量、高并发、高负载、以及高容错方向再有所了解和涉及,再返过来促进我们对软件架构的思考,这种深-广-深-广的模式是我们学习的方法,只要坚持不懈努力几年,做真正合格的Web架构师是没大问题的。
能力模型核心总结:
3.1、架构师通用能力:
学习能力、沟通能力、产品分析、业务分析、流程分析、数据分析、工程管理、时间管理能力等。
3.2、架构师架构能力:
编码基础、底层原理、常用算法、数据库设计、流程设计、安全设计、设计模式、框架设计、网络原理、web服务器、数据库、性能测试、性能调优等。
3.3、架构师需要解决技术场景问题:
疑难攻关、大数据量、高并发、数据安全、高负载、高容错、系统扩展、技术演进、技术规划 等。
个人对于架构师技能的思考总结:
在如上的能力中,最重要的是学习能力。架构师需要不断的在知识的广度和深度中学习,同时快速具备上手的能力,并快速融合到自己的知识体系中,并且可以合理的运用到自己的系统中。
虽然后端技术选型有,c、c++、java、python、php、go、rust等等,因为自己的架构师方向,还是Web应用架构师,从web应用生态角出发,这里自己还是选择Java作为自己核心沉淀的技能。
借用图灵的图片,来勉励自己,希望成为一个合格的We初级架构师。
以上是关于开启智能后端和架构设计沉淀 第一篇的主要内容,如果未能解决你的问题,请参考以下文章