DevOps路线图——从技术角度来看
什么是DevOps(用我的话来说):
- 跨职能思维模式能让你的团队更敏捷
- 消除开发人员(负责开发应用程序、编写代码、实现功能请求、修复错误等)和运维人员(负责部署这些应用程序、管理 IT 基础设施/服务器,并负责正常运行时间、安全性、稳定性、可扩展性等)之间的障碍的实践/文化
- 操作员、系统管理员、数据库管理员、开发人员、测试人员等之间的协作。
- 这项运动的本质是阻止人们说“但它在我的本地主机上运行正常”。
- 说实话,SRE 是一种理念,而其一个实际应用就是 SRE。
DevOps重点领域:
🎯 减少组织壁垒,
促进协作、沟通、教育和分享。
🚀 逐步推进变更
逐步推出小的变更,这样如果出现问题,您可以轻松回滚到以前(可接受的)状态。
🐞拥抱失败
只要有人为因素参与,失败就不可避免。优秀的DevOps策略会将失败视为正常现象。
📊
监控一切,监控一切,生成有意义的数据,分析数据,并在一段时间内减少工作量。
🤖工具与自动化
利用工具实现基础设施即代码 (IaC) 和持续集成/持续交付 (CI/CD)
如何成为一名 DevOps 工程师——一份路线图?(从技术角度出发):
ℹ️ 我整理了一份清单,顺序是我如果刚开始学习 DevOps 会遵循的。
- 计算机编程(任何语言都可以——最重要的是,你应该能够编写脚本)
- 版本控制(git 是事实上的标准)
- 符合 Linux/Unix/Posix 标准的操作系统(熟悉它)
- 计算机网络基础知识
- 容器化(Docker、Podman、CRI-o 等 - 尽量选择符合 OCI 标准的容器)
- 容器编排(Docker Swarm、Kubernetes、Mesos 等)
- 云平台(AWS、Azure、GCP 等——这里需要强调的是,这些云服务提供商的产品种类繁多,我们假设您应该精通工作流程中所需的那些产品。例如,了解 AWS Lex 的工作原理固然有益,但这并非成为 DevOps 工程师的必要条件🤷🏽♂️)
- 持续集成/持续部署/持续交付 - CI/CD(CircleCI、Github Actions、Bitbucket Pipelines、Gitlab CI/CD、Jenkins、Bamboo、Chef、AWS Code Build、AWS Code Pipeline、GCP Cloud Build 等)
- 自动化/基础设施即代码 (IaC)(Terraform、Pulumi、Ansible、Puppet、Saltstack 等)
- 日志记录和监控(Grafana 和 Prometheus 等)
注:
您不一定需要学习特定类别中的所有可用工具/服务。例如,在云平台部分,三大云服务提供商为 Kubernetes 提供以下托管服务:
AWS -> (Elastic Kubernetes Service) EKS;
GCP -> (Google Kubernetes Engine) GKE;
Azure -> (Azure Kubernetes Service) AKS
掌握多个平台固然好,但并非必要条件。我认为,如果你能在一个平台上部署,就应该也能在另一个平台上部署。
同样,在 IaC 中,我建议你选择你通常喜欢使用的工具,或者你的潜在雇主/客户正在使用的工具。
接下来呢?:
完成这份清单后,你的基础知识就掌握了,可以开始担任 DevOps 工程师的角色了。在此过程中,你还会发现许多新工具,例如:
Helm(Kubernetes 管理器)、Containerd(容器运行时,类似于 Docker、CRI-o)、Packer(适用于多个平台的机器镜像构建器)、Vagrant(无头虚拟化)、Prometheus(监控工具)、Grafana(数据可视化工具,类似于 Tableau、AWS Quicksight 等)、Envoy(代理工具,类似于 HA、Nginx 等)、网格(AWS Mesh、Istio 等)……等等等等🤯(所以别害怕,一旦你的基础知识扎实,就可以尝试任何工具,看看你是否喜欢它们,它们是否真的能改进你的工作流程,还是只是炒作而已。)