本文翻译自国外的科技网站hackernoon,作者是云软件工程师Amrit Singh。如需查看英文原文,可在文章底部点击“阅读原文”。
DevOps是研发(Development)和运营(Operations)的缩写。它是目前最热的话题之一。成为DevOps工程师需要学习许多技能和工具。
“ DevOps由开发和运营团队的共同负责。它集合了最佳实践和工具,让服务和应用程序更高效地跑在选择的基础设施上。它涵盖了基础设施的供应和维护以及让软件在基础设施上运行的流程。”
作者与团队做DevOps已经有一些年头了。从一开始对DevOps工具一无所知,到慢慢成为这一块的专家。下面作者将展示一个技术路线图来帮助你提升DevOps技能(从上到下,由基础到进阶)。
01
—
计算机和网络架构
计算机和网络架构是理解计算机系统底层和网络是如何工作的。它包括CPU、内存、外部设备、网络协议、路由协议等部分。了解它将帮助你在以下方面更好决策:
02
—
脚本
对于任何需要编程的领域来说,脚本编写都是一项重要的技能。这是DevOps开发人员必备技能。因为DevOps需要流程自动化,这要求工程师必须使用脚本,例如Shell、Python、JavaScript等。
熟练使用脚本后,将部署、流程、其他日常活动进行自动化将变得简单。
03
—
Git & Github/Bitbucket/Gitlab
Git是开发人员社区中最流行的版本控制。Github/Bitbucket/Gitlab是为你托管git服务器的仓库(译者注:国内有码云、腾讯工蜂等)。在这些平台上,您将代码存储在Git中,这些平台为您提供了许多管理工具。
DevOps工程师应该熟悉Git命令(译者注:例如add、commit、push、pull、clone、revert等)和这些平台提供的DevOps流水线(译者注:例如Github Action、Gitlab CI/CD等)。这有助于后续进行CI/CD自动化的实践。
04
—
Jenkins
Jenkins是最常用的自动化和CI/CD工具之一。它是一个开源的自动化服务。
在为您的项目构建自动化时,Jenkins支持的各种各样的插件可以派上用场。这些插件从Jira、JUint等工具到EC2、Docker等基础设施插件,再到Slack Notification等通信插件。
04
—
Ansible/Puppet/Chef/SaltStack
Ansible、Puppet、Chef和SaltStack都是基础设施自动化和配置管理工具(自动运维工具)。这些工具用于大规模部署、配置和管理服务器。这些工具中哪一个是最好的争论已经持续了很长一段时间。Ansible之所以是作者的首选,主要是因为它易于设置和管理。创建用于部署的Ansible剧本非常容易。
学习上述其中一个自动运维工具是DevOps工程师的必备技能。
05
—
Docker
使用Docker你可以容器化你的应用程序和服务。您可以构建彼此隔离的、运行不同应用程序的容器。每个容器都有自己的文件、已安装软件和依赖库。
与Ansible、Puppet、Chef和SaltStack相比,Docker也被认为是一种快速的部署方式。这些容器可用于在任何类型的服务器上托管应用程序。
06
—
云平台
要成为一名优秀的DevOps开发人员,你需要了解关于云平台及其提供的所有服务的(几乎)一切。 对云平台的了解使您能够根据自己的需求选择合适的服务,并帮助您降低基础设施成本。
07
—
日志管理
为应用程序和服务提供有意义的日志是部署的一个重要方面。
正确的软件日志管理可以带来以下价值:
管理日志的方法有很多。云平台也提供了一些这样的工具,比如AWS的CloudWatch。
ELK是应用最广泛的日志监控和可视化工具。它是三个开源工具的组合:
您可以分析、搜索和过滤日志。Kibana帮助您将日志进行漂亮的可视化。
08
—
CI/CD
持续集成/持续部署(CI/CD)是发布已经测试合格并支持自动部署的软件的过程。CI/CD减少了从变更代码到交付软件的时间。
建立CI/CD流水线是DevOps团队最重要的职责之一。有很多方法可以创建流水线,比如Gitlab流水线,Bitbucket流水线,AWS Code Build(译者注:国内有蓝鲸CI平台https://github.com/Tencent/bk-ci等)。
为了构建CI/CD流水线,你需要与开发人员和QA团队合作。一个伟大的流水线(伴随着伟大的实践)从代码提交到测试再到部署往往不需要任何手工干预。(译者注:上文的Jenkins一般主要做CI自动化,比如每日构建。这里的CI/CD流水线需要包含部署流程,会更长更复杂。)
09
—
基础设施即代码
从云平台提供的控制台创建和配置云基础设施非常简单,适合新手使用。使用控制台很容易,建议使用较小的基础设施。对于大型基础设施,您需要将基础设施作为代码。您可以使用一个命令或单击一个按钮来启动、拆除堆栈。
CloudFormation(来自AWS)和Terraform是一些流行的“基础设施作为代码”的软件工具。
10
—
Kubernetes
Kubernetes是一个开源系统,用于在多个服务器上部署和管理容器。现在,集装箱是一种首选的部署方式。Kubernetes通过运行应用程序并确保不停机来大规模地解决这个问题。
流行的云平台提供现成的Kubernetes服务,比如
最后的话:
要成为DevOps工程师,你不需要掌握以上所有的技能。但你需要掌握这些技能中的一些,并在需要的时候不断学习。