写点什么

理解原生云基础设施:Justin Garrison、Kris Nova 访谈

2017 年 11 月 09 日

本文要点

  • 原生云基础设施提供了以应用程序为中心的抽象。
  • 运营原生云基础设施不仅仅关乎技术,也关乎创造一种学习文化。
  • 将基础设施想象成代码,想象成你可以运行的一次性脚本,想象成软件、服务。
  • 切记,系统可以不断地改进,但如果不消除瓶颈,那就是在浪费时间。

你是否认为在云上运行虚拟机就是原生云基础设施?不尽然,Justin Garrison 和 Kris Nova 在他们即将出版的新书中做了回答。《原生云基础设施:动态环境可扩展基础设施与应用程序模式》是O’Reilly Media 出版的有关现代基础设施构建和管理的系列指南。为了进一步了解他们提供的建议以及如何依照指南采取行动,InfoQ 采访了该书的作者。

InfoQ:你们在书里明确指出,使用基础设施即服务并不意味着基础设施自然就成了“原生云”基础设施。可以为我们描述下原生云基础设施吗?

Garrison:原生云基础设施是指借助 Chaos 工程构建可靠、有效的应用程序抽象。原生云应用程序在你不控制基础设施时也可以运行。这迫使工程师编写由软件控制的应用程序,并在应用程序中暴露必要的操作钩连点,而不是通过传统的基础设施或者人为过程。

直接使用 IaaS 很难,因为在你无法控制底层技术时会非常的混乱,而且,传统的 IaaS 组件不是供应用程序直接使用的。但你能做到。Netflix 首创的原生云基础设施是通过 VM 镜像并直接部署 IaaS 实现的。我们需要在那种方法和拥有更高可靠性和更好抽象的新技术之间作出取舍。

Nova:Justin 说得对,IaaS 只是提供了 API 的基础设施。原生云是我们在设计这些抽象时所采用的方法的根本转变。

InfoQ:你们写这本书的动机是什么?显然,写一书需要做大量的工作,你们希望达成什么样的目标(除了名声和财富)?

Garrison:我们看到,人们在设法采用或向云迁移时犯了不少错误,我们希望防止人们及企业再犯同样的错误。为什么云不同于基础设施,许多人对此心存疑惑,我们希望向他们展示其他公司的成功案例和模式,帮助其他人学习他们的经验,吸取他们的教训。

我们也希望回馈、发展我们共同的社区。社区越大,就越多样化,我们所有人都会变得更强大。

Nova:我个人喜欢自我挑战。这就是为什么我总是在攀登更多危险的山峰。对我而言,这本书同样如此,它很难,所以才有吸引力。而且,我非常热衷于此事。我在整个职业生涯里逐步积累起这些经验教训,因此,把我的知识用文本的形式封装起来是我能够想到的最好的处理方法了。写作的感觉很好。

InfoQ:按照你们的说法,原生云基础设施是买不来的。你们这样说是什么意思?

Garrison:有的公司设法让你相信,可以通过买一个产品拥有原生云基础设施,这样的公司越来越多。但是,那不是你花钱就可以买到的东西。原生云有很大一部分是由 DevOps 实践发展而来,需要采用新的工作方法以及学习文化才能从中受益。如果你处于一个缓慢变化、严格管控的传统 On-Prem 环境,你可能就无法从原生云基础设施受益。

你应该找出优缺点,自己弄清楚它是否能解决你的问题。我们在书中尽可能地明确了这一点。它不是一颗魔法弹,应用的时候需要做出调整。基于 Chaos 工程构建可靠性,你需要花时间了解系统行为并做出相应的调整。原生云基础设施是买不来的,但你是要花钱的。

InfoQ:你们在书中非常小心,不把解决方案限定在过多具体的产品上。但是在建立原生云基础设施时,“构建或买”,如何选择?一家不从事基础设施平台构建的公司应该自己构建多少?哪些模块最值得购买(或者调整现有的 OSS 产品)

Garrison:现在,大多数原生云基础设施都不需要你自己管理。你的应用程序是否要运行在类似 AWS Lambda、谷歌应用引擎或 Azure 容器服务这样的无服务器平台上,不管怎样,这些是你可以运行应用程序的最大的原生云基础设施。

