> ## Documentation Index
> Fetch the complete documentation index at: https://docs.akria.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Day 27 | 复盘与技术选型

> 场景决定语言：什么时候用 Python？什么时候用 Go？

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

## <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><Icon icon="book" size={26} color="#059669" /> 核心理论 (30 mins)</span>

在 Infra 领域，这两门语言不是竞争关系，而是**互补关系**。

<AccordionGroup>
  <Accordion title="1. 部署与环境一致性 (Deployment) (10 mins)" icon="box-archive">
    * **Python**: 存在“环境地狱”。你需要确保服务器上有正确版本的 Python，且所有 `pip` 依赖都已安装。Docker 化后镜像通常很大（数百 MB）。
    * **Go**: “一次编译，到处运行”。编译出的单个二进制文件包含了所有依赖，镜像可以轻至几 MB。
    * **结论**: 如果你的工具需要分发到成千上万台机器运行，或运行在 `Distroless` 等极简容器中，**首选 Go**。
  </Accordion>

  <Accordion title="2. 性能与并发潜力 (Performance) (10 mins)" icon="gauge-high">
    * **Python**: 受到 GIL（全局解释器锁）的限制，无法实现真正的多核并行计算。处理每秒万级以上的请求会非常吃力。
    * **Go**: 天生为并发而生。Goroutine 的切换成本极低。
    * **结论**: 如果是开发网关、代理、高频数据采集器，**首选 Go**。
  </Accordion>

  <Accordion title="3. 开发速度与生态 (Development Speed) (10 mins)" icon="clock">
    * **Python**: 代码量比 Go 少 30%-50%，且库极其丰富（特别是数据处理、AI、云厂商 SDK）。
    * **Go**: 语法较死板，需要显式处理错误，写起来比较累。
    * **结论**: 如果是写一次性的脚本、快速原型开发或复杂的业务逻辑，**首选 Python**。
  </Accordion>
</AccordionGroup>

***

## <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><Icon icon="list-check" size={26} color="#059669" /> 场景任务 (90 mins)</span>

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

<Steps>
  <Step title="场景复盘：DevOps 场景选型地图">
    直接“抄作业”式的建议，请熟记于心。

    <CardGroup cols={2}>
      <Card title="脚本与自动化胶水" icon="python" color="#F7D100">
        **推荐: Python**

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

      <Card title="Sidecar 与 监控 Agent" icon="golang" color="#00ADD8">
        **推荐: Go**

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

      <Card title="内部管理平台 (Web UI)" icon="code" color="#F7D100">
        **推荐: Python (FastAPI/Django)**

        * **场景**: CMDB、发布系统、权限管理后台。
        * **理由**: 丰富的 ORM 库和现成的 UI 框架，开发效率至上。
      </Card>

      <Card title="高性能网络中间件" icon="bolt-lightning" color="#00ADD8">
        **推荐: Go**

        * **场景**: API 网关、服务发现、限流器、端口扫描工具。
        * **理由**: 高并发下的低延迟和稳定性是核心诉求。
      </Card>
    </CardGroup>
  </Step>

  <Step title="你的技能树回顾">
    恭喜你！到今天为止，你已经建立了一个完整的 **Infra 工程师技能树**：

    * ✅ **Week 1 (Shell & SQL)**: 懂得如何操作底层系统和设计结构化数据。
    * ✅ **Week 2 (Python)**: 掌握了编写复杂自动化逻辑的能力。
    * ✅ **Week 3 (FastAPI)**: 能够将脚本转化为标准的 API 服务。
    * ✅ **Week 4 (Go)**: 突破了性能瓶颈，具备了开发高性能工具的能力。

    **自我检查**：

    1. 如果让你写一个定时备份 MySQL 的脚本，你会用什么？(Shell/Python)
    2. 如果让你写一个每秒能处理 10000 个请求的 API 网关，你会用什么？(Go)
  </Step>
</Steps>

***

## <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><Icon icon="lightbulb" size={26} color="#059669" /> 拓展思考 (30 mins)</span>

<CardGroup cols={2}>
  <Card title="Rust 会是必须吗？" icon="rust">
    **思考**：近年来 Rust 很火，它比 Go 更快且内存更安全。

    * **DevOps 视角**: 除非你在写更底层的内核模块或对 GC 极度敏感的系统，否则 Go 的开发效率远高于 Rust。对于运维开发而言，Go 是目前的“甜点区”。
  </Card>

  <Card title="Shell 的边界" icon="terminal">
    **思考**：什么时候该放弃 Shell 改用 Python？

    * **Rule of Thumb**: 当脚本超过 100 行，或者需要处理 JSON/数组/复杂逻辑时，请果断重写为 Python。Shell 的可维护性在超过这个阈值后会指数级下降。
  </Card>
</CardGroup>

***

## <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><Icon icon="file" size={26} color="#059669" /> 今日产出物</span>

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

***

## <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><Icon icon="github" size={26} color="#059669" /> 下周预告</span>

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

***

<CardGroup cols={2}>
  <Card title="回到目录" href="/training/30daystudy/week-4">
    查看完整进度
  </Card>

  <Card title="下一天: 毕业设计开启" href="/training/30daystudy/day-28">
    Day 28 | 毕业设计路线与筹备
  </Card>
</CardGroup>
