作为一个后端程序员,如果只想着只要业务代码写好了,功能实现了,项目上线之后就万事大吉了,后面的不需要关心运维,那你就大错特错了。资深后端程序员不仅要能高效开发,更要能高效运维,遇到线上问题能快速响应并定位修复。后端程序员无论在什么公司,基本都是以下三种情况之一:开发加独立运维:公司没有专门的项目运维人员,后端程序员既做开发以及操作和维护;开发加协助运维:公司有专职的项目运维人员,后台程序员专注开发,协助日常运维;开发加自助运维:公司有专门的自助运维工具,后台程序员也兼顾开发和项目运维;开发加独立运维。这三种情况一般对应不同的互联网公司。第一类是小型创业公司。上线完全由后端程序员自己完成,包括后期服务的运维。往往创业公司相关的工具和系统都不是特别完善,也没有发布集成工具。基本上都是人工人工复制的。将war包或jar上传到服务器,手动运维。鉴于这种情况,作为后端程序员,如果不懂Linux命令,基本无法胜任自己的工作。虽然你可能知道常用的简单命令,但是当你真正遇到线上问题的时候,时间往往就是金钱,如果能第一时间定位到问题,就可以尽快止血,减少损失,所以越熟悉Linux命令越好,越掌握越好。另外,在这种情况下,如果业务能够快速增长,还是会很磨练的,因为随着业务的增长,对项目开发和运维的要求会越来越高,所以对后端程序员的要求也会增加。身高越高,彼此的成长就越好。但另一方面,如果没有业务增长,线上环境会比较单一,导致个人成长相对缓慢。但无论如何,只有掌握了应该掌握的知识,才能应对复杂的情况。第二个开发加协助运维的案例,对应的是一家中型互联网公司。业务发展到一定程度后,公司的工具和系统会比较完善。划分会更清晰一点,但是职位划分明确并不意味着开发者不需要关心服务的运维。这时候对开发人员的要求只会越来越高,运维方面的知识也是必不可少的。自然,Linux的知识也必须掌握。很多时候,在项目开发之初,需要考虑如何设计架构,如何部署服务,如何分配资源。毕竟这个时候线上业务的稳定性才是最重要的。遇到的情况和应对策略。虽然说是辅助运维,但毕竟开发人员是最熟悉系统的人,尤其是现在的微服务架构,服务很多,每个服务前后的调用关系,集群资源情况,日志存储情况特别多,如果开发者对线上微服务的部署不清楚,遇到问题时就很难辅助运维人员定位和处理问题。虽然说开发者很多时候可能不需要去手机端敲命令,但是如果不了解Linux服务器的相关知识和常用命令,基本上是不合格的。最后一种开发加自助运维的情况一般出现在一些大型互联网公司。由于大型互联网公司开发人员较多,无法配备很多运维人员,需要开发人员自己进行项目服务运维。同时,大厂商的自助运维工具会特别多和全面,而且服务器一般都是虚拟化的,都是用集成工具实现完全自助运维,还有无人化运维。既然是自助运维,开发者必须了解服务器的相关知识和Linux的常用命令操作。其实这就是为什么说大厂面试是为了工作做火箭和拧螺丝,虽然平时工作用的不多,但在关键时刻,你仍然要能够坚持下去。不知道这里有没有朋友在面试大厂的时候被问到服务运维相关的知识,但是因为不太了解而被拒绝了。很多小伙伴可能会有疑问。小公司自主运维和大厂自助运维有什么区别?两者之间的区别就像是原始社会和现代社会。小公司的自助运维完全依赖人工,效率和安全性基本无从谈起;但大厂自助运维,保证了效率和安全。不用说,以工具的高效性,安全性和便捷性来说,一般的危险指令是无法在大厂商的服务器上执行的,很大程度上避免了删库跑路的情况。当然,这里说的只是方法上的区别,具体的故障排除方法和命令使用技巧大家是一样的。毕竟各大厂商的服务也是跑在linux-like上的,所以linux命令还是完全适用的。总结总的来说,作为后端程序员,无论是在小公司还是大公司,除了会写后端代码外,还需要掌握常用的Linux命令和服务器相关的知识,才能更好的发展。好了,废话不多说,下面是福利时间。