网站架构师的工作内容( 架构师和高级开发如何升级到架构师?(附案例))
优采云 发布时间: 2022-03-24 23:21网站架构师的工作内容(
架构师和高级开发如何升级到架构师?(附案例))
在一家互联网公司工作了这么久,接触过很多技术和业务的架构师。自从升为架构师后,我能直观地感受到高级开发与架构的差距,以及如何将高级开发提升为架构师,我有更多的切身体验。本文将结合我在一家互联网公司的*敏*感*词*,与大家分享架构师在工作中的重点和进阶开发,给大家升级架构师的灵感。
1 差距首先体现在工作态度上
立志升级为架构师的架构师或高级开发人员,在平时的工作中必须具备以下特点。
1 当出现问题时,尽快调查和分析问题,即使问题似乎与你无关,而不是试图回避问题。
2 上班的时候基本没时间看不相关的网页或者手机。即使手头没有工作,我也会看项目框架或技术,或者思考如何优化。
3 有问题的时候,一般都会深挖。即使你不能从根本原因上解决问题,你通常也会找到根本原因,而不是试图绕过它。
对此我深有体会,更何况互联网公司的架构师都是这样的,就连表现出色的高级开发者也是如此,因为这些可能是在互联网公司生存的必要条件。当然,我也看到过勉强凑合的人,但普遍提升的空间不大,或者无法进一步提升,或者无法在外面竞争高薪工作。
2 技术方面,架构师的基本功和高级开发的技术盘点
一般开发大多侧重于“*敏*感*词*”的代码,只要在本地机上完成任务,然后再加入一些调试技巧,做到代码可追溯、数据库可查使用。
先进发展的“先进”体现在两个地方。首先,你对业务比较熟悉,但话说回来,如果你换了公司,业务值多少钱?二是对底层代码有进一步的了解,比如了解Spring Boot的启动步骤。
架构师的基本功高于高级开发。对比一下我见过的架构师和高级开发的各种表现,可以看出两者的区别。
1 由于进阶开发大多是调试*敏*感*词*程序,所以查看日志的时候,一般是在本地查看,也可以使用工具下载日志到本地windows,然后使用文本搜索关键字的工具。但是对于架构师来说,查看日志的效率太低了,大部分都是用less、grep等命令查看的。也就是说架构师必须非常熟悉Linux的操作和操作。
2 高级开发一般不需要考虑打包部署等问题,架构师在优化分布式组件之前必须打包项目,所以架构师需要打包项目(如maven命令)、项目部署(如jenkins或uDeploy)和项目质量管理(如继承声纳)有一个认识。如果项目需要部署在云平台上,可能还需要了解 Docker 或 k8s 等工具。也就是说,架构师除了写代码,至少还要了解项目的集成部署。
3 架构师需要多了解组件集群,比如分布式组件和云平台集群,反正都不是*敏*感*词*。可能高级开发者也对 Dubbo 和缓存等组件有一定的了解,但是架构师必须掌握这些组件的分布式部署,即如果一台机器出现故障,如何顶其他热备机。
3 架构师除了开发代码,更应该关注压力测试、方案评估、系统上线等实现点
架构师必须有一些与产品相关的意识,而这些意识必须始终贯穿于他们的工作中。与高级开发相比,这对架构师来说是一项有价值的技术。
1 对于架构师来说,产品(或相关的组件模块)不仅仅是完成,还需要进行压力测试。压测结束后,架构师不得不挑骨头,思考优化点。
2 架构师还必须从当前的一些类似产品(或竞争产品)中学习。在性能方面,只有更好不是最好。比如一个模块当前的运行时间是2秒,他必须想方设法把它压缩到1秒。,这就要求架构师要精通各种技术。
3 架构师要评估各种风险,尤其是新版本上线的时候,发布的时候就像一扇门。首先,要保证新旧代码兼容,不能停止服务。其次,他们必须控制风险并预先设计各种基于代码的代码。或者数据库回滚或者处理计划,一旦出现问题,必须立即回滚。
也就是说架构师首先要保证系统能够顺利上线,其次在开发过程中要提前考虑各种上线风险,时刻考虑优化的方向。高级开发没有这样的要求。
4 架构师是某个领域的中坚力量,高级开发还处于“干作业”阶段
架构师不仅是技术把控,还需要结合业务,与相关团队合作,制定目前可行、实施风险较小的各种解决方案。也就是说,架构师虽然不会像项目经理那样专注于项目管理,但也需要有带领人的经验。一方面,让团队成员实现自己的设计理念。问题,高级开发人员还是可以退的,架构师应该负责解决。
这里我列出一些我见过的建筑师的常见工作场景。
1 架构师的手机上有各种群组,*敏*感*词*成了不关手机醒来的习惯半夜看手机。而高级开发也可以等待架构师分配工作。
2 如果出现问题,比如业务功能出现问题,或者系统运行时出现OOM等性能问题,或者通过监控发现关键指标掉线,架构师需要第一时间介入。
3. 本组或其他组的任何问题,包括业务和技术问题,应通过协调解决。
4 更多时候,架构师必须与相关人员(产品、其他组或系统运维人员等)会面,以评估各种解决方案的实施情况。在制定计划的时候,每个群体都会有自私之心,想要在自己的群体中少做一些改变。此时,建筑师不得不协商或妥协各种计划。架构师在这方面的工作量甚至超过了编写代码的工作量。我经常看到很多架构师在工作中开会,下班或周末都有自己的时间写代码。
5 系统发布阶段最能体现架构师和高级开发水平
在高级开发的眼中,系统发布只是将最新的代码和脚本部署到生产服务器上,我之前也是这么认为的。但在这个阶段,架构师需要考虑以下问题。
1 发布期间,新旧代码共存。比如灰度发布时,部分流量会被切到新代码上。此时如何保证兼容性。
2 发布时的回滚步骤,如果涉及到数据库回滚,就要准备好各种SQL。
3 数据清洗和数据迁移的步骤,往往在增加新功能后,数据清洗的范围是全局的,架构师不得不考虑性能问题。
4 系统上线后,是时候监控和检查那些关键步骤了,检查后如何设置异常阈值?
由此可见架构师要掌握系统运维+综合性能调优+系统监控的能力。对于高级开发,要求实际上非常低。
我遇到的 6 位伟大的建筑师,以及他们的先进方法
在加入互联网公司之前,其实我也接触过一些伟人,但是加入互联网公司之后,我发现第一伟人的数量比想象中要多得多,而且都是年轻的,第二伟人是在某些领域比我想象的更精通。
就说我的师傅,除了工作态度好、责任心强、乐于助人等软实力之外,看日志调试代码、在jar包中调试的硬实力也很强大,更重要的是,对于一些分布式组件,达到畅销书的程度(至少10000份)。而我师父是业内大佬。他不仅出版了很多关于Spring的书籍,而且最近在极客世界录制的视频课程目前已经卖出了20000+,后期估计至少有50000+。
跟着牛人学,我在互联网公司的能力提升并没有慢,在架构上也取得了一定的进步。根据我的个人经验,我怎样才能快速提高?
1 当然,业务一定要熟悉,不然就没法工作了,但是熟悉了也不能掉以轻心。它还取决于技术(尤其是有价值的技术)如何与业务集成。
如何熟悉业务?没有捷径,先看文档,再看代码,第三问人,第四看自己域外的上下文系统,但系统会调用。
2 有问题不要推,看日志等检查,如果不行,就得深入debug一些组件包看。当调查问题的数量和类型积累到一定程度时,你可能无法自学。遇到的一些大佬,基本有问题就调查,从不推卸责任。
3 毕竟,一个人的眼界是有限的,他可能接触不到很多面孔,所以他必须更多地与伟大的人打交道。找好人帮忙排查问题的时候,一定要自己多看,而且平时还要跟好人沟通。好人经常给出学习方法和学习点,好人会帮助指导各种技术的坑。
4. 多参与自己领域以外的工作,如压力测试、系统部署等。工作时,不仅要停留在技术领域,还要关注项目启动、组件部署甚至项目部署。其实很多人才不仅做过开发,还做过系统集成和系统运维,让之前的分布式组件知识不再停留在“剥削”的层面。有时即使你不一定被分配到这种工作,你也必须更多地参与。
7 通过哪些渠道可以获得架构师相关的帮助文档和实践机会
1. 目前网上有大量架构师进阶资料,包括分布式组件,包括云计算等,甚至还有架构师相关的面试技巧(这里推荐一个Java架构交流群:609073571 ,里面有很多架构和志同道合的朋友的文档视频)。在这方面,您必须阅读更多与带有框图的业务实践相关的文档。还可以从详细的架构图中学习。如下所示:
流行的源代码框架
自动化工具
微服务架构
高并发和分布式
系统性能优化
搜索引擎
容器化技术
电子商务项目实践
2. 需要理论联系实际。如果只看架构师相关的文档,会很枯燥,很容易半途而废。我有过这种经历。如何结合它?最好去互联网公司锻炼一段时间。即使你在其中做高级开发工作,你也一定有机会接触到架构师的技能。
3. 与人打交道要多,小到可以和自己的团队成员交流,中到可以和公司相关专家交流并征求意见,在更大的范围内,可以多和一些大人物交流互联网上的男人。我意识到这些交流永远不会白费。除了技术交流的机会,我还可以掌握一些赚钱的渠道和方法。
8 总结,升级为架构师,不仅要提高技术
升级为架构师固然离不开技术的提升,但架构师最终还是希望技术能解决实际的业务问题,所以在升级的过程中,我更关注“技术+案例”的信息,为比如我会搜索“dubbo case”之类的,以便深入挖掘技术的落地方法。
此外,建筑师必须与人打交道,这比与技术打交道要困难得多,因为有各种各样的人。
那么升级为架构师后会带来哪些好处呢?当然,有很多钱。不仅如此,建筑师往往是某个领域的专家,所以在这个领域,技术可以换来金钱,比如卖视频教程。最重要的是,通过提升架构师积累的一些软技能,比如责任心、管理时间的方式、高效的工作方法、思考问题的方式,这是最有价值的。
为了帮助那些追赶架构师的程序员,在这里我重新整合和分享我采集和使用的架构师的档案和视频。希望程序员少走弯路,快速成长!
需要的朋友可以加入Java架构交流群:609073571,里面有文档和视频,还有很多志同道合的朋友一起交流学习!