您的位置:首页 > 运维架构 > 网站架构

程序人生--架构师

2016-01-12 23:59 501 查看
架构师是个什么样的角色?是个很重要的角色吗?能给公司带来的生产力是什么?都做些什么日常工作?

架构师和开发经理/高级工程师有不同吗?

本篇博客,对这些问题,提出一些自己的思考和理解。

参考:http://www.cnblogs.com/yuxc/p/3578926.html

架构师是什么

JD层面,对架构师有定义和描述,说的比较高大上,我从个人理解的角度说一下,俗一点的说。

架构师有不同的境界,大中小公司都有架构师,即使不叫“架构师”这个名字。

1、在小公司里面,定义一些编程规范,选择并培训同事一些常用框架,就可以了;

2、在中型公司,特别是二流互联网公司,都是有“架构师”角色的,做的也是最符合架构师职责的事,基础框架选择,基础组件研发,配合DBA/运维/开发经理做技术评估,就基础技术组织OpenTalk,大致如此;

3、在一流互联网公司,不再有专职“架构师”角色了,其职责被分解了,比如基础组件组、服务治理组、工程效率组、运维研发组、信息安全组等等。

架构师的力量源泉

首先,架构师是称职的:个人有技术广度和深度,能理解业务就更好了;提出的架构层面技术靠谱,实施起来可靠。

然后,架构的推行 ,还是需要很多支持的:有文化层面的认同是最好的;其次是权力层面的支持;如果两样都没有,只靠架构组推行,就比较费劲。

推行之后的宣讲、培训也很重要,要技术伙伴们认识到好,认识到确实是一种生产力,能避免各业务组重复造轮子,确实是一把快刀。

架构师的技术基础(java)

我理解的Java架构师,需要的基本功有这些:

1、思路清楚,逻辑准确

2、理解架构师的职责,特别是在一流互连网公司见识过被分解后的各种基础组职责,这对于架构理解提升众多;

3、优秀的Java基本功,代码能力卓越,看过JDK源码;JVM调优;

4、熟悉常用开源框架,比如:Spring、Dubbo、Thrift、一种MQ、一种ORM;

5、Linux熟练,手写常用Shell;利用常用命令检测问题;

6、网络知识,比如TCP/HTTP;网络实操,比如抓包分析;

架构师干什么

WIKI和Git

这不是架构师的职责,我只是觉得在公司内部用WIKI管理项目、分享知识;相比Word,更Open,更利于管理和分享,更有利于保持更新,现在就职的互联网公司也用它。

WIKI软件,可以就选:http://www.unlimax.com/confluence.html

关于Git的使用,也是同理,代码不重要,重要的代码后面创建代码的人。http://blog.csdn.net/puma_dong/article/details/37915185 。

关于Git仓库,用Stash也可以:http://www.unlimax.com/stash.html

Open Talk

这也不能说是架构师的主要工作,但是组织“Open Talk”,对于研发团队的分享、提升,对于技术产品的推广,有重大意义。所以我把这个职能提前。

运维研发

这也还不是架构师的核心工作,运维系统,对于公司所有支撑系统、服务器的监控,对于正常运转以及及时发现问题,太重要了。

运维研发,行政上有的可能划归运维,但是和架构很相关。

传统的运维,是一套软件,服务器上的Agent负责收集,Server负责展示和报警,如果需要监控更多内容(比如JVM、连接池情况等等),就需要二次开发。

并且,见过那么多的开发工程师,不懂得监控的重要,甚至没听说过这些监控软件,所以,架构部门参与,并和运维部门一起,把相关的监控软件培训、推广、二次开发,越显得重要。

运维监控的后起之秀:https://laiwei.gitbooks.io/open-falcon/content/zh/index.html 。

Nginx在线配置也是很酷的。

基础组件

这是架构师的核心工作之一。开发最基础的核心组件,这些基础组件,完成的某种重要的单一功能。比如:

1、Monitor系统:各个系统都可以依赖这个Jar包,这个Jar会自动运行,收集各种系统参数,JVM,OS,DB,以及各种业务自定义监控项,上报到运维监控系统(Falcon,Zabbix,etc),通过一个统一的监控界面,就可以随时监控系统各个时刻的运行情况,开发这个基础组件,可以参考这里:https://github.com/javamelody/javamelody 。

2、Trace系统:接口的调用链条,都经过了那些节点,耗时怎么样,瓶颈在哪里,就是这个Trace系统的作用了,这个东西我还没研究过,不知道是如何搞的 。

3、配置中心:集中配置管理,这个系统开发容易,有开源的参考,也有使用Zookeeper的实现稳中,关键是易用,比如间隔Pull更新,消息监听更新,各种语言的客户端。

4、单点登录:所有后台系统都需要接入的单点登录系统,我所了解的是Jasig CAS,这个系统功能完善,但是比较重,也可以寻求更轻量的单点登录实现。

5、权限管理:整个公司统一的员工管理和权限管理,这个系统听起来功能简单,但是由于各个系统一般都有权限管理了,控制粒度,细节都可能不同,所以,要想做好也不容易,更多的收集需求吧。

服务治理

这也是架构工程师的核心工作。

每个公司都会选择自己的一套服务框架,并在架构师到达公司之前已经在稳定运行了,这个时候架构师更多的是做二次开发。

开源的服务框架也是蛮多的,DUBBO、THRIFT(有的公司把这个产品二次开发了,做的几乎和DUBBO一样好用)。

工程效率

其实主要说的就是一键发版系统了。

一个系统,8台虚机负载,也很正常,手工发,也是蛮累的,也容器出错。通过Web界面一键发版,对于冲程效率,很是重要。

发版系统的建设需要什么呢?简介如下:

1、运维层面的标准约定和配置,比如,何处打包,怎么发布,值守程序,目录结构;

2、自动化的Shell脚本,比如,Pull代码及打包Shell(Git、Maven相关),文件上传(rsync),部署Shell(优雅关闭目标应用;部署;备份;启动),值守工具(Daemon Tools);

3、管理界面,定义系统支持的环境变量(比如 branch、profile),以及每个发布项相关的参数;

规范

编码规范,一页纸就够了吧,更多的是个品味风格的问题;也可以通过SonarQube之类工具进行一些约束。

其他相关

数据组:Redis集群,Hadoop集群,Storm集群等,需要时都可以按需申请。

消息队列:RabbitMQ也好,Kafka也好,别整太多,别整天换着玩儿,来个领导就换个,对于业务部门不太友好。

云:要什么配置的机器,按需申请。

自动构建:定期看看代码质量吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  程序人生 架构师