分享

程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员

 美好生活谷 2019-05-18

谁开发

开发很好理解,程序员的主要本质工作,通过代码的方式去实现业务需求。开发过程中也是很有讲究的,选用什么语言,java、python、还是go,需要根据实际的情况,选择一个最适合的。比如一个团队5个人,只有1个人会使用go,5个人都会java,如果go和java都能实现业务需求,这时候使用java开发会是一个比较好的选择,因为使用go,维护成本会比较高,需要其他成员去学习相关语言。

语言确定好之后,需要对业务分析和设计,又可以分为数据驱动设计和领域驱动设计,数据驱动设计是指,根据具体的功能,第一想到的是如何设计表结构,要存哪些数据,有哪些model类,每个model类中有很多的set、get方法,大多数程序员采用的是数据驱动的设计方式。另外一种领域驱动设计,需要划分领域,确定限界上下文、以及他们之间的关系,确定哪些是聚合根、哪些是值对象等等,也就是所谓的战略和战术的设计。

设计好之后,下一个步骤就是开发阶段了,开发阶段也面临着不同的选择,如何存储数据,mysql、redis、mongo等等。mysql一般适合存储结构性相对稳定的数据,redis适合那些经常被访问又不经常变化的数据,因为数据存放内存中,读取速度快,有助于性能的提升。mongo适合数据结构复杂,如商品属性,每个商品的属性个数是不一样的。写代码过程中,可能还需要使用一些设计模式,提高代码的复用性、扩展性。同时需要遵循一些原则,如开闭原则、单一职责原则等。代码编写过程中也需要遵循一些代码规范,包名小写,变量名使用名词,方法名使用动词等等,推荐使用阿里的一个代码规范插件。如果不符合规范会给出响应的提示,点击更多还给出了相应的示例。

开发过程中,经常涉及一个博弈的过程,一方面是项目进度,一方面是代码质量。以前我觉得项目进度的重要程度高于代码质量,随着时间的推移,系统越来越复杂,代码质量的问题越来越明显,可以通过代码review来改善这个问题,代码review有以下好处。杜绝不好的代码,将好的代码“发扬光大”,提高团队的整体水平,改善代码水平参差不齐的情况,最重要的是降低维护成本。当然也有不好的地方,code review比较耗时,但我相信磨刀不误砍柴工。

以上只是开发的一小部分,还有很多需要注意的地方,需要合理的做出取舍。

谁运行

大部分公司都有运维,开发人员开发完程序之后,就通过邮件或者钉钉等其他方式,通知运维,需要部署哪个应用服务,开发人员不需要关心发布部署的具体细节。其实作为开发人员有必要了解一下运维部署相关的工作,应用程序如何部署,是通过tomcat还是jar的方式启动,如果使用tomcat启动,如何设置参数。这些都是手动部署的方式,还有一些自动化的部署方式,通过jenkins+脚本,jenkins提供了很多很棒的功能,比如jenkins可以配合git,只要有代码有push,通过webhook自动触发jenkins的部署。

kubenets和docker部署,让应用部署更便捷,但是相对来说比较复杂,需要安装相应的环境,还需要编写对应的docker file,门槛相对比较高。但这个肯定是趋势,随着技术的进步,不断的完善,以后可能会越来越简单,就像人工智能一样,现在也越来越多的机器学习相关的框架,对算法内部实现进行了封装,使用算法,就像方法调用一样简单,降低了门槛。

谁监控

程序开发完、部署好之后,还需要对应用进行监控,很大部分程序员会觉得监控是运维的工作,开发人员不需要关心监控。其实开发、部署只是开始,监控是至关重要的部分,监控能帮助我们发现问题,定位问题,改善问题。

监控的内容,主要分为机器的监控,调用链监控、jvm的监控、业务指标的监控。机器监控主要包括cpu、内存、磁盘等。调用链监控,在微服务的时代,调用链监控是非常重要的,通过分析调用链可以知道服务之间的调用关系,方便定位是否存在互相调用,或者调用不合理的情况,一般原则是下游依赖上游的接口,上游不能直接调用下游的方法。调用链还有一个最大的好处是能分析每个接口方法,调用了哪些方法,每个方法消耗了多长时间,方便对接口进行优化。接口优化的原则最好找那些经常调用,并且调用时间比较长的方法进行优化,这样的性价比最高。性能优化是一个长期的过程,不断的优化,给用户更好的体验。

程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员
程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员

jvm监控,主要监控应用程序,堆栈、垃圾回收等情况,一个应用程序如果经常发生gc,因为“stop the world”导致性能的损耗,遇到这种情况需要排查定位问题,确定是YGC还是FGC,调整jvm参数,改善虚拟机的垃圾回收垃圾回收,提高应用的性能。

程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员
程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员

业务指标的监控,比如说接口请求次数,pv、uv等业务相关指标,可以通过相应的埋码,通过一些时间序列工具,如prometheus,进行收集和处理。关于prometheus的使用后续文章会做相应的讲解,这里先不做展开。

程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员
程序员生存之道,谁开发谁运行谁监控,不懂监控不是一个好程序员

推荐阅读

java设计模式之访问者模式,“见人说人话,见鬼说鬼话”

java设计模式之原型模式,本故事纯属虚构,如有雷同,纯属巧合

java设计模式之桥接模式,策略模式旗舰版,世界没有免费的午餐

java设计模式之代理模式,看我72变

java设计模式之构建模式,私人订制自己的创意

java设计模式之状态模式,策略模式的孪生兄弟

java设计模式之迭代器模式,顾客永远的上帝

java设计模式之模板模式,站在巨人的肩膀上成功

java设计模式之适配器模式,大丈夫能屈能伸

Head First 设计模式之命令模式,各司其职提高效率

Head First 设计模式之装饰器模式,因为参与,所以认同

Head First 设计模式之单例模式,每个人都是唯一

Head First 设计模式之观察者模式,你我都是发布者和订阅者

Head first 设计模式之策略模式,来源于生活,用之于生活

做互联网行业薪资高是很正常的,多年编程经验,今年1月整理了一批2019年最新WEB前端教学视频,不论是零基础想要学习前端还是学完在工作想要提升自己,这些资料都会给你带来帮助,从HTML到各种框架,帮助所有想要学好前端的同学,学习规划、学习路线、学习资料、问题解答。只要关注我,后台私信我【前端】两个字,即可免费获取,学习不怕从零开始,就怕从不开始。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多