作为后端程序员 Linux 应该掌握到什么程度?

作为后端程序员如果你只觉得只要把业务代码写完,功能实现,项目上线后就万事大吉,后期的运维完全不用关心那你就大错特错了。高级的后端程序员不仅要能高效的开发,还要会高效的运维,在遇到线上问题的时候能快速响应并定位修复。

后端程序员不管在什么公司,基本上都是会以下三种情况中的一种:

  1. 开发加自主运维:公司没有专门的项目运维人员,后端程序员既做开发,又做运维;
  2. 开发加协助运维:公司有专门的项目运维人员,后端程序员以开发为主,日常协助运维;
  3. 开发加自助运维:公司有专门的自助运维工具,后端程序员兼顾开发和项目运维;

开发加自主运维

这三种情况一般也对应了不同的互联网公司,第一种是创业型的小公司,在创业型的小公司没有专业的运维人员,所以项目的开发上线完全由后端程序员自己上手,也包括后期服务的运维,往往创业型公司相关的工具和制度都不会特别完善,也不会有什么发布集成工具,基本上都是人为的手动拷贝 war 包或者 jar 上传到服务器上面,进行完全人工运维。

针对这种情况如果作为一个后端程序员不会 Linux 命令那基本上是无法胜任工作的,虽说常用的简单的命令大家可能都知道,但是当真正遇到线上问题的时候,往往时间就是金钱,能最早定位到问题就能最快的进行止血降低损失,所以对于 Linux 命令是越熟悉越好,掌握的越多越好。

另外往往在这种情况如果业务能快速增长还是会很锻炼人的,因为随着业务的增长,对项目开发和运维的要求都会越来越高,所以对后端程序员的要求也越来越高,促进了彼此的成长。但是反过来,如果业务没什么增长的话,线上的环境就会相对简单,导致个人的成长就会相对较慢。但是不管怎么样,掌握好该掌握的知识,才能应对复杂的情况。

开发加协助运维

第二种情况对应中型的互联网公司,当业务增长的一定的程度过后,公司的工具和制度就会相对完善,这个时候往往会要求术业有专攻,开发岗位和运维岗位分的就稍微会清楚一点,但是岗位分的清楚不代表开发人员就不需要关心服务的运维情况。

这个时候对开发人员的要求也只会越来越高,运维知识也是少不了的,对于 Linux 的知识自然也是要掌握的。很多时候项目开发之初就要考虑到架构要如何设计,服务要如何部署,资源要如何分配等等问题,毕竟这个时候线上业务的稳定是最重要的,项目开发之处就要考虑到可能遇到的各种情况以及应对策略。

虽然说是协助运维,但是毕竟开发人员才是对系统最熟悉的人, 特别是当下微服务架构,服务众多,每个服务之前的前后调用关系,集群资源情况,日志存储情况都特别的繁多,如果开发人员对线上微服务的部署不清楚,在遇到问题的时候就很难协助运维人员定位和处理。

虽然说很多时候可能不需要开发人员上机动手敲命令,但是如果不知道 Linux 服务器的相关知识和常用的命令,那基本上也是不合格的。

开发加自助运维

最后一种情况一般会出现在一些互联网大厂,因为互联网大厂开发人员众多,没办法配对很多的运维人员,所以要求开发人员自助的进行项目服务的运维。同时大厂的自助运维工具会特别的多和全,服务器一般也是虚拟化的,都是通过集成工具来实现完全自助的运维,以及无人化运维。

既然是自助运维,那开发人员就必须要了解服务器的相关知识和 Linux 的常用命令操作,其实这也是为什么都说大厂面试造火箭,工作拧螺丝,虽然平常的工作中用到的不多,但是关键时刻还是要能上的。

不知道看到这里有没有小伙伴遇到过面试大厂的时候,被问题服务运维相关的知识,但是因为自己并不了解被拒了。

可能会有很多小伙伴有疑问,那在小公司自主运维跟在大厂自助运维有什么区别?这两者的区别就像是原始社会和现代社会一样。在小公司自主运维,完全靠人工,基本上谈不上效率和安全;但是在大厂的自助运维,效率和安全都是有保障的。有了工具效率自然不用说,关于安全方便,一般危险的命令在大厂服务器上面是执行不了了,很大程度上避免了删库跑路的情况。

当然这里说的只是方式的差别,但是对应具体的问题排查方式和命令使用技巧,大家都是一样的,毕竟大厂的服务也是跑在类 Linux 上的,所以 Linux 的命令也还是完全适用的。

总结

总的来说就是,作为一个后端程序员,不管是在小公司还是大公司,除了会写后端代码之外,我们还需要掌握 Linux 的常用命令和服务器的相关知识,才能更好的发展。好了话不多说,下面是福利时间。

Java Geek Tech wechat
欢迎订阅 Java 极客技术,这里分享关于 Java 的一切。