程序人生--架构师
来源:互联网 发布:大连电视台直播软件 编辑:程序博客网 时间:2024/06/05 10:28
架构师是个什么样的角色?是个很重要的角色吗?能给公司带来的生产力是什么?都做些什么日常工作?
架构师和开发经理/高级工程师有不同吗?
本篇博客,对这些问题,提出一些自己的思考和理解。
参考: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也好,别整太多,别整天换着玩儿,来个领导就换个,对于业务部门不太友好。
云:要什么配置的机器,按需申请。
自动构建:定期看看代码质量吧。
- 程序人生--架构师
- 人生架构,架构人生
- 程序人生,人生程序
- 程序,人生,人生,程序。。。
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- 程序人生
- mysql从零开始(三)数据类型
- Android必知必会--GreenDao缓存
- OC 字符串操作整理
- 阿里云服务器部署网站
- [看书日记20160107]安卓的线程和线程池, bitmap的加载和cache
- 程序人生--架构师
- swift基础(一)字符串处理
- maven中使用dom4j解析、生成XML的简易方法
- Could not find action or result常见情况分析
- 程序员要学习那些知识
- 我的面试经
- 序列求和
- socket 设置阻塞超时
- PyCharm 安装 NumPy,SciPy 等科学计算包 (Anaconda)for mac OS X