4

为什么说 Golang 是 DevOps 专业人士的第一首选?

 3 years ago
source link: https://studygolang.com/articles/35193
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

为什么说 Golang 是 DevOps 专业人士的第一首选?

sunlingbot · 1天之前 · 225 次点击 · 预计阅读时间 6 分钟 · 大约8小时之前 开始浏览    

Golang 是当今最受欢迎的编程语言之一,现在就让我们来看看它在 DevOps 空间中能够做什么?

Golang,也称为 “Go”,是一种具备快速和高性能的编译型语言,这是被设计成为易于阅读和理解的原因。Go 是由 Rob Pike,Robert Griesemer 和 Ken Thompson 等人在 Google 时编写的,于 2009 年 11 月首次发布。

Golang 被设计成高度简洁和易于理解的语法。

这是 Golang 中经典的 “hello world” 示例代码。

package main
import "fmt"
    func main() {
    fmt.Println("hello world")
}

要想运行这段代码,就要在 hello-world.go 所在目录中输入以下命令,并且使用 go run 运行。

$ go run hello-world.go
hello world
$ go build hello-world.go
$ ls
hello-world hello-world.go
$ ./hello-world
hello world

Go 的介绍

Go 诞生于 2007 年,当时多核 CPU 的架构随处可见,而且没有编程语言能够简化多线程应用程序的开发工作。安全和高效地管理不同线程是开发人员的重大责任。这和其他编程语言不同,Go 虽然很年轻,但是也很强大。Goroutines 在另一个层面上彻底革新了竞争性编程。

经过测试和证明,用 Go 编写的应用程序具有高性能和可伸缩性。Golang 是一种非常高效的语言,就像 C/C++ 一样,还具备像 Java 一样处理并行任务的特性,同时兼具 Python 和 Perl 代码的易于阅读性。相比其他的编程语言,Golang 具有无可争议的架构优势。

Go 还被一些大公司使用,例如 BBC、Uber、Novartis、Basecamp and Soundcloud。Uber 公司报道过更高的吞吐量、高性能、延迟和正常运行时间。英国广播公司(BBC)是一个闻名于广播世界新闻中的机构,它将 Go 应用于 Web 后端领域,包括网络爬虫和网页数据提取。而 SoundCloud 公司则将 Go 用于构建和部署系统中。

以下是关于 Go 编程语言的 Google 趋势概览,它正在持续且稳定的增长。

为什么选择 Go ?

对于具备 C/C++ 学习经验的程序员来讲,学习 Go 是一件毫不费力的事情,并且将祖传代码转换成 Go 程序也是非常简单的。作为一种编译型的静态语言,它比解释型语言要快得多,同时具备了大部分的性能优势。

  • Go 作为一种与 C 很相似的编程语言,但是除了具有 C 语言的特性之外,Go 还提供了内存安全性、垃圾回收结构化类型和 CSP 风格的并发性。
  • 在最近的 Stack Overflow 2020 的调查结果中,Go 是开发人员中最喜欢和最想要使用的编程语言之一。

最喜欢和最想要使用的编程语言

  • Go 很适合用于一般绩效导向的云计算软件。流行的 DevOps 工具是用 Go 编写的,例如 Docker ,甚至是开源的容器编排系统 Kubernetes 都是用 Go 编写的。自 2011 年以来,YouTube 一直在使用 Vitess ,它是一个由 Google 构建的分布式数据库系统,而且这个分布式数据库的 MySQL 后端是由 Golang 构建。
  • 2018 年的 Stack Overflow 调查结果中,Golang 排名第五。根据 GitHub 关于 2018 年的第二季度报告,Golang 的整体增长率接近于 7% ,与上一季度相比增长 1.5 点。到 2019 年第四季度,Golang 的整体增长率已经达到 8% 。

Go 如此受欢迎的原因

  • Go 是一种静态类型的编译语言,因此你可以更早地发现问题。
  • Go 可以被立即编译为机器代码,因此它的编辑/刷新周期相对较快,并且仍然会编译出更高效的机器代码。
  • Go 的语法设计使得编写高度并发的网络程序变得容易。
  • Go 内置了许多库来支持测试,您可以轻松地定义和测试模块,这进一步提高了代码规范。
  • Go 跨平台特性使得移植代码非常容易,这也是 Go 的最大优势。
  • Go 提供了自动的代码格式化、代码检查和审核工具,它们作为软件包的默认部分;Go 编译器甚至会执行像变量没有被使用的操作。这使其成为一种专业的语言。
  • 正是因为 Go 对并行和并发的原生支持,所以它才会变得如此特别。对于需要大量并发或并行处理、联网、海量计算的应用程序,使得 Go 成为一种更完美的编程语言。
  • Go 是实现云兼容性的最佳选择。Go 还具有更好的垃圾回收能力和性能优异的 network 包,而且还解决了变量没有被使用、多编译和交叉编译的问题。

让我们看一些是谁在使用 Go 的实际案例

SendGrid 投入 Go

SendGrid 是一个客户沟通的平台,并于 2014 年将 Go 作为主要开发语言。SendGrid 开发团队需要从根本上转变它们的开发语言,归结为 Scala、Java 和 Go 之间的竞争。当时,SendGrid 在开发中面临最大的挑战是并发编程。寻找具有并发的异步编程的特性,然后将其作为编程语言中的一部分,这是 SendGrid 选择 Go 最令人信服的原因之一。

