Skip to main content
今日目标:通过前四周的学习,你已经掌握了 Python 和 Go 这两门 DevOps 核心语言。今天我们不写新代码,而是进行一场深度的技术复盘。作为一名优秀的架构师或高级运维工程师,你需要具备“根据场景选型”的能力,而不是盲目地使用某一门语言。

核心理论 (30 mins)

在 Infra 领域,这两门语言不是竞争关系,而是互补关系
  • Python: 存在“环境地狱”。你需要确保服务器上有正确版本的 Python,且所有 pip 依赖都已安装。Docker 化后镜像通常很大(数百 MB)。
  • Go: “一次编译,到处运行”。编译出的单个二进制文件包含了所有依赖,镜像可以轻至几 MB。
  • 结论: 如果你的工具需要分发到成千上万台机器运行,或运行在 Distroless 等极简容器中,首选 Go
  • Python: 受到 GIL(全局解释器锁)的限制,无法实现真正的多核并行计算。处理每秒万级以上的请求会非常吃力。
  • Go: 天生为并发而生。Goroutine 的切换成本极低。
  • 结论: 如果是开发网关、代理、高频数据采集器,首选 Go
  • Python: 代码量比 Go 少 30%-50%,且库极其丰富(特别是数据处理、AI、云厂商 SDK)。
  • Go: 语法较死板,需要显式处理错误,写起来比较累。
  • 结论: 如果是写一次性的脚本、快速原型开发或复杂的业务逻辑,首选 Python

场景任务 (90 mins)

今天没有代码任务,但有比代码更重要的“思维实验”。请针对以下场景,给出你的选型理由。
1

场景复盘:DevOps 场景选型地图

直接“抄作业”式的建议,请熟记于心。

脚本与自动化胶水

推荐: Python
  • 场景: 调用 API 自动化部署、Excel 报表生成、日志清洗、简单 CI/CD 流程。
  • 理由: 逻辑变动快,库支持好,代码易读易写。

Sidecar 与 监控 Agent

推荐: Go
  • 场景: 数据采集插件、K8s 准入控制器、日志转发器 (Shipper)。
  • 理由: 资源占用必须极小,不能抢占业务应用的 CPU/内存。

内部管理平台 (Web UI)

推荐: Python (FastAPI/Django)
  • 场景: CMDB、发布系统、权限管理后台。
  • 理由: 丰富的 ORM 库和现成的 UI 框架,开发效率至上。

高性能网络中间件

推荐: Go
  • 场景: API 网关、服务发现、限流器、端口扫描工具。
  • 理由: 高并发下的低延迟和稳定性是核心诉求。
2

你的技能树回顾

恭喜你!到今天为止,你已经建立了一个完整的 Infra 工程师技能树
  • Week 1 (Shell & SQL): 懂得如何操作底层系统和设计结构化数据。
  • Week 2 (Python): 掌握了编写复杂自动化逻辑的能力。
  • Week 3 (FastAPI): 能够将脚本转化为标准的 API 服务。
  • Week 4 (Go): 突破了性能瓶颈,具备了开发高性能工具的能力。
自我检查
  1. 如果让你写一个定时备份 MySQL 的脚本,你会用什么?(Shell/Python)
  2. 如果让你写一个每秒能处理 10000 个请求的 API 网关,你会用什么?(Go)

拓展思考 (30 mins)

Rust 会是必须吗?

思考:近年来 Rust 很火,它比 Go 更快且内存更安全。
  • DevOps 视角: 除非你在写更底层的内核模块或对 GC 极度敏感的系统,否则 Go 的开发效率远高于 Rust。对于运维开发而言,Go 是目前的“甜点区”。

Shell 的边界

思考:什么时候该放弃 Shell 改用 Python?
  • Rule of Thumb: 当脚本超过 100 行,或者需要处理 JSON/数组/复杂逻辑时,请果断重写为 Python。Shell 的可维护性在超过这个阈值后会指数级下降。

今日产出物

  • 无需提交代码
  • 产出物是你的架构决策能力

下周预告

下周预览:我们将进入第 5 周——终极实战周。我们将动用所有学到的武器,打造一个完整的“分布式信号监控系统”。 我们将使用 Python 写控制面 (Master),使用 Go 写数据面 (Agent),亲手实现一个微缩版的 Prometheus。

回到目录

查看完整进度

下一天: 毕业设计开启

Day 28 | 毕业设计路线与筹备