从事 DevOps 工作应该掌握哪些语言及工具

一、语言篇
如果要从事 DevOps 工作,那么除了我们所熟悉的 Shell 和 Python 之外,建议在此基础上熟悉下 Go(Golang)的特性和语法,如果团队都喜欢用 Go 语言来开发,则建议继续深入研究。这里我们可以先比较下 Python 和 Go 语言,看看 Go 语言的优势在哪里。
- 部署简单 
Go 语言编译生成的是一个静态可执行文件,除了 glibc 之外再没有其他的外部依赖。这也使得部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,这就大大减轻了维护的负担。
- 并发性好,天生支持高并发 
Goroutine 和 Channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个 Go 应用也能有效地利用多个 CPU 核,其并行执行的性能很好。这一点与 Python 也是天壤之别。多线程和多进程的服务端程序编写起来并不简单,而且由于全局锁 GIL 的原因,多线程的 Python 程序并不能有效利用多核,只能用多进程的方式进行部署,其实在很多场景中这样并不能有效地利用计算机资源,这也是饱受 Python 爱好者诟病的地方。
- 良好的语言设计 
从学术的角度讲,Go 语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go 的设计是非常优秀的:规范足够简单灵活,具有其他语言基础的程序员都能迅速上手。更重要的是 Go 自带完善的工具链,大大提高了团队协作的一致性,比如 gofmt 自动排版 Go 代码,这在很大程度上杜绝了不同人编写代码排版风格不一致的问题。把编辑器配置成在编辑存档的时候自动运行 gofmt,这样在编写代码的时候就可以随意摆放位置了,存档的时候 gofmt 会将它们自动变成正确排版的代码。此外,还有 gofix、govet 等非常有用的工具。
- 执行性能好 
Go 语言虽然不如 C 和 Java,但其通常比原生 Python 应用还是高一个数量级的,适合编写一些瓶颈业务,内存占用也非常低。
那么 Go 语言适用的场景都有哪些呢,具体如下:
- 服务器编程,如果大家以前习惯使用 C 或者 C++来进行服务器编程,那么用 Go 来做也是很合适的,例如日志处理系统、数据打包、虚拟机处理、文件系统等。 
- 分布式存储、数据库代理器等。 
- Key-Value 存储,例如工作中常见的 etcd。 
- 网络编程,目前这一块应用得最广,包括 Web 应用、API 应用、下载应用等。 
- 内存数据库,前一段时间 Google 开发的 groupcache 等。 
- 游戏服务端的开发。 
- 云平台,目前国内外很多云平台都在采用 Go 开发,例如国外的 CloudFoundy、国内的青云等。 
建议大家在平常的 DevOps 中,除了使用 Python 之外,还可以用 Go 语言来编写些项目需求或自动化运维的 API,这样来加深理解,熟悉其语法特性,相信大家最终会被其大道至简的设计哲学所折服。
二、工具篇
为了更好地从事 DevOps 工作,我们必须得掌握一些常用的工具,尤其是一些对 DevOps 工作有帮助的工具是需要重点掌握的。
- 版本控制管理(SCM):GitHub、GitLab、SubVersion,考虑到汉化和网络方面的原因,国内企业在 GitLab 和 GitHub 之间进行选择的时候,一般是选择 GitLab。 
- 构建工具:Ant、Gradle、Maven。Maven 除了以程序构建能力为特色之外,还提供了高级项目管理工具。 
- 持续集成(CI):Jenkins,大名鼎鼎的软件,基本上是 CI 的代名词了。Jenkins 是全球最流行的持续集成工具,国内某社区曾经调研 Jenkins 在国内的使用率为 70%左右。 
- 配置管理:Ansible、Chef、Puppet、SaltStack,这些都是自动化运维工作中常见的工具,大家应该都不陌生了。 
- 虚拟化:Xen 或 KVM、Vagrant。 
- 容器:Docker、LXC、第三方厂商如 AWS,这里需要注意 Docker 与 Vagrant 的区别。 
- 服务注册与发现:Zookeeper、etcd。 
- 日志管理:大家都很熟悉的 ELK。 
- 日志收集系统:Fluentd、Heka。 
- 压力测试:JMeter、Blaze Meter、loader.io。 
- 消息中间件:ActiveMQ、RabbitMQ。 
事实上,很多 DevOps 工具在这里尚未罗列出来。在工具的选择上,需要结合公司业务需求和技术团队情况而定,毕竟适合自己的才是最好的。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/da73a495c1160c9b6b67a28ce】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。











 
    
评论