事实是,如果不自己做些基础设施管理,许多应用程序都无法在云提供的服务上运行。可以的话,就使用已有的服务,如果能满足需要,就使用已有的产品和 OSS 项目,构建基础设施应用程序是最后的选项。不用怕锁定,因为总会有某种程度的锁定。自己构建才是最糟糕的锁定。

InfoQ:在书中,你们重点对“基础设施即代码”和“基础设施即软件”进行了区分。请说明下你们那样做的意图及那样区分的重要性。

Garrison:至于他们之间的差别,当 Kris 第一次告诉我她的想法时,我就非常喜欢!“基础设施即代码”是从配置管理发展而来,描述如何配置一台单独的服务器,现在仍然是描述 Terraform 模块,说明应该如何准备基础设施。但是“即代码”往往意味着范围限制(如一台服务器)或仅有某个时候可用(不是随时可用)。

“基础设施即软件”则是试图在代码的基础上更进了一步,确保它随时可用(字面上讲,软件是可运行的代码),它使用协调器模式运行,我们在书中做了详细的介绍。基础设施应用程序需要不断地推动基础设施向理想状态发展。我们从 Terraform 的工作过程和 Kubernetes 的控制器中就可以看到这种模式的例子。你并不一定要编写基础设施应用程序,但你编写时应该使用这些模式。

Nova:基础设施即代码是单向操作的,而且是一次性的。基础设施即软件是双向操作的,而且一直运行。我把基础设施即代码看成是可以运行的一次性脚本,而基础设施即软件是服务。例如,某种你可以执行systemctl start myInfrastructureAsCode这种操作的东西。在方向上,基础设施即代码通常是只读的(像 Terraform),而基础设施即软件是正在运行的软件与用户想要的声明状态之间的一种协定。基础设施即软件经常会修改数据和基础设施。

InfoQ:你们似乎都强调“原生云基础设施”和公有云相关。在私有环境实现可行吗?值得吗?

Garrison:可行吗?当然。许多公司都这样做,据我所知,其中有几家实际上还挺满意。值得吗?要看规模和需求。在公有云上运行基础设施不只是能获得技术优势。事实上,与本地服务器相比,公有云可能存在技术上的不足。VM 可能更慢,网络的可配置性可能比较差,成本可能看上去比购买服务器更高。

公有云的一个主要好处来自流程而不是性能。你成了基础设施消费者,而不是基础设施构建者,虽然节省的人员工时很难计算,但那很可能促成一种新的工作方法,其好处远远大于公有云的技术局限。不用说,世界上最好的基础设施构建人员和维护人员有些就在公有云提供商那里工作,他们背后的公司每年都在基础设施构建、研发和新特性上花费数十亿美元。

自建云最大的考虑不是构建私有云需要多大的代价,而是维护私有云需要多大的代价(比构建成本高出许多)以及当私有云落后于公有云产品时会有什么后果。即使你今天构建的东西在技术上是领先的,那么你认为三年之后会怎么样?五年之后呢?

你还需要记住,云原生基础设施基于 IaaS 构建。因此,在构建了自己的公有云之后,你仍然需要创建一个可用的平台供应用程序使用。你知道,这才是企业关心的东西。

InfoQ:有些读者,他们的基础设施大部分由人工操作,只有少量的自动化。对于这些人,您建议他们在哪方面投入时间?他们会从哪里看到最大的价值?

Garrison:这个问题很难回答,因为每个应用程序和基础设施都不同。根据我们的经验,一般来说,采用类似 Kubernetes 这样的容器编排工具是对企业运行应用程序的方式影响最大的情况之一。Kubernetes 不是一个基础设施提供程序,而是基础设施之上的一个抽象层,它强制操作人员放弃一些对应用程序运行方式的手动控制。

不管是在本地手动配置 Kubernetes 节点,还是使用类似谷歌容器引擎这样的托管服务,让软件(Kubernetes 控制软件)管理软件(应用程序)都会给你带来巨大的好处。

Nova:开始调整。我编写了一个 terraformctl 示例,其中包含人们开始时可能想做的事情,但是,我最大的建议是,如果某件事做起来很难,让人想退缩,那么你就应该坚持做下去。我要鼓励人们走出他们的舒适区。

