HTML5技术

奶爸程序员的“育儿”心得 - 往边界

字号+ 作者:H5之家 来源:H5之家 2017-02-07 09:01 我要评论( )

自我介绍一下,本人以前是.net程序员,去年下半年负责把项目从.net转到java,并且有跨机房迁移,亿级访问量,app服务端项目。 自我吐槽一下,工作了8年了,没有成为架构师,也没有进入管理层,没有成为技术大师,也没能成为分享大师。一直在做业务,并在这条

自我介绍一下,本人以前是.net程序员,去年下半年负责把项目从.net转到java,并且有跨机房迁移,亿级访问量,app服务端项目。

自我吐槽一下,工作了8年了,没有成为架构师,也没有进入管理层,没有成为技术大师,也没能成为分享大师。一直在做业务,并在这条路上越走越远。有的时候觉得很尴尬,但又有的时候觉得还蛮适合自己。
过年之前,老婆生了一个小公举。宝宝饿了,“老婆快来喂奶!”,宝宝又饿了,“老婆快来喂奶!”,宝宝睡醒了又饿了,“老婆快来喂奶!”……老婆说:“我感觉我就是头奶牛”!作为一名“奶爸”,感触颇为深刻!
自己负责的项目就像自己的孩子,孩子出事了,大家首先想到的就是这个奶爸。奶爸上阵(常常半夜爬起来),该换尿布换尿布(服务器故障),该喂奶就喂奶(bug)。如果生病了,就喂喂药,吃药不管用,就外面请大夫(疑难杂症,搞不定,请别人搞定也是搞定)。宝宝的奶粉如果出了问题,恨不得拿刀宰了那个奸商(调用了别人的服务,服务挂了,影响到了自己)。宝宝吃饱喝足,安静睡了,奶爸也可以安心睡了!

-------------------------------------------------------------------------------
下面开始干货,记录一下自己的“育儿”心得:
一. 技术选型
开发语言:java,go,php,nodejs
如开头所说,本人之前是C#程序员,C#的语法精妙,逆天的ide,.net版本更新较快,快到我都不记得最新的版本号了。那么多新特性,如果服务器上安装的始终都是.net3.5 对我们来说又有什么用呢。
开始是很抵触java的,断断续续学了好多次也没投入使用,这次必须要上了。不得不说,这么多年了,java一直在增长,稳定,成熟,几乎能解决所有问题,而且性能也不差。这大半年下来,java的水真的好深,异步、并行等等,还没接触过的好多好多。
go的好处就不说了,在学习,如果喜欢又觉得能拿捏的住,就上吧(哈,肯定不会像说的那么轻松)。
nodejs做前端太方便,也有人用来做服务端接口层。
php做前端页面,就像服务端用java一样,万金油,成熟,稳定,用的人多,资料也多。
总之一句话,没有最好的,只有最适合的!
选java是因为 我们后端的很多微服务也是用java开发的,方便调用。还有就是,不用java还能用啥。
存储:mysql, mongodb, redis
当分库都不能解决问题的时候,分表就格外重要,有一种无限扩展的感觉。之前用的oracle,只分库,没有分表,hold不住了。
存储的类型还是尽量越少越好,redis做缓存一般是绕不过去,都要用的。
团队里有很多人排斥mongodb,就不说具体原因了,redis能搞定的事情,就不要用mongodb了。
还是那句话,没有最好,只有适合,把相应的数据放到最适合的存储里。
mq: rabbitmq,activemq
你肯定会用到mq的,即使现在不会,以后肯定会的。
java框架:spring mvc
用的人多,成熟,坑都被大家踩过了,遇到问题好查资料好解决。
ibatis和struts在我们的项目中没有用到。

二. 源代码管理工具
语言选好了,框架选好了,要开始写代码了,问题来了,写好的代码用什么管理?
Git! SVN!
Git的分支真的可以解决太多问题,很强大!
SVN的tag也不错,用来做发布不错。

不管用什么工具,一定要做好规范,比如git的分支命名。时间长了分支越来越多,如果不规范一下,会乱的一团糟。
再比如分支的合并,应该怎么合并,不应该怎么合并。
分支的流程,去哪个分支提交测试,去哪个分支发布等等。
分支合并的冲突解决,一定要事先沟通好,不然代码丢失,找都不好找。

