在初创公司的野蛮生长阶段:业务场景和需求边界很难把握,有时候根本不需要架构师,产品需要快速迭代和变现,需求频繁更新,这个时候需要的是快速实现。
在公司成长稳定阶段:业务模式和应用场景边界都已经比较清晰,这个时候最需要架构师,需要架构师能对线上业务进行模块划分,系统拆分重构,并做好相关高可用的措施,以保证系统的稳定,安全、高效地运行。
不同的行业,对架构师的要求也不同,比如电商业务和AI领域,从架构到业务场景,完全是两个物种。
架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导任务。
具体来说是一个确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。
主要着眼于系统的“技术实现”。
因此架构师应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。
架构师负责设计整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
架构师实际上就是软件的总设计师,是在工程实践中培养出来的,而并非是上了几次培训班,读了几本书就可以成功的。
工作职责系统架构师的职责就是设计一个公司的基础架构,并提供关于怎样建立和维护系统的指导方针。
具体来讲,系统架构师的职责主要体现在以下几方面:1.负责公司系统的架构设计、研发工作;2.承担从业务向技术转换的桥梁作用;3.协助项目经理制定项目计划和控制项目进度;4.负责辅助并指导 SA 开展设计工作;5.负责组织技术研究和攻关工作;6.负责组织和管理公司内部的技术培训工作;7.负责组织及带领公司内部员工研究与项目相关的新技术;8.管理技术支撑团队并给项目、产品开发实施团队提供技术保障;9.理解系统的业务需求,制定系统的整体框架(包括:技术框架和业务框架)10.对系统框架相关技术和业务进行培训,指导开发人员开发;并解决系统开发、运行中出现的各种问题。
系统架构师的目的:对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。
系统架构师的工作在于针对不同的情况筛选出最优的技术解决方案,而不是沉在具体实现细节上。
此外系统架构师是不可培养的,好的系统架构师也许不是一个优秀的程序员,但是不能不懂技术之间的差别,技术的发展趋势,采用该技术的当前成本和后继成本,该技术与具体应用的偶合程度,自己可以调配的资源状况,研发中可能会遇到的风险,如何回避风险。
这些才是架构师需要考虑的主要内容。
架构师分类按概念分类,可分为软件架构师:职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。
主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员,比如这些架构师的title可能是JAVA架构师、Python架构师、LAPM架构师等等。
web架构师:是网站系统、功能、模块、流程的设计师。
按公司规模和体系,可分为解决方案架构师:与客户探讨业务需求,将业务、市场,与技术、产品结合起来,为客户提供解决他们需求的方案。
比如阿里云针对大客户都有解决方案架构师。
系统架构师: 最终确认和评估系统需求,并将业务转换为技术,为研发人员制订核心框架与技术规范,为研发工作澄清技术细节并扫清技术障碍 。
服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用平台架构师:这里的平台其实包括两个平台,一个是系统平台,也就是负责搭建多个系统整合的系统应用平台;另外一个其实是基础平台,是专门负责搭建基础技术平台。
业务架构师:业务架构其实已经开始脱离技术层面了,但是它要求架构师有跨越多系统的大局观,去整合和组织不同系统的技术平台与交互模式。
其实这个职位的未来也就是CIO了。
主要内容:理解业务,梳理模型,设计模式,接口,数据交互。
网络架构师:过去,我们可能听的最多的是网络工程师。
不错,一个优秀的网络架构师必须有足够的网络技术基底,并且它的关注点也是系统的基础架构。
比如说如何搭建并优化集群环境,如何构建基于云计算的系统应用与部署等等。
它对于像淘宝、腾讯这样的互联网公司是极其重要的。
移动架构师:移动互联网的迅猛发展,横向和纵向都细分出了很多新的职责和岗位,移动架构师的职责和作用日益重要,既要整体和全局考虑整个前后端的软件系统架构,又要重点深入移动客户端的架构设计的方方面面;既要有跨平台思维,又要拿捏好原生和混合开发的尺度。
另外移动应用的特点,导致移动架构师必须要比传统系统架构师更加注重非功能性的质量属性。
前端架构师:这里的前端特指网站开发中的前端,主要考虑前端呈现层的设计(HTML/CSS/JS/AJAX/RIA/…),跨浏览器设计等等。
大数据架构师:比如某些公司做大数据处理,需要理解业务,并通过大数据相关技术来实现。
任职要求1:具备 8 年以上软件行业工作经验;2:具备 4 年以上 C/S 或 B/S 体系结构软件产品开发及架构和设计经验;3:具备 3 年以上的代码编写工作经验;4:具备丰富的大中型开发项目的总体规划、方案设计及技术队伍管理经验;5:对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握;6:具有面向对象分析、设计、开发能力(OOA、OOD、OOP),精通 UML 和 ROSE,熟练使用 Rational Rose、PowerDesigner 等工具进行设计开发;7:精通大型数据库如 Oracle、Sql Server 等的开发;8:对计算机系统、网络和安全、应用系统架构等有全面的认识,熟悉项目管理理论,并有实践基础;9:在应用系统开发平台和项目管理上有深厚的基础,有大中型应用系统开发和实施的成功案例;10:良好的团队意识和协作精神,有较强的内外沟通能力。
岗位技能架构师是一个写的了好代码,画的了UML/原型,写的了一篇技术文档,更加能解决好项目关键技术的综合人才。
架构师=前端工程师+后端程序员+系统分析师+关键技术解决+各种技术搭配+设计模式+部署调优+其他,可见架构师是多面手,在项目当中起到连接管理与项目成员的重要角色。
因此,在通往大神级的架构师的道路上,你需要懂需求、设计、代码、部署、架构、服务器、运维、调优等等。
一个能担负起企业级应用的架构师,脑海里常出现的词会是这些:负载均衡、集群、分布式、高并发、高可用、易管理等等,粗略说来,应具备以下知识技能:(1)数据层:重点在于集群方案的选择,比如MySQL集群,集群方案很多,需要选择符合业务的方案,比如多主,主备,读写分离等等,是否还需要做高可用,是用lvs,还是zookeeper,是否需要例如mycat类中间件来管理数据库或者做数据分片等等。
(2)服务层:时髦一点,选择dubbo,微服务让团队开发耦合度没有那么高,各自关心各自的模块,都以服务方式发布出去。
传统一点用springmvc+restful,对于并发不高的系统,没有必要用dubbo。
缓存的选择,涉及到文件缓存、数据库缓存,可以用memcached、ehcache、redis。
(3)应用层:框架太多,ssh,ssm,jfinal等等,选择适合项目团队的框架;UI界面,h5很美观,但对于浏览器的兼容就把开发人员搞哭了,可以选择成熟的ext或者easyui。
(4)网络层:多数开发人员都不用涉及,能了解下f5之类的就好。
(5)部署:是否需要用docker来部署,开源docker容器让部署轻量化,很容易就可以扩展一个节点,对于高并发、伸缩性要求高的场景可以使用。
docker的出现,完全可以实现一键部署。
是否需要负载均衡,可以选择硬负载(就是前面说的f5),也可以用软负载(nginx)。
软负载的方案简单一点可以是apache+tomcat,需要考虑session复制,复杂一点选择lvs+haproxy。
打包发布,熟练使用maven,能建立自己的maven私服,能指导项目成员使用maven打包发布。
(6)安全:大多数安全在网络层就解决了,但应用的安全不容忽视,比如需要考虑SQL注入,授权认证,这些目前框架都能解决,重点的安全问题来自框架本身,大多数应用选择框架都是开源的,如果团队没有能力修复漏洞只能等更新。
(7)其它方面:测试(自动化测试),版本管理(git or svn),大数据(奇热无比),人工智能(高大上)等等。
架构师的必备素质做为一个合格的架构师必须具备八个重要的素质:业务理解、技术广度、技术深度、丰富经验、沟通能力、动手能力、美学素养业务素质就是指要懂业务,对业务有足够的敏感度,能够清楚地知道自己的设计能给公司带来多大的业务影响。
对技术素质最基本的要求是深度和广度。
美学素质是要求架构师有美感和艺术感,所以有些公司会经常安排技术人员听音乐会,看艺术表演,因为艺术和设计是相通的。
动手能力是指在适当的时候架构师能够上手实际 *** 作,需要写代码的时候动手写代码,尤其是底层的关键代码。
沟通能力也极为关键,因为架构师水平再高,如果沟通能力很差,花半天时间说不清楚自己的方案,那么再好的方案又有什么用途?薪资和发展随着互联网发展经历了PC互联网时代、移动互联网时代以及IOT物联网智能时代,在万物皆互联的人工智能时代,数据信息爆发式增长,并发量也变得越来越有挑战性,并对系统的可用性、扩展性、易用性等提出更高的要求。
随之,具有专业能力的互联网系统架构师人才备受重视,一般月薪在2w-6w。
而对于有一定后台研发经验(尤其是3~5年以上经验)的程序员们来说,成为架构师不仅是时代的趋势,同时也是个人职业价值的诉求所在。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)