可以在他们的博客上阅读全文:如何说服您的公司选择 Golang?

Hexac 已经从 Python 转换到 Go

Hexac 的联合创始人兼 CTO Tigran Bayburtsyan 写了一篇独家文章,分享了他的公司从 Python 转到 Go 的原因。根据他们的代码库统计信息,在使用 Go 重构了所有项目之后,他们的代码量比以前减少了 64% 。

由于 Go 内置的语言特性,他们节省了大量资源(内存和 CPU )。

Go 为他们的开发团队提供了极大的灵活性,可以在所有用例中使用单一的语言,并且效率很高。在 Hexact 股份有限公司中,他们的后端和 API 服务的性能提高了约 30%。 现在,他们可以实时地处理日志,然后将其传输到数据库;在单个或多个服务中,使用 Websocket 进行流式传输。这就是 Go 语言带来的出色表现。

Salesforce 抛弃 Python 而选择了 Go

在 2017 年推出 Einstein Analytics 之前,Salesforce 使用 Google 流行的 Go 语言完全重构了他们的后端。Salesforce 首席架构师 Guillaume Le Stum 表示:“ Python 并不能很好地完成多线程工作,而 Go 是专为 Google 生产系统中的重型应用程序而构建的,这门编程语言已经通过了 Google 的测试和许可。因此 Salesforce 选择将 Einstein Analytics(Salesforce 的重要组成部分)从混合 C-Python 应用程序转变为完全 Go 应用程序。请阅读原文:我们为什么在 Einstein Analytics 放弃 Python 而选择了 Google 的 Go

Containerum 优先选择 Go

Containerum 是一个使用 Go 作为主要开发语言的容器管理平台,已经有大约四年的历史,尽管面临着某些挑战,工程团队仍然认为这是一个不错的选择。选择在 Containerum Platform 上使用 Go 的主要原因是,它由一组比较小的服务组成,这些服务与其他组件进行通信。为了确保这一点,我们非常需要确保接口的兼容性并且要编写简洁、易于阅读和维护的代码。

Go 支持添加补丁并允许在代码库中使用准备就绪的组件。例如,图像名称解析认证,关键对象模型等,这是 Containerum 选择 Go 的原因之一。

Containerum 之所以考虑使用 Go 语言,是因为它具有许多专业的功能,例如静态类型,语法简洁,标准库,出色的性能,快速的编译等。请阅读原文:我们为什么使用 Go 来为 Kubernetes 开发 Containerum 平台

流行的 DevOps 工具是用 Go 编写的

Kubernetes, Docker, and Istio

像 Google 这样的巨型公司曾经考虑使用其他语言编写 Kubernetes ,但是据 Kubernetes 的联合创始人 Joe Beda 称,这些语言都没有 Go 这么有效。这里有一些关于 Kubernetes 为什么要使用 Go 编写的原因,其中包括广泛的标准库、快速的工具、内置并发、垃圾回收和类型安全等。根据 Joe 的说法,Go 中的这些模式和工具鼓励 Kubernetes 开发团队编写结构合理和可重用的代码,这些代码同时将会为他们提供高度的灵活性和速度。

Docker 是使用 Go 语言的最大用户。Docker 开发团队之所以喜欢使用 Go,是因为 Go 为他们提供了许多好处:无需依赖项的静态编译、自然语言、完整的开发环境、广泛和强大的标准库和数据类型、强大的鸭子类型以及使用最小的代价为多种架构进行构建的能力。

Istio 是 Kubernetes 生态系统的一部分,也是用 Go 编写的。

因为 Kubernetes 也是用 Go 编写的,所以 Istio 使用 Go 进行开发也是一种完美的方法。这不仅是 Go 适应分散的和分布式网络项目的原因之一,也是在 Istio 选择 Go 的主要原因之一。

更多详细内容请访问:证明 Google Go 功能强大的 10 个开源项目

如果您正在使用 Golang 编写应用程序,那么实践 CI / CD 有多困难?这很难,不是吗?

好吧,不是现在。但是借助 Go Center GOPROXY 等最新技术,增长 CI / CD 质量的途径将会变得更加清晰。GoCenter 是不可变的 Go 模块的公共的中央仓库,它允许您搜索模块和版本,也可以轻松地将模块添加到中央仓库,然后公开分享它们。


via: https://dzone.com/articles/why-golang-is-top-of-mind-for-devops-professionals

作者:Pavan Belagatti  译者:sunlingbot  校对:unknwon

本文由 GCTT 原创编译,Go语言中文网 荣誉推出

本文由 GCTT 原创翻译,Go语言中文网 首发。也想加入译者行列,为开源做一些自己的贡献么?欢迎加入 GCTT
翻译工作和译文发表仅用于学习和交流目的,翻译工作遵照 CC-BY-NC-SA 协议规定,如果我们的工作有侵犯到您的权益,请及时联系我们。
欢迎遵照 CC-BY-NC-SA 协议规定 转载,敬请在正文中标注并保留原文/译文链接和作者/译者等信息。
文章仅代表作者的知识和看法,如有不同观点,请楼下排队吐槽


有疑问加站长微信联系(非本文作者))

280

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK