对于那些刚开始接触微服务的个人和小团队,或者是那些第一次向微服务迁移的较大组织,也许长期以来他们没有操作一定规模微服务的学院知识,但是 Go kit提供了一些指导方案。我已经分享了我能够想到的和犯过的有关微服务方面的错误,并尽力确保用户在使用Go kit时不会犯同样的错误。
InfoQ:您给Go kit定位的是哪类开发者/组织?
Bourgon:Go kit的目标是使Go语言成为现代企业业务逻辑微服务上的一种可行的选择。这是我给自己制定的一个长期目标。我的意思是像SoundCloud、 Spotify、Hailo、37Signals、Bit.ly、Imgur、Secret等这些公司包括Netflix和Twitter这样的大型组织,这些通常都是消费者导向、技术驱动的公司,受激励而成长。这些激励措施驱使它们要承担一定的技术风险,当这些风险转变成好的结果时,它们也为软件行业奠定了基调。 现在许多我们认为理所当然的想法 ——像不可变的基础设施、或者开发/运维、或者函数式反应编程——往往都是在这样的现代企业一开始以实验而开展的。我想给Go一次成为这种成功案例的机会。
也就是说,Go kit被设计成恰到好处的按比例缩小。如果你是一名黑客,致力于自己项目,Go kit将给你提供一个非常好的引导体验。如果你们是一个小的团队,已经建立了一些自己的服务,Go kit可以加入而不引起大的变更和中断。
InfoQ:Go正日益成为一门受欢迎的语言,可以用来编写微服务促进科技,比如Docker、Kubernetes和HashiCorp基础设施工具集。您为什么认为Go语言会在这里大展身手?
Bourgon:的确,Go正快速成为云基础设施语言。我想其中很多跟工具链有关; 毫不夸大地说在单个 Go语言里,拥有这样一种编译器,可以为各种现代化平台生成体积小的、静态链接的、本地可编译的执行文件是一件美妙的事情。仅仅是Go的这种单体属性让其在很多基础设施工具面前有着很大的吸引力。
除此之外,我认为Go实际上是编写多线程(即并发性)网络服务器语言的首选,它让编写多线程网络服务器不再是一种剧痛。正因为这种原因,我是为数不多的一些从C++转了过来开发者。 Go 处理并发性的方法——事实上,它被完全内置到语言内,但花费了大量的精力实现了功能的简洁,并正交于其它语言——在2009年这是一个启示——在我的印象里,直到今天它仍然是无与伦比的。
InfoQ:哪种方式是感兴趣的InfoQ读者能够参与或为项目贡献的最佳方式?
Bourgon:Go kit仍然是一个新兴的项目,还有很多工作需要完成,可以向很多有趣的方向发展。可以这么说,Go kit的未来是光明和广阔的,任何有兴趣参与贡献的人都可以在底层加入进来。你可以通过 github.com/go-kit/kit 检查GitHub资源库来查看项目当前的状态,可以通过查看 issues页面 了解我们的近期路线图。
我们在 有一个邮件列表,那是一个广泛讨论和传播设计思想的好地方。并且我们在 ongophers.slack.com 网站的#go-kit频道有一个活跃的社区。如果你有什么问题或者好的建议,那是能联系到我,或者是任何一个贡献者和用户的最佳地点。
InfoQ:Peter,感谢您今天的参与。您还有什么想跟我们InfoQ读者分享的吗?
Bourgon:如果有人阅读了这篇采访,并且在他们的组织已经构建了此类项目,愿意分享你的意见、或者故事,我很乐意聆听。请来Slack网页我们的专有频道,给我发电子邮件,或者在Twitter上联系我 @peterbourgon 。
而且,尤其是如果有人阅读了这篇采访,并乐意在他们的组织里采用Go kit,但是还需要一些特定的功能,或者对某一集成的工作方法还不太确定,请一定跟我联系。我很乐意跟你携手构建任何你想要的模块,并给Go一个机会展示它的实力。
谢谢你邀请我!
Bourgon关于Go kit的演讲视频近期将可以在 Golang UK会议 网站上下载,更多有关Go kit的信息请参考 该项目的网页 和 GitHub资源库 。
查看英文原文 : Building Microservices with Go and ‘Go kit’:Peter Bourgon Q&A