架构师是什么? 要做什么?
架构师 : 是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物. 架构师不是一个人, 他需要建立高效的体系, 带领团队去攻城略地, 在规定的时间内完成项目.
1 确认需求
架构师要懂得用户需求, 理解用户真正想要什么, 这使得架构师必须要和分析人员不断沟通, 反复确认需求规格说明书, 以此来保证他精准清楚用户需求.
「架构师会与很多人沟通, 例如开发人员, 例如项目经理, 有时甚至是用户本身. 架构设计的目的很明确, 目的是什么呢? 挖掘用户需求.」
2 系统分解
在架构师认可需求规格说明书后, 架构师已明确用户需求是是什么, 这时候便看架构师的分解能力了.
从「纵向分解」和「横向分解」和读者说明系统分解是什么 --
「一般分为纵向分解和横向分解, 纵向分解是将整个系统分层, 从而将整体系统分解成下一级的子系统与组件. 横向分解是在系统分解成不同的逻辑层或服务后, 对逻辑层进行分块, 确定层与层之间的关系.」
3 技术选型
在系统分解后, 架构师会最终形成软件整体架构, 接下来, 架构师的职责是技术选型.
前端到底用瘦客户端还是富客户端呢? 数据库是用 MySQL 还是 MSSQL 又或是 Oracle 呢?
需要在了解用户需求后, 分解完系统后, 技术选型是非常重要的环节, 提出各个方向, 再进行评估. 不过, 很多人都以为架构师是有决定权的, 其实不是, 架构师没有拍版的权力, 决定由项目经理来做.
架构师在技术选型阶段会提供参考信息给项目经理, 项目经理再从预算, 进度, 人力, 资源等各方面情况来权衡, 最终确认.
4 制定技术规格说明
如前文调查显示, 架构师在项目开发过程中是「灵魂人物」, 并且要具备协调组织能力和懂得人员分工.
在制定技术规格说明阶段, 架构师要协调起所有的开发人员, 架构师通常会用技术规格说明书与开发人员保持沟通, 让开发人员能从各个视角去观测, 理解他们负责的模块或者子系统, 确保开发人员能够按照架构意图实现各项功能.
在了解架构师的职责后, 再来看看架构师该具备什么能力才能成为一家公司中的「灵魂人物」. 我们先来看一下调查数据 --
37% 的受访人认为架构师的设计能力最重要, 技术实力重要度排在第二占了 24%, 沟通能力则排在第三, 占比 14%, 管理能力在大多数架构师眼中并不是最重要的, 仅占了 7%. 此次, 我们详细分析排在前三的能力.
技术能力
技术能力, 不用置疑肯定是最重要的. 技术能力弱的架构不是一个好架构. 所以, 你需要知道所有主流技术的基本原理, 应用场景, 及快速解决问题的能力.
所以, 架构师必须要有见识, 所需知识面肯定是要不断拓展的. 你需要清楚在什么样的场景用什么样的技术比较合适, 并知道可能存在什么样的风险. 来了需求, 你脑袋是空的, 不知道用什么技术这是最可怕的.
架构设计能力
这个可以表现为抽象能力, 整体规划能力, 及设计能力. 你需要照在业务的角度进行系统分解, 技术选型, 架构搭建, 以及规范制定. 架构出来了至少可以满足近几年的发展, 或者可以很方便对现有架构进行扩容.
有人说架构不需要懂业务, 我面试过的就有明确表示不做业务架构. 当然有方面的架构师, 如中间件架构师, 运维基础设施架构师等. 但一般的后端架构师都是需要了解业务, 不理解业务你如果进行系统分解, 服务划分, 及根据不同业务作出不同的架构?
技术都是为业务服务的, 不站在业务的角度设计架构, 那架构就是空谈.
沟通能力
这个看起来不是最重要的, 其实也非常重要. 作为一个优秀的架构师, 你需要清楚的知道客户的需求, 需要不断和需求人员进行沟通, 以达到客户真正的目的.
不论是不是架构师, 任何一个职场人, 提高自己的沟通表达能力无疑是不可或缺的. 有一句话怎么说的, 领导就喜欢拍马屁的. 做领导的大多不是技术特别牛的, 但沟通能力肯定是一流的.
这 3 点肯定是架构师的核心, 但不一定是每个架构师的标准.
国内做程序员, 30 岁左右就得转型, 不然就会被嫌弃. 不管是不是如此, 大环境就是这样, 程序员你能干到 35 已见天花板.
所以, 程序员必须转型, 管理职位数量有限, 对性格, 沟通表达能力有要求. 所以转型架构师是首选, 大家一起加油吧! 希望下面导图可以对你们有帮助.
一, 架构筑基主题解析: 深入内核, 直击故障, 拒绝懵圈
大家都知道, 性能一直是让程序员比较头疼的问题. 当系统架构变得复杂而庞大之后, 性能方面就会下降, 如果想成为一名优秀的架构师, 性能优化就是你必须思考的问题.
所以性能优化专题从 JVM 底层原理到内存优化再到各个中间件的性能调优, 比如 Tomcat 调优, MySQL 调优等, 让你洞悉性能本质, 全面认识性能优化, 不再只是旁观者.
二, 开源框架源码解析: 站在巨人肩膀, 收获不一样的视野
这张图详细介绍了源码中所用到的经典设计思想及常用设计模式, 先打好内功基础, 了解大牛是如何写代码的, 从而吸收大牛的代码功力.
结合 Spring5 和 MyBatis 源码, 带你理解作者框架思维, 帮助大家寻找分析源码的切入点, 在思想上来一次巨大的升华.
三, 高性能架构专题: 成为互联网架构师, 你要的都在这里
有了大牛的代码功底之后, 接下来可以更好地学习分布式架构技术.
透彻理解分布式架构的好处和优点必然性, 适应市场需求, 能够去找一些更大的平台发展, 提升自己的综合技术能力和薪资.
了解从传统架构到分布式架构演变过程所带来的技术变革, 将理论和实战相结合, 透彻理解分布式架构及其解决方案.
从分布式架构原理, 到分布式架构策略, 再到分布式架构中间件, 最后在加上分布式架构实战, 让程序员可以在技术深度和技术广度上得到飞跃的提升, 成为互联网行业所需要的 T 型人才.
四, 微服务架构: 你还不知道微服务, 怎么加薪升职
随着业务的发展, 代码量的膨胀和团队成员的增加, 传统单体式架构的弊端越来越凸显, 严重制约了业务的快速创新和敏捷交付. 为了解决传统单体架构面临的挑战, 先后演进出了 SOA 服务化架构, RPC 框架, 分布式服务框架, 最后就是当今非常流行的微服务架构. 微服务化架构并非银弹, 它的实施本身就会面临很多陷阱和挑战, 涉及到设计, 开发, 测试, 部署, 运行和运维等各个方面, 一旦使用不当, 则会导致整个微服务架构改造的效果大打折扣, 甚至失败.
五, 商城实战项目: 撸起袖子干实事, 项目经验的故事
电商项目目的是把所学的分布式, 微服务, 性能调优等知识运用起来, 只有在项目中你才能巩固知识, 提升自己. 实践电商项目会利用云服务器搭建真实的开发和部署环境, 让你从零到项目实战, 体验真实的企业级项目开发过程, 让你具备独立开发和搭建分布架构系统的能力.
六, 团队协作专题: 让你的团队开发效率提高十倍!
一名优秀的架构师必须有适合自己的兵器, 也就是工欲善其事必先利其器, 不管是小白, 还是资深开发, 都需要先选择好的工具. 工程化专题的学习能帮助你和团队提升开发效率, 让自己有更多时间来思考.
Git: 可以更好地管理你和你团队的代码.
Maven: 可以更好地管理 jar 包和项目的构建等.
Jenkins: 可以更好地持续编译, 集成, 发布你的项目.
Sonar: 一个开源的代码质量分析平台, 便于管理代码的质量, 可检查出项目代码的漏洞和潜在的逻辑问题 (提升代码的质量, 更加高效地提升开发效率).
来源: http://www.jianshu.com/p/2124e633a57d