坎德人的小包包

欧剃,游荡的坎德人,在他的旅途中收集了许许多多有趣的东西。

发表日期:2019-08-14

答疑:Dev 和 DevOps 有啥区别?

—— 新时代,新技术,新角色

作者:Gabriel Ruttner


传统上,软件开发团队被分为两个不同的职责:软件工程师(Dev)和IT运维专员(IT/Ops)。在过去的认知里,软件工程师负责写代码,以解决客户的问题;当代码准备好之后,IT运维工程师负责将代码部署到生产服务器,并对其进行监控,确保一切都能顺利运行。但我们可能容易忘记,在不久之前,每个项目都有它专用的物理服务器和网络设备——在那个时候,软件开发小组没有能力应对使用这些物理设备带来的技术挑战。

随着云计算服务的不断普及,这些角色划分变得越来越模糊,从而诞生了被称为 DevOps 的新角色——所谓 Developer Operations Engineering,开发运维工程师。DevOps 工程师用软件为主要工具,解决各种内部开发问题。就像传统的软件工程师优化算法一样,DevOps 工程师的目标是优化整个软件工程的流程。换句话说,专门的开发者使用软件来解决客户的业务问题,DevOps 工程师使用软件来解决团队的软件工程问题。由于 DevOps 使用的工具通常是基于代码的,这也就成为了每一个软件开发者的关键技能。

开发即运维

在着手构建一个新的软件系统时,工程师们必须决定他们将使用什么平台来部署这些代码。不同的应用程序需要不同的资源。举个栗子,要做个图形处理应用可能会需要一些专业设备,比如图形处理器(GPU)。在过去,这些都是由系统管理员来决定,并手动配置实施的。如今,DevOps 工程师负责制定这些决策,并撰写模板文件来定义项目的架构。写下的这些规则将决定系统的性能,并确定系统应当如何应对大量的用户请求。编写这些文件使得系统定义明确,具备良好的可扩展性和可重现性。DevOps 团队将会使用多种不同的编程语言,例如 Python、Bash、webpack 和 gulp 等,来实现这些目标。

在云计算软件开发/DevOps纳米学位中,我们的课程涵盖了从数据库、文件存储到各种不同的计算平台(例如 Docker,AWS EC2 以及无服务器的 AWS Lambda)等各种技术。我们认为,这些技能是晕计算软件开发的基础,了解这些平台也是成为一名合格 DevOps 工程师的必要条件。

强化开发力量,减少运维成本

在软件开发过程中,许多中间任务都会拖慢整个软件的开发进度,而 DevOps 工程师的任务常常是将这些工作自动化。一种常见的自动化手段是构建代码部署管道。这些管道被称为持续集成(CI)或持续交付(CD),将会持续监控版本控制系统中的变化。系统将会使用被称为“单元测试”的自动化测试,对更改的准确性进行测试。这些测试将会在一个专用的测试环境中进行,保证有故障的代码不会影响到最终的用户。

发布过程是流程的最后一步。系统的“CD”部分将经过测试的代码部署到生产服务器,也就是将软件产品提供给真实用户。通过自动化执行这项任务,工程师团队能每天多次部署产品,或对一些关键的 Bug 请求做出快速响应。常用的自动部署工具包括 Travis CI 和 CircleCI 等。

同样,我们认为 DevOps 技术是每一个云计算软件开发者应该掌握的基础技能。想要理解如何在的云上部署并练习 DevOps 相关技能,在优达学城云计算软件开发纳米学位的 AWS 全栈应用开发课程中,我给出了作为一名云计算开发者所必须的技能框架。在这门课程中,我们将构建一个带有图片风格滤镜的图片板网站,并使用 TypeScript 和 Node 服务器等现代技术搭建所需的服务器。我们还将介绍如何编写脚本来构建生产代码,并使用 AWS Elastic Beanstalk 来完成配置基础架构与部署工作。

你是 Dev 也就能是 DevOps

学习必要的 DevOps 技能,对每个开发者来说,都是一个合理的专业发展与提升的过程:

  • 前端开发者能更快地部署并测试功能
  • 全栈工程师能无缝地提交更新
  • 机器学习研究者能提交新的、更准确的模型,并优化基础架构

虽然有些团队会有专门的 DevOps 小组,但大部分企业还是需要依靠他们的顶级软件工程师来实现。这项共同的责任使得 DevOps 文化在开发团队中愈加普及开来,而一些高素质的工程师将会率先从开发者(Dev)变成 DevOps 工程师,将更多的时间花在 DevOps 上,以帮助团队减少开支、改善协作,最小化停机时间,减少发布新功能的周期。

最后,我们也精心设计了云计算开发者/DevOps纳米学位的相关课程,希望能为你通往 DevOps 工程师的职业生涯铺平道路。

现在就报名参加吧!

(本文已投稿给「优达学城」。 原作: Gabriel Ruttner ,译者:欧剃 转载请保留此信息)

编译来源: https://blog.udacity.com/2019/07/what-is-the-difference-between-dev-and-devops.html

标签:UdacityTranslate

Powered by Jekyll on Github.io
2022 © 欧剃