ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

90DaysOfDevOps 第 2 天:DevOps 工程师的职责——连接开发与运维的桥梁

90DaysOfDevOps 第 2 天:DevOps 工程师的职责——连接开发与运维的桥梁 文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载导读本文是《90DaysOfDevOps》90 天学习挑战的第 2 天围绕DevOps 工程师的职责这一主题展开。文章从开发与运维两个基本阵营切入系统梳理了 DevOps 工程师在应用交付全链路中的角色定位——不写应用代码却要理解开发者的工具与流程不专职管理服务器却要掌握 Linux、网络、虚拟化与容器化的基础知识。读完本文你将清楚理解 DevOps 工程师连接两端、打通筒仓的核心使命以及持续、自动化、可测试地发布新版本这一核心任务为后续 88 天深入工具链与流程打下认知基础。本文对应仓库中的 2022/ja/Days/day02.md日文版与 2022/Days/day02.md英文原版适合已读完第 1 天入门内容、正在建立 DevOps 全局观的读者。一切始于两个阵营开发与运维在第 1 天2022/Days/day01.md中我们明确了DevOps 不是一种工具买不到、无法下载也不是一门编程语言或某种玄学它是一套帮助缩短产品构思阶段到生产环境发布之间时间线的实践集合。而理解 DevOps 工程师的职责首先要回到应用创建过程中的两个主要部分开发Development软件开发者编写应用程序并对其进行测试。运维Operations应用程序被部署到服务器上并被持续维护。两个阵营天然存在信息差与协作摩擦开发者关注新功能、新代码运维关注稳定性、可用性与基础设施。传统瀑布式交付中测试与发布环节往往成为瓶颈这正是 DevOps 要解决的问题。DevOps 是连接两者的纽带要真正理解 DevOps 以及 DevOps 工程师所承担的任务需要先理解工具、流程及其全貌并看清它们是如何组合在一起的。核心观点是DevOps 的作用就是架起开发与运维之间的桥梁让两边不再是相互孤立的筒仓。一切从应用开始在 DevOps 的世界里应用就是一切。开发者使用各式各样的技术栈创建应用其中可能涉及多种编程语言、构建工具、代码仓库等。作为 DevOps 工程师你不会去编写应用代码但深入理解开发者如何工作、他们使用哪些系统、工具和流程是取得成功的关键你需要从宏观层面了解应用是如何配置以对接其所需的各种服务或数据服务的同时还要理解这些能力应该如何被测试或应当被测试的需求。这种读懂代码、但不写代码的能力决定了后续你能否为应用做出正确的基础设施决策——这与第 3 天2022/Days/day03.md提到的DevOps 工程师最好能读懂部分代码以便为应用做出最佳基础设施决策一脉相承。应用要部署到服务器应用创建完成后必须被部署到某个地方——这里可以简单理解为一台服务器无论它在何处。随后根据应用类型的不同客户或终端用户将访问它。而这台服务器本身也需要被创建、配置做好运行应用的准备——这个环节很可能就落在 DevOps 工程师肩上包括部署与配置这些服务器。服务器在哪里运行服务器的运行位置通常有几种选择本地/自建机房On-Premises自购硬件、自管机房公有云Public Cloud使用云厂商提供的基础设施无服务器Serverless原文档明确说明本系列不深入讨论但它是真实选项之一并且越来越多企业正朝这个方向演进。无论部署在何处都意味着 DevOps 工程师需要具备创建并配置服务器的能力。在本仓库 90 天的后续章节中你可以看到对应实践例如 2022/Days/Cloud/01VirtualNetworking/Mod04_90DaysOfDevOps.ps1 展示了通过 PowerShell Azure Resource Manager 模板Mod04_90DaysOfDevOps-vms-loop-template.json、Mod04_90DaysOfDevOps-vms-loop-parameters.json以循环方式批量创建虚拟机的基础设施即代码实践这正是配置服务器的现代形态。操作系统Linux 是主角这些服务器都需要运行操作系统。一般而言这个操作系统就是 Linux——本仓库在 90 天计划中专门安排了整整一周的基础知识章节。一个直接可用的学习载体是 2022/Days/Linux/VAGRANTFILE它使用 Vagrant VirtualBox 快速拉起一个 Ubuntu 桌面 20.04 虚拟机8GB 内存、4 核 CPU、128MB 显存让你在本地拥有一台可反复折腾的 Linux 实验环境配合 2022/Days/Linux/create-user.sh 这样的日常运维脚本可以实践用户管理与基础运维操作。网络让一切互通服务器几乎必然需要与网络或环境中的其他服务通信因此 DevOps 工程师还需要具备网络及网络配置层面的知识例如DNS、DHCP、负载均衡等主题原文档明确这些会在后续专门章节中详述。在本仓库的网络实战目录 2022/Days/Networking/ 中你可以看到使用 Python 库paramiko、netmiko批量连接网络设备、下发配置变更与备份配置的真实脚本如 netmiko_con_multi.py、backup.py这就是自动化网络运维的落地示例。万事通Jack of all trades, Master of none万事通、无一精通是原文档对 DevOps 工程师能力模型最精辟的概括要点如下不需要是网络或基础设施专家但需要具备把系统跑起来并让它们彼此对话的基础知识不需要是开发者但需要掌握至少一门编程语言的基础现有专长是巨大优势如果你以某一领域的专家身份进入这是向其他领域扩展的绝佳跳板日常管理并非常态你大概率不会每天接手服务器或应用的日常运维管理工作。这种T 型能力结构意味着广度优先、深度按需生长。你不需要成为每一项技术的权威但必须对整条交付链路都有够用的理解。从服务器到容器虚拟化、IaaS 与容器化虽然前面一直在谈服务器但应用更可能被开发为以容器Container形态运行。容器虽然大部分情况下仍然运行在服务器之上但作为 DevOps 工程师你不仅需要理解虚拟化与云基础设施即服务IaaSCloud Infrastructure as a Service还需要理解容器化Containerisation——而本 90 天计划的重点正是偏向往容器方向。仓库中就有对应的入门素材例如 2022/Days/Containers/Dockerfile 展示了最基础也最重要的容器镜像编写要点——基于ubuntu:18.04官方基础镜像通过groupadd/useradd创建非 root 的basicuser用户并以USER basicuser切换这体现了容器安全的最佳实践避免以 root 运行2022/Days/Containers/my_wordpress/docker-compose.yaml 则是一个可直接运行的多容器编排示例。容器化与编排如 Kubernetes正是后续数十天将深入的核心主题。高层概述从新功能到生产环境把视角拉高可以看到 DevOps 面对的两侧图景一侧开发者不断为应用创造新功能以及修复缺陷另一侧某种环境、基础设施或服务器被配置和管理用来运行应用并与它所需的所有服务通信核心问题我们如何把这些新功能和缺陷修复交付到产品中并让终端用户可用由此引出 DevOps 工程师的主任务之一如何发布应用的新版本关键不在于只做一次而在于持续Continuously发布不是一次性事件而是可重复的常态化流程自动化Automated用自动化替代手工操作提升效率与一致性高效Efficient在保证质量的前提下加速交付包含测试Include Testing发布链路必须内置测试环节确保变更不破坏现有功能。这与第 3 天2022/Days/day03.md展开的 DevOps 生命周期完全呼应开发Development→ 测试Testing→ 集成Integration→ 部署Deployment→ 监控Monitoring循环往复。其中集成位于生命周期中心——开发者高频提交代码变更每日或每周每次提交都触发自动化测试从而在缺陷进入下一阶段前尽早暴露问题。仓库中同样有这一环节的落地证据2022/Days/CICD/Jenkins/Pipeline/ 目录下的 Jenkinsfile声明式流水线、配套的 Dockerfile 与 index.html 构成了一个完整的持续集成/持续交付示例而 jenkins-values.yml、jenkins-namespace.yml、jenkins-sa.yml 等则是以 Kubernetes Helm 方式部署 Jenkins 的配置。这正是把新版本持续、自动化、带测试地发布到生产环境这一主任务的真实工具链。小结与下一步本节内容到此结束。核心收获可以浓缩为三点开发与运维是两个世界DevOps 工程师是连接它们的桥梁——不写代码但要懂代码不专职运维但要懂基础设施能力模型是万事通、无一精通——以广博的基础知识起步以既有专长为跳板持续扩展重点掌握 Linux、网络、虚拟化/IaaS 与容器化核心任务是持续、自动化、可测试地发布新版本——把应用交付从漫长的传统流程压缩为高频、可靠的循环。接下来的几天本系列会继续深入 DevOps 的若干细分领域随后进入对工具与流程及其收益的深度剖析章节。如果你想按顺序学习建议先回到第 1 天2022/ja/Days/day01.md建立 DevOps 总体认知再继续第 3 天2022/ja/Days/day03.md深入了解以应用为中心的 DevOps 生命周期全貌。参考资源原文档2022/ja/Days/day02.md随文提供了一批什么是 DevOps的外部学习资源包括 TechWorld with Nana、GitHub、IBM 的视频讲解以及 AWS 与 Microsoft 官方的文字介绍。原作者的阅读建议是完整观看这些视频并对照文中的文字说明加深理解。这些资源与仓库内 2022/Days/day01.md 第 1 天提供的基础入门视频互补可共同支撑你对 DevOps 概念的立体认知。学习提示坚持到这里你已经能判断这是不是你想走的方向。如果你确认这就是你的目标下一站就是第 3 天——让我们继续深入 DevOps 生命周期。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 第 2 天DevOps 工程师的职责全景——连接开发与运维的桥梁90DaysOfDevOps 第 2 天DevOps 工程师的职责全景——连接开发与运维的桥梁 本篇是 90DaysOfDevOps https://link文档/教程如何用 Wand-Enhancer 免费解锁 WeMod 专业版如何用 Wand Enhancer 免费解锁 WeMod 专业版 你大概见过这个情况用 WeMod现在叫 Wand的时候一部分功能只在专业版里解锁订阅文档/教程90DaysOfDevOps 第 2 天DevOps 工程师的核心职责、知识边界与全链路视野90DaysOfDevOps 第 2 天DevOps 工程师的核心职责、知识边界与全链路视野 本篇技术指南基于 90DaysOfDevOps https://文档/教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进