【CSDN 编者按】开源与商业化是开发者社区老生常谈的话题,尽管如此,对于 Docker 来说,想要平衡“开源信仰者”与“追逐商业利益者”之间的关系与管理,依然是其早期犯下的一大错误。
作者 |Sam Alba
翻译工具 | ChatGPT 责编 | 梦依丹
出品 | CSDN(ID:CSDNnews)
今年是开源容器平台 。在 2013 年 3 月,Docker 发布首个版本,为应用程序的部署和管理提供了一种轻量级、可移植和可扩展的解决方案。自那时以来,Docker 快速发展并获得了广泛的应用和认可,成为容器化技术领域的领导者之一。
近日,曾担任 Docker 副总裁,并且是 1 号员工的 Sam Alba 发布了一篇主题为《Docker 十年回顾,做对的三件事与做错的三件事》的文章,总结 Docker 在过去十年的所取得的成绩与一些错误决策。本文基于原文进行编译。
三件正确的事情
容器改变世界
在 2010 年,我与Solomon Hykes(Docker 公司创始人兼 CTO)共同创建 DotCloud(后来更名为 Docker)时就意识到,我们仅仅使用当时存在的工具将无法实现我们的愿景。
DotCloud 是首个支持任何语言的平台即服务(PaaS),而 Heroku 和其他平台当时仍然仅限于运行单一语言堆栈。
在构建 DotCloud 时,我们很快就遇到了第一个挑战,即缺乏替代虚拟机(VM)作为基础设施的关键构建模块。相对于裸金属服务器,虚拟机算是基础设施领域的一大进步,但其无法提供进入云原生时代所需的灵活性。
我们需要一种轻量级的解决方案,它能够在一台机器上隔离每个客户的计算、网络和存储空间,同时又能在同一机器上承载数百个开发者的应用程序,这是微服务开启的标志。
彼时,虚拟机在基础设施的可重复性方面仍处于最先进的状态,而容器仍然是一种只有少数爱好者使用的晦涩技术(还记得 LXC 需要内核补丁才能连接到运行中的容器吗?)。其他人认为解决方案是让虚拟机进行零碳水化学(还记得JeOS吗?)。尽管当时的我们面临着种种挑战,但我们依然清楚地认为,围绕容器构建一切是值得付出努力的。
开发者,开发者,开发者
微软前首席执行官史蒂夫·鲍尔默是正确的(在任期间曾强调软件开发人员是改变世界和推动创新方面的重要力量),VMware 主要致力于 IT 问题,而我们非常早地就意识到,要想改变世界,首先需要关注全球的软件开发人员,了解他们的需求及面临的挑战。他们的工作充满了既充满挑战,又是需要创造精彩作品,而日常可能在乏味的代码中度过。
随着基础设施与工具的提高、进步,软件开发者人员的标准也相应提高了。
在 Docker,我们的目标是减少干扰和开销,让开发人员能够高效地工作和有效地协作。我们最早收购并集成为产品的是一个叫做“Fig”的产品,后来成为 Docker Compose,最初由我们的开发人员 Ben Firshman 和 Anand Prasad(Docker 创始成员之一) 开发,而现在的 Ben Firshman 是 Replicate 创始人。有趣的是,Fig 采用的 YAML 模型(compose.yml)灵感来自于我们几年前构建的第一个 DotCloud 服务组合(dotcloud.yml)。
尽管我们已经取得了重要的进展,但在这个领域还有更多工作要做,特别是要超越将容器作为唯一的单元,实现对容器流水线的编排和管理。这正是我们在 2018 年推出 Dagger 的原因,它是一个可编程的 CI/CD 引擎,可以在容器中运行你的流水线。
建立一个伟大的社区
从一开始,我们就坚信无法独自实现我们的目标。我们需要赢得众多人的支持和认同,而实现这一点的关键是放手许多事物的控制权。
DockerCon 成为了我们行业最杰出、最聪明人聚集的地方,拥有共同愿景的人聚集在一起,大家分享事物如何发展,并且愿意积极参与其中去建设它。
在 Docker 初期,当我们考虑自己举办开发者会议时,这听起来像是一个无法实现的梦想。这种活动通常是为大型企业或更成熟的开发者社区(如PyCon)所举办的。然而在 2014 年 6 月,我们在旧金山组织了第一届 DockerCon,并成功汇聚了一批才华横溢的开发者,这使得这个梦想变得可行,它成为了改变整个公司和行业面貌的起点。
到今天,这类活动在我们行业中的数十个(甚至数百个?)开源项目和社区中仍然保持着强大的影响力。如今,云原生计算基金会作为许多这些项目的主办方,而且每天都有更多新活动在进行。
三件错事
开源与盈利
在以“社区为先”的理念基础之上,我们花了很长时间构建了一个可持续业务。我们倾向于在公开的环境中与社区用户互动,并倾听他们的需求,努力为社区提供最佳的解决方案。
最初,我们的策略是让开源项目和商业专有解决方案和谐共存,即通过开源项目吸引用户,建立起强大的社区和品牌,然后将一部分用户转化为商业客户。
尽管我至今仍然相信这个模式,但想要它们达到平衡是非常复杂的。首先,我们必须接受一些开源贡献者和用户永远不会成为我们的客户,但这并没有关系,因为他们参与建立了强大社区和品牌的过程,进而为商业增长做出了贡献。其次,产品架构必须允许在核心开源基础上构建企业级功能,这通常需要复杂的支持和发布流程。在我们努力打造稳固业务的过程中,我们确实可以更加战略地规划路径。
最终,我们实现了目标,但这花费了太长时间,并且常常让人感到不安。
团队文化
早期,我们没有定义团队文化和核心价值观。团队文化的形成则是由社区或后加入公司的成员所确定,这导致我们的团队文化与早期发生了巨大变化。
一个明显的错误是在公司内部形成了两个不同的团队,一个专注于开源和社区,另一个专注于商业,进而导致了内部工具、产品和项目管理,以及团队文化的分裂。
对于任何人来说,平衡这些相互竞争的利益都很困难,但当你将角色分开时,就会出现内部斗争、不一致和无法解决的公开辩论(每个人都从自己的角度认为自己是对的)。
许多优秀和聪明的人更愿意从事社区方面的工作,在合作中,常常会出现对另一方微妙的评判。有时候感觉就像是将“开源信仰者”与“追逐商业利益者”对立起来。这并不是一个好现象,要想拥有充满活力的社区和可持续的业务,就需要有一个整合的团队,每个人都要面对我们模式所固有的紧张关系。这也有助于塑造更好的团队文化。无论你在公司的哪个部门工作,只有一个共同的目标需要关注。
容器作为宇宙的中心
回顾过去,我意识到过于依赖容器,并将它作为大部分问题的核心解决方案是错误的,其中忽略了开发供应链中的其它需求,也没有专注于后续需求。
因为未能满足众多需求,所以给后续的其他人员留下了大量带填补的“坑”。这既带来了巨大的机遇,也导致了社区的分化。在 Docker 上未能解决的一个挑战是软件供应链的整体自动化。虽然我们在供应链的末端创造了很多价值,但我们没有充分满足开发人员在编码和协作过程中的需求,导致如今持续集成和持续交付仍然一团糟。然而,这个问题是可以解决的。
与 Solomon Hykes 和 Andrea Luzzardi 一样,当回顾在 Docker 的时光时,我们意识到革命尚未完成,因此我们找到了未来十年的新目标。
作者简介:
Sam Alba,目前是 Dagger 的联合创始人和工程副总裁,曾在 Docker 担任工程副总裁。他于 2010 年成为 Docker 的第一名员工,并领导工程团队的发展,将团队规模从 3 人扩大到 100 人。他在 dotCloud、Hipache、Docker、OpenStack Nova 和 dockerclient 等项目上都有贡献。”
原文链接:https://thenewstack.io/docker-at-10-3-things-we-got-right-3-things-we-got-wrong/