三. 开工
1. 搭架子
这里最好能把监控做起来,监控太重要了,一开始就要考虑清楚,不然后面加会痛苦万分。
如果打算用hystrix之类的框架,一开始也要搞清楚实现方式,后期实现太痛苦。
2. 代码规范
架构师一开始都会想的很完美,如果不做规范,来来回回人多了,里面就乱了。
当然,即使你做了规范,也会乱的,只是会乱的小点。
3. 一些基础代码
比如:打日志,http请求,怎么加监控,怎么rpc调用,接口在线查询文档等。
4. 调试
代码写完了怎么运行,怎么调试,本地是用jetty还是tomcat,怎么发布测试服务器,这些都要根据实际情况调整了。
5. 开发工具
现在说好像有点晚了,对于java,有的人喜欢eclipse,有的人喜欢idea。再比如git的管理工具,有人喜欢sourcetree, 有人喜欢敲命令,就比较难统一了。
6. 代码审查
没事看看同事写的代码,代码放的位置对不对,有没有重复代码,不要把你的架子搞乱了。
Findbugs,这个插件实在太有用了,可以发现很多低级、没有预料到的问题,比如可能存在的空引用,String.format格式化问题等等。
7. 团队沟通
人多事情就会来,肯定会有人遇到奇奇怪怪的问题,这个时候就要一起沟通解决了。
底层框架的问题,要赶快修复优化。
流程问题,优化流程规范并通知团队。
如果能有个wiki,论坛之类的把大家踩过的坑记一下就更好了。
定期开例会同步进步,同步问题。

四. 测试
代码写完了,需要有个强大的测试团队来测试功能了。
我们的项目是接口,对外输出json数据,如果没有自动化比对工具,全靠肉眼真的要疯掉。
字段缺失,大小写问题,格式问题,各种问题都会一一暴漏,是时候再优化规范了。
1. 自动化测试
这个看测试实力了,本人也不太懂,有个测试大牛是多么的重要。
2. 接口文档
开发在做接口的时候就要把文档更新好,修改代码及时更新文档。
当然写文档太烦了,java里的注解可以搞这些,然后自动生成在线文档。
3. 压力测试,并发测试等
做的接口能否支撑起业务,怎么评估,就要看压测结果。不达标?优化!

五. 上线
这个时候要想好怎么规范发布流程了,如果公司有团队帮你做自动化集成发布就太赞了,如果没有就只能自己撸了。
什么jenkins,打包脚本,就自己搞起来吧。
什么,代码服务器和上线服务器不在一个机房里? 没关系,svn,git帮你搞定。tomcat也有上传war包的功能。
1. 申请服务器
根据访问量评估服务器数量。
要不要拆分接口,比如abc接口只访问A服务器,def接口只访问B服务器,nginx接入层搞起来。
2. 发布
发布流程,发布系统。
是否需要灰度发布?
能否快速回滚。
配置管理系统搞起来。
3. 监控
奶爸程序员最重要的工作之一,就是看监控。
什么调用量,高峰调用量,成功率,失败率,超时率,平均耗时等等。
最好能在线查看接口调用返回的code,可以快速定位问题。
除了app调用你的服务的监控,还有你调用别人服务的监控。一个是发现自己的问题,一个是发现别人的问题,撕逼和被撕逼,都要拿出证据。
失败率,超时率,平均耗时这些很有必要,也是奶爸程序员的kpi。
如果能有cpu,内存,网卡使用率等的监控更好了。
再进一步,如果有jvm的监控那就更棒了!
监控都做了,报警必须有,短信、邮件,你懂的!
4. 日志
奶爸程序员最重要的工作之二,甚至比看监控还重要。
监控有延时,有时候并不能及时发现问题,这个时候看错误日志就很重要。
系统是否正常运行,就是通过日志来判断。
错误日志会帮你发现问题,甚至早于用户发现问题解决问题。
奶爸程序员还要看日志是不是打多了,打少了,打错地方了,重要业务日志有没有。这是个长期的过程,根据情况逐步调整。
观察线上服务器的日志,是奶爸的重中之重,先于用户发现问题,先于客服事件解决问题,保驾护航,简直就是爹妈不容易啊!
所以,辣么多服务器,你最好有个日志收纳系统,在线查看筛选系统。
5. 稳定保障
nginx接入层,在tomcat前面用nginx做接入层,用nginx做分发,对服务器做分组,周边服务挂了,不能影响核心业务。
nginx还有个好处还是做转发,比如,你有个a.site.com站点要改版,老版本的a.site.com域名不能动,新版本的在别的服务器上,a.site.com域名也必须用,那么nginx接入层的作用就显现了,把新改版的页面全部指向新站,其他的回老站,搞定。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 30岁后的程序员都到哪里去了 - 追梦子

    30岁后的程序员都到哪里去了 - 追梦子

    2017-01-16 14:01

  • 2016年终总结:从程序员到项目经理的转身 - 麻雀小妖

    2016年终总结:从程序员到项目经理的转身 - 麻雀小妖

    2016-12-23 16:00

  • 程序员的又一春,微信小程序带来的一个赚钱机遇 - 腾讯攻城师lee

    程序员的又一春,微信小程序带来的一个赚钱机遇 - 腾讯攻城师lee

    2016-12-14 10:01

  • 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 左潇龙

    万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 左潇龙

    2016-10-31 16:00

网友点评
i