DevOps IT界的魔法

举报
kaliarch 发表于 2022/09/04 20:17:40 2022/09/04
【摘要】 如今在软件工程界,有一个被大肆宣传的词–DevOps。技术官僚们正在技术的各个领域中学习技术,目的是进入这个令人垂涎的角色/职位,并吹嘘自己是一个著名组织的DevOps工程师。当一个新生(只是大学毕业后新进入这个行业的人)听到DevOps这个神奇的词时,他/她要么非常兴奋,要么非常担心,因为这是一个相对来说在大学课程中通常不太讨论的新术语(除非课程是DevOps专业化课程)。 什么是DevO...

如今在软件工程界,有一个被大肆宣传的词–DevOps。
技术官僚们正在技术的各个领域中学习技术,目的是进入这个令人垂涎的角色/职位,并吹嘘自己是一个著名组织的DevOps工程师。当一个新生(只是大学毕业后新进入这个行业的人)听到DevOps这个神奇的词时,他/她要么非常兴奋,要么非常担心,因为这是一个相对来说在大学课程中通常不太讨论的新术语(除非课程是DevOps专业化课程)。

什么是DevOps

所以如果我们仔细看这个词,我们会看到在这个词的中间我们使用了一个大写字母,这既不是错误,也与任何编码风格无关。
DevOps这个术语是由两个缩写词–开发和操作–结合而来的

在这个有趣的软件工程世界中,开发和操作指的是什么?
开发是指创建软件所遵循或采取的过程或步骤。它包括不同的步骤,如构思、指定、设计、编程、文档化、测试和bug修复。
操作是指为使新创建的软件可供客户/最终用户使用而采取的过程或步骤。
DevOps被定义为一种文化,而不是一种角色或职位,在这种情况下,团队能够开发一个软件/应用程序/功能,并将其迅速提供给用户,而不必依赖运营团队/流程。
这样做的好处是什么?这种方法缩短了特定开发到达用户手中的周转时间。从而增加服务提供商的收入。

但是DevOps真的是这样吗?

在软件行业,DevOps不仅仅是一种文化,而是一种技能/角色/职位。
软件/应用程序被构建为具有所有业务功能的单一单元的时代已经一去不复返了。现在,这些巨大的块被分解成更小的功能块,然后连接在一起以实现端到端的业务解决方案。
有什么帮助?同样,最重要的一点是开发到达用户的更好周转时间。但这一次有一些额外的优势,比如更好的可维护性,以及在应用程序抛出错误时更容易理解。
而且,通过这种方式,敏捷方法也可以很容易地实现。
哦!哇…又一个时髦的词–敏捷方法。是什么?简而言之,它是一种工作方式,我们考虑软件的小功能,开发该部分,然后交付它。
有什么好处?来啊!是一回事。更好的周转时间导致更大的收入。
现在你可能想知道,为什么我要在一个讨论DevOps的帖子中告诉所有这些。因此,你会震惊地知道,使所有这些事情(我们在上面讨论过)成为可能,DevOps一直在发挥关键作用。

如何实现

因此,DevOps工程师的主要职责在于安全有效地使应用程序在用户/客户端能够从应用程序获得服务的环境中处于活动/可用状态
使这些应用程序对用户/客户机可用的行为称为部署。部署只是DevOps工程师的各种职责之一。
现在,当一个软件被创建时,它肯定会在不同的情况下出现不同种类的错误。因此,通过模拟不同的情况进行严格的测试,并根据测试反馈再次调整程序中的变化,再次进行测试。因此,这形成了一个开发、构建、部署、测试和重复的循环。

