从事 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】协议,转载请保留原文出处及本版权声明。
评论