技术进阶之路
上图是一个完整的技术进阶之路,今天我们重点是谈架构师,我先从架构师进阶之路谈起,然后我们一步步往里讲,完整的剖析架构师能力模型。
架构师进阶之路
1 架构师胚胎(程序员)
工作年限1-3年左右,掌握程序相关的基础知识:语言编程开发、基本的数据结构、基本的算法掌握、对熟练使用常用的语言开发环境:java、c#、c++、go、groovy、php、python等相关的开发环境、基本的数据库知识(还到不了性能调优)、基础的设计模式(eg:工厂模式等 )、常用的通讯协议等。
2、架构师萌芽(高级程序员)
工作年限一般3-5年,如果你做研发超过了5年还是处于重复搬砖的节奏,还没有考虑代码效率以及避免重复造轮的情况,还不能算到高级。
这个阶段需要掌握的知识,比如:掌握更多的设计模式、操作系统原理、分布式系统原理、常见的性能调优方案:数据库端(事务超时、索引如何优化、高效sql等)、应用端、web端(静态分离怎么做)等、高并发基础场景..
3、架构师幼苗
工作超过5年,身经百战的同时,至少必须参与个一个次大型项目,你还不能完全操盘一个大项目的架构设计,但至少对整个架构设计整体有一定的了解,比如:单点登录、分布式缓存的场景、异步消息场景…典型的基础架构设计怎么实现。以及从理论的角度,透彻领会应用设计模式、JVM的原理、listener、filter等为什么要这样设计…了解技术的核心原理。
4、架构师
如果你经历了上述3个步骤阶段的项目操练,如果在这个阶段,你能独自带队操盘一个中型、大型项目的架构设计,并且从架构设计的角度:效率、可维护性、可扩展、容错…能胜任这个项目并且成功上线,这是一个标志性的架构师节点,独立胜任中、大型项目架构设计操盘手。
架构师再往上进阶,就会涉及到上图提到的技术总监以及CTO,如果有兴趣的同学可以参考我之前写的这篇文章一篇文章搞懂高级程序员、架构师、技术经理、技术总监、CTO,从薪资到技能要领的区别
备注:架构师并不只是技术进阶的终点,还可以继续往技术总监和CTO进阶。
架构师完整能力模型
架构师的职责应该是立足于技术和业务之间的中间角色或者平衡点, 在针对业务深刻理解的基础上,针对业务中存在诸多变数,挑选适合的技术架构和技术方案。
年薪百万的架构师,基本属于公司的首席架构师,需要包含两块能力,而不仅仅只是技术能力。
这两块能力分别包含:技术能力和业务能力。
架构师技术能力
分层的应用设计思想:SOA,事件驱动等。
分布式原理:CAP,最终一致性,幂等操作等
大型网络应用结构
消息中间件,分布式缓存,负载均衡,集群技术,数据同步等。
还有高可用,可容灾分布式系统设计能力
容灾系统,作为为计算机信息系统提供的一个能应付各种灾难的环境,尤其是计算机病毒、掉电、网络/通信失败、硬件/软件错误和人为操作错误等人为灾难时,容灾系统将保证用户数据的安全性(数据容灾),甚至,一个更加完善的容灾系统,还能提供不间断的应用服务(应用容灾)。可以说,容灾系统是数据存储备份的最高层次。
例如,淘宝在早期就遇到过机房停电的情况,所以才促使了后来的机房容灾的能力,保证服务稳定。尤其是当发生灾难性事件并对IDC节点产生影响时,能够具备节点级别的快速恢复能力,保障系统的持续可用。
去年携程也遇见了一次几乎一整天的宕机事故,后来发现是自动化部署的的脚本的问题,代码重新部署,重新执行脚本,不断把数据等等都删除,这也算是人为事故中的经典案例。
还有大容量数据存储和检索系统设计能力、数据库分区,NoSQL,搜索引擎、自动化部署、回滚机制等,以及监控系统等等,这些知识体系,敬请关注我后续的文章和课程。
架构师业务能力
技术架构的目的是为了服务好业务,技术离开了业务,就是空谈。所以,对于好的架构师来讲,需要对业务有本质的理解,技术再牛逼,解决不了业务的问题也是没用的。所以一定要站在业务的角度去了解他们的需求,它到底是要并发高还是流量高,还是要分布式,还是要高可用。
这就是业务分析能力
架构师需要学会基于自己的经验知识进行分析,把业务语言转换成产品语言、开发语言。这样在跟产品、研发团队的沟通中,才能完成信息的有效、高保真传递。当然,这就涉及到沟通能力,因为团队协作需要良好的沟通。
开启你的架构进阶之旅
总之,要想成为优秀的架构师,需要时间实践(提升技术能力),也需要不断的深入业务分析(提升业务能力),再加上自己的领悟能力(需要时间阅历),这才是一个有效的路径。
以上就是我对架构师完整能力模型的拆解,希望对你有所帮助:)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》