InfoQ:反过来,对于那些已经推动原生云基础设施的,他们下一步应该做什么?他们该做些什么改善来驱动价值?

Garrison:在写这本书时,我们做了许多研究,和许多人聊过,他们之前一段时间已经对此做了界定。他们中每个人似乎都对基础设施的下一步目标有不同的计划,但在许多情况下都可以归结为两件事。使用 DevOps 和精益实践部署、学习、迭代,并快速失败,总是着手处理系统的瓶颈。系统优化是无穷无尽的,但如果不消除瓶颈,就是在浪费时间。确保基础设施能够让工程师尽可能快地部署正确的东西是一个不错的目标。这包括部署应用程序,也包括基础设施。

在所有这些系统中,人是最重要的,时间最有价值。对此,你可以无限优化,而你从中获得的好处可能比你能实现的任何技术解决方案都更有价值。

关于受访者

Kris Nova 是微软的一名高级开发总监,主要负责容器和 Linux 操作系统。她以开源为生。她尊崇软件利益的最大化,遵循设计过程的开诚布公。她是一名后台基础设施工程师,立足于 Linux 和 C。她是 Kubernetes 的维护者,kubicorn 的创建者。其中,后者是一款成功地 Kubernetes 基础设施管理工具。她组织了一个特别的 Kubernetes 兴趣小组,并担任社区的负责人。她深知人们对于通过分布式原生云应用程序运行原生云基础设施的不满,关于这个主题,她正在写一本将由 O’Reilly 出版的图书《原生云基础设施》。

Justin Garrison 热爱社区,热爱开源。他不是流行词爱好者,但热衷于发现技术趋势背后的模式和收益。他经常分享自己的发现,并设法通过实践课程和独特的示例来传播知识。他是许多社区的活跃成员,总是不停地追问现状。他总是乐此不疲地学习新东西,并把学到的东西回馈给教了他很多东西的社区。

查看英文原文: Understanding Cloud Native Infrastructure: Interview with Justin Garrison and Kris Nova

2017 年 11 月 09 日 16:29816
用户头像

发布了 1008 篇内容, 共 308.1 次阅读, 收获喜欢 272 次。

关注

评论

发布
暂无评论
发现更多内容

【第四周】命题作业——大型互联网系统的技术解决方案和手段

三尾鱼

极客大学架构师训练营

第四周学习总结

天之彼方

大型网站技术架构--概述

wei

架构师训练营第四周学习总结

赵凯

互联网架构设计

一个典型的大型互联网应用系统使用了哪些技术方案和手段

史慧君

架构师训练营第4周作业

aoeiuvzcs

第四周总结

安阳

架构师训练营 0 期第四周

Blink

【极客大学】【架构师训练营】【第四周】学习总结

NieXY

极客大学架构师训练营

想解耦必分层

菜根老谭

程序员 架构思维 分层思维

week3课题作业

如何做互联网系统架构

dapaul

极客大学架构师训练营

大型互联网系统技术总结

dapaul

极客大学架构师训练营

架构师训练营第四周作业

极客大学架构师训练营

架构师训练营第四周总结+作业

林毋梦

架构师训练营第 4周 _ 课后作业

方舟勇士

课程作业

系统架构知识总结

史慧君

关于系统架构学习总结

imicode

架构师训练营第四周总结

Geek_2dfa9a

week04总结

seki

架构师训练营总结 -4

River Tree

学习 极客大学架构师训练营

大型互联网应用系统使用技术方案和手段

wei

week04作业

seki

第四周-命题作业

天之彼方

Redis系列(四):天天用着Redis集群,主从同步该知道吧?集群工作原理是否需要了解下?

z小赵

Java redis 高并发 高并发系统设计

第四周作业

安阳

架构师训练营第四周作业

Geek_2dfa9a

架构师训练营第四周课后作业

赵凯

高并发 高并发系统设计

架构师训练营第 4 周 _ 学习总结

方舟勇士

课程总结

架构师训练营 第四周 学习总结

亮灯

Homework- 典型的大型互联网应用系统

River Tree

Homework 大型互联网应用系统

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

理解原生云基础设施:Justin Garrison、Kris Nova访谈-InfoQ