软件工程已死?软件研发与运维开发的区别比较 - StackPulse

21-02-21 banq

程序员在规划自己的职业道路时必须回答的第一个关键问题是他们想成为软件工程师(SWE)还是站点可靠性工程师(SRE)。

这个问题在今天仍然很重要,但并不像从前那样重要。SWE和SRE之间的界线越来越模糊。这两个角色仍然是彼此不同的,但是围绕它们的利益已经演变,因为SWE接受以前仅属于SRE的工具和工作流变得更加容易。

考虑到这一现实,这是当今SWE和SRE角色之间异同的入门。

 

什么是SWE?

SWE是专门从事软件开发的人。SWE的主要任务是设计和实现代码。

SWE倾向于关注规模有限且从一开始就具有明确范围的问题。例如,SWE可能会负责在应用程序中实现特定的新功能。这是一个相对简单的任务。尽管在设计和实现功能方面发挥了很大的创造力,但这并不是说SWE可决定整个应用程序的开发和部署过程。

 

什么是SRE?

另一方面,SRE是一个角色,至少专注于变革性角色。SRE负责寻找在软件环境中增加效率、可伸缩性和可靠性的方法。

在某些方面,SRE角色与传统IT的运维Ops工程师的角色重叠,后者负责部署和管理应用程序。但是SRE不仅仅是运维,他们还开发创新的解决方案,从而不断改善软件部署和管理。这意味着SRE的角色比SWE的角色更加开放和多样。

SRE角色是不同于IT运营的,因为SRE使用开发人员的思想来指导运维任务。他们寻找使用代码来实现定义和实现运维例程的方法。它们的目的是使流程像应用程序开发一样具有迭代性和可伸缩性。

 

SWE与SRE区别

因此,SWE和SRE之间的主要区别在于它们解决的问题类型。SWE的主要职责是编写代码,而SRE承担着一系列旨在提高软件性能和整体可靠性的广泛任务。

但是,从工具和操作的角度来看,SWE和SRE并没有什么不同。这两个角色都致力于使用代码和代码驱动的流程来完成任务。

 

SWE的角色变化

基于以上所述,您可能会认为SWE的工作比SRE的工作相对狭窄。传统上,SRE专注于彻底的创新,而SWE只是生成代码。

但这不再是事实了。如今的SWE处于比以往任何时候都更强大的地位,可以通过与SRE进行的工作并行的方式扩展为运维角色。例如,在调试时,SWE可以利用可靠性管理工具来提供丰富的监视数据,以帮助将从调试工具中获取的信息进行上下文化处理。他们还可以使用可靠性信息来更清楚地了解生产环境中出现的问题,然后利用这些见解来形成下一轮功能增强或错误修复。

换句话说,当今SWE可用的可靠性工具意味着它们不再在软件交付管道的开发端被隔离。现在,他们的可见性扩展到了管道的另一端的操作流程中,并且他们可以以以前不可能的方式参与这些流程。

SWE执行此类任务的能力很重要,不仅因为它在软件工程和IT运营之间建立了更牢固的联系,而且还因为SWE能够解决SRE无法解决的问题。由于SRE承担着各种各样的任务,并且必须立即维护大量不同的服务,因此它们不太可能使用可靠性数据来解决特定的错误或性能问题。但是,鉴于他们专注于代码及其在开发过程中的所有权,SWE可以更可靠地识别运维问题和代码问题之间的直接关系。

这意味着,借助现代可靠性工程工具,SWE可以解决SRE可能难以解决的运维问题。SRE非常擅长处理系统性问题引起的高层、端到端的操作挑战,但不适用于特定代码段引起的小规模问题,这些问题本质上是孤立的。解决后一种问题是SWE如何为现代运维能做出的独特贡献。

 

软件工程死了吗?

需要明确的是,这并不意味着我们传统上知道的SWE角色已经死亡,也不意味着SWE只是成为SRE。SWE和SRE的职责仍然足够不同,以至于它们是明显不同的角色。SWE仍主要负责开发,而SRE则主要负责可靠性工程。如上所述,每个角色还对运维做出了独特的贡献。

但是,发生了变化的是,SRE不再是开发和运维之间的唯一桥梁。现在,只要软件工程师对可靠性运维具有所需的预见要求,他们现在也可以参与该工作。

 

1
猜你喜欢