Docker之父Solomon Hykes谈项目开发的初衷和挑战
英文原文: The New Stack Makers: Docker Creator Solomon Hykes
时至今日,Docker 的谈论已随处可见,这个极具人气的开源项目让人们可以使用软件容器自动化应用程序的部署过程,受众多 IT 巨头喜爱。近日,Luke Lefler 在 The New Stack 上总结了 Docker 之父 Solomon Hykes 的主题演讲,描述了 Docker 创建的原因和环境。
以下为译文:
在 New Relic 的 FutureStack14 Conference 会议上,Docker 之父兼 Docker 公司 CTO Solomon Hykes 的主题演讲总结了 Docker 创建和发展的环境与原因。
Solomon 指出,当下的分布式应用程序已与互联网密不可分,机构们期望不管有多少用户,无论在任何设备上,这些程序都随时随地的可用和运行。而着眼应用程序,它们必 须具备足够的弹性、互操作性,并可以被大规模扩展。越来越多的开发者不仅需要满足眼前需求,还需要建立复杂且通常被广泛采用的下一代应用程序。
这个工作并不简单,特别在那些不能应对这些挑战的老平台上。当开发者碰到难题时,简单的给 Andriod 或 iOS 朋友打电话这个途径已经行不通了。
工具解决方案必须解决开发者面对的最大挑战——应用程序不再只运行在一台计算机上。这个解决方案需要将逻辑软件组件和底层基础设施拆分,因此当主机发生故障、升级或者在其他环境重部署时,服务总是随处可用,独立于之前的基础设施环境。
大的技术公司,比如亚马逊、苹果、谷歌和微软,往往会长期给自己内部堆栈投入大量时间和资源,而余下的机构只能东平西凑一些开源工具,并苦苦支撑。Solomon 感慨道:
这给人的感觉是一盘散沙。开发者无法义正言辞指着某个东西说,‘这就是我构建的基础,这就是我的平台’。正是这种情况启发了我们,共同着手定义和建立一个满足需求的平台,并且可以长期从中取乐……
“不只运行在一台计算机”可以拆分成一系列问题,每个都需要被单独处理。在 Docker 发布之前,Solomon 和他的团队罗列了这些问题,并致力解决。
它们首要解决的问题就是封装(packaging)和分发(distribution),没有一致性的封装方法,给打上了标签的软件更换操作系 统、设备或者数据中心必然会导致不稳定因素产生。为此,他们不得不通过现存技术打造一个标准格式:一个始终如一的容器,一个可以移动,payload- ready 的 Docker 容器。第二个问题就是沙箱运行时,如何在不同的机器上执行这些 payload,并产生一致的、可预期的结果?这两个问题定义了大部分的 Docker 发布前的工作,也让这个项目坚如磐石。
其他问题的解决则承诺了一个令人激动(及繁忙)的未来。Docker 聚焦网络上的困境,在简单的工具上让开发者可以完成应用程序多个组件与依赖服务之间的连接。
“你有多台主机,但是你想用一个通用的方式进行交互”,Solomon 通过这个思想解决了集群问题,“你抛出了各种各样的技术,而我们试图将它们连接到一起,并且提供一系列的接口让用户可以简单的利用”。同样的问题出现在组 合中,这里需要将多个逻辑组件合理、版本化的连接到一起,并进行整体的测试。
“当你跨多个复杂的基础设施部署复杂的分布式应用程序时,问题很快就会产生,特别是在安全、稳定及控制程度要求比较高的生产环境中。在这里,开 发者需要确切的控制运行进度,确切的知道建立者及清楚谁提供了某个部分……,追溯到你熟知并信任的源代码、组织及开发者。”Solomon 解释在部署过程中进行每个部分 cryptographically-enforced 身份校验的关键挑战:“这与授权问题相辅相成,使用一个连接到基础设施的层来实现应用程序每个组 件的访问控制。”而在 IT 部门中,授权一直是一个比较热门的话题。
Docker 的 IRC 频道一直很活跃,汇聚了数十个来自不同公司的工程师,其中有些人是首次贡献到一个开源项目,而有些则是期望为岌岌可危的项目寻找一线生机。
为了建立这个雪球效应,将越来越多的人才和资源吸引到这个项目,建立这样一个印象非常必要——“it’s going to happen, with or without you”。
然而,如果所有出现的规格和变化都被接受,那么项目就没有任何可提升的余地。Solomon 强调,大家都期望松耦合工具,因此需要将许多个体工具(往往使用最简单的途径解决一个问题)整合成一个新的工具,这个过程中整合的解决方案被称为 “scale by composition”。这个组合必须使用标准接口,因此未来的贡献者可以非常便捷的参与到这个工具集的扩展,这种标准为所有人所 接受。
“我们一直贯彻着 Unix 设计原则,这个原则曾帮助了 Unix 系统的实现,30 年后,我们将这个原则应用到了 21 世纪出现的问题。”非常受大家欢迎,Solomon 说。
“建立一个为所有生产软件共有的系统,使用一种被广泛接受的方式,让它可以很好的运行和扩展,让它可以被所有人依赖,然后将它视为理所当然的存在,并使用它创造自己的奇迹,这是个挑战。”