现在,如果我们使用CLI命令或基于GUI的工具分别执行这些步骤,那么将花费大量的时间和工程师的精力。在实际的业务场景中,根据用于编写解决方案的框架的类型,每一个都变得更加复杂。因此,如果实际开发程序的工程师不得不在这些方面花费时间和精力,那么他们将很难专注于需要解决的业务场景。
此外,还有不同类型的测试,如单元测试、集成测试、性能测试和功能测试。对于所有这些不同的步骤,通常使用不同的环境。
等一下!什么是环境?因此,环境是一个逻辑实体或工作空间,在其中软件被期望将其服务交付给特定类型的客户/用户。所以在软件工程中,每个环境都是针对不同类型的用户的,比如-
1.应用程序开发人员使用的开发环境。
2.集成测试人员的集成环境。
3.软件最终目标受众的生产环境,其使用将为服务提供商带来收入。
这些只是很少的基本环境。还有其他各种环境。
让我们回到编程周期的问题上来。因此,我们看到,在软件行业中,开发是如何通过遵循上述所有步骤来完成的。

现在,DevOps工程师的好处来了,他们为开发人员简化了这些步骤,并帮助他们专注于应用程序的开发。为了简化这些步骤,DevOps工程师构建了CI/CD系统,该系统负责整个周期中涉及的所有这些步骤。

什么是CI/CD

CI/CD是一种处理工业级软件的编程周期所需的所有步骤的过程。它简化了开发人员的生活,并省去了构建代码、部署代码和执行测试的麻烦。CI/CD是持续集成和持续交付的缩写。
DevOps工程师的第二个职责是构建和维护CI/CD系统,并确保开发人员在使用该系统将其应用程序部署到他们选择的相应环境中时不会面临问题。
那么这个CI/CD系统是如何工作的呢?
CI/CD不是任何魔法或黑盒。它又是在不同的平台上运行的程序,以业务应用程序和配置为输入输出构建、部署和测试活动。
那么DevOps工程师需要编写这些程序吗?是的。他们需要。这就是为什么这些工程师被称为开发人员工程师。他们开发程序来完成软件行业运营部分所需的活动。

难道DevOps只负责这么多吗?

其实这只是个开始。
在这个云计算时代,一切都在云上。甚至正在开发的应用程序也在使用某些或其他类型的云服务(如桶、缓存、队列)。这些应用程序严重依赖于它们,这意味着如果这些资源配置不当,那么这些应用程序将无法运行。
再说一次,DevOps战士是来拯救的。这些工程师被期望确保这些云服务正常运行。但是,对于一个特定的数字解决方案,有如此多的资源,如果使用基于web的GUI实用程序在云平台上手动配置它们,解决方案肯定会被破坏。
请为基础设施即代码(IaC)鼓掌,因为它将我们从这种破坏中拯救出来。IaC是一种编码类型,它帮助我们以项目的形式对云资源配置进行编码,允许我们跟踪当前和以前的配置。
你猜怎么着,你不需要手动执行它们。相反,您可以将它们与您的CI/CD系统连接起来,以自动执行它们。
因此DevOps工程师需要开发这些IaC代码,并维护和部署它们。所以这也是DevOps中有Dev这个名字的另一个原因。

除了讨论的角色和职责之外,DevOps工程师还通过开发各种形式的脚本来不断自动化手动重复的任务。这可以是一些手动操作,比如从对象存储中复制对象,在对象存储中创建对象路径,配置服务器以为应用程序提供运行时
DevOps的唯一目的是减少发布或部署软件所需的重复性和工作量,并使最终用户能够快速获得这些软件。

总结

因此,在看到所有这些之后,我们可以理解一点,DevOps可以定义为一种心态、行为和角色。我们也可以理解,它不是开箱即用的东西,但它肯定超出了传统软件开发角色实际上所指的传统领域。
在这里我们还可以看到另一个重要的方面。在软件工程的世界中,不可能有任何角色需要零编码方面。作为DevOps工程师,即使您正在使用任何工具来自动化某些东西,您也需要理解工具是如何实现的,并且理解基本编程是必需的。
您可能会思考的另一个方面–DevOps工程师的贡献是否直接接触到最终用户,供他们使用?
他们的贡献可能不会被客户机直接使用,但他们确实让客户机可以使用应用程序。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。