原文链接:thenewstack.io/docker-at-1…
作者:Sam Alba,Dagger 联合创始人兼工程副总裁,曾任 Docker 的工程副总裁。2010 年作为一号职工加入 Docker,带领工程团队并将其规模从 3 人扩大到 100 人。
Docker 最近庆祝了 10 岁生日。我为咱们在 Docker 取得的成果感到非常自豪,团队也持续取得的惊人成果。如果「容器」没能成为新的核算单位,现在许多咱们周围的东西都不会存在了:微服务架构,Kubernetes 等等。当你回忆你生活中严重转折点时,相信你会看到你做对了和没做对的事情,至少对我来说是的。
话不多说,让咱们来看下 Docker 十年的对与错。
三件做对的事
容器改变国际
我 2010 年加入 Solomon Hykes 一起树立 DotCloud(后来更名为 Docker)时,我很快就清楚地意识到,如果只运用当时已有的东西,将永久无法完成咱们的愿景。DotCloud 是第一个支撑一切言语的渠道即服务(PaaS),而 Heroku 和其他渠道依然局限于单一言语仓库。在构建 DotCloud 时,咱们面对的一个应战是缺乏虚拟机(VM)替代品,作为关键基础设施的构建模块。虚拟机相对于裸机是一个巨大的进步,但它们未能供给跨进云原生年代所需的灵活性。咱们需求某种满意轻量的东西,在单个机器上打包数百个开发者的应用之际能够将每个用户隔离在自己的独立命名空间中(核算、网络、存储)。
这标志着微服务形式的开端。虚拟机依然是基础设施可重复性方面最先进技能,而且容器依然是少数爱好者专用技能(记住 LXC 要求内核补丁才能连接到正在运行的容器吗?)。也有人以为处理方案是让虚拟机进行零碳饮食(记住 JeOS 吗?)。对咱们来说很明显,虽然面对诸多应战,但环绕容器构建一切的极力是值得的。终究,咱们证明了自己是正确的。
几年后,咱们从 DotCloud 渠道中提取出一个中心组件:容器运行时(Container Runtime)。咱们对其进行了重写并开源,这便是 Docker 的第一个版本。开端的方针是让 Docker 成为从 DotCloud 中提取出来的众多敞开组件之一。容器编列器和网络层将很快随之而来。但由于 Docker 在前期就受到了极大重视,计划发生了很大改变。
开发者,开发者,开发者
Steve Ballmer 是对的。在 VMware 首要重视处理 IT 问题时,咱们已经意识到改变国际的办法是从全球的开发者开端。你有必要改变软件构建的方法,而不仅仅是怎么运用,这意味着首要满意开发者的需求。作为管理数千名开发者的人,我深知软件开发人员每天面对的应战。这可能是国际上最棒的作业之一,充满了具有应战性的问题和发明美好事物所带来的满意感,但也可能无聊,沮丧,有时还会令人愤怒。
基础设施和东西都有了巨大进步,但标准也提高了。Docker 当时的北极星方针是减少搅扰、降低成本,并使开发者能够高效协作。其间一个咱们最早收买(并)的产品叫做 Fig,开端由 Ben Firshman(Replicate 创始人)和 Anand Prasad 打造,后来整合进 Docker 成为了 Docker Compose。有趣的是,Fig 完成的 YAML 模型(compose.yml)直接受到了咱们多年前构建 DotCloud 服务组合(dotcloud.yml)的启示。虽然咱们取得了很大进展,但还有更多作业要做,特别是超越容器作为仅有单元,并编列容器流水线。这便是为什么咱们在 2018 年开端打造 Dagger 的原因之一,它是一个可编程的 CI/CD 引擎,在容器中运行你的作业流。
出资建设活力的社区
咱们开端专心于树立一个优异的社区。从第一天开端,咱们就深信咱们无法独自完成所追求的方针。这需求赢得许多人的心和思维,而且完成这一点的关键是放弃对很多事物的一切权。DockerCon 成为了这个职业中最优异聪明的人们集合在一起的地方,他们分享事物怎么发展,并乐意支付极力来构建共同愿景。在 Docker 前期,咱们考虑自己组织开发者大会时,听起来乃至有点离谱。这要么是大公司才会准备,要么是针对更老练的开发者社区(例如 PyCon)。
但 2014 年 6 月咱们在旧金山组织了第一届 DockerCon,并将一些才华横溢的开发者集合在同一个地方时,显然它仅仅某个革新之始罢了,将改变 Docker 和整个职业。这种精神至今依然家喻户晓,在数十个(乃至是数百个)开源项目和社区中都可看到。云原生核算基金会(CNCF)如今是其间许多活动的主办方,而且每天还在不断涌现更多新的活动。
三件做错的事
用户 vs. 客户
把社区放第一的背面是,咱们花了太长时刻才树立起一个可持续发展的事务。咱们的偏见是要在揭露通明的环境中极力倾听社区需求,并极力满意他们。这个策略的根基是开源项目和商业专有处理方案能够很好地共存,并成为同一客户旅程的一部分。我今日依然相信这种形式,但它需求一个奇妙的平衡。
首要,你有必要接受一些开源贡献者和用户永久不会成为客户。这没关系,由于他们参加构建了强壮的社区、强壮品牌,从而促进商业渠道增长。其次,产品架构有必要答应在中心开源基础上构建企业级功能。这通常伴随着复杂的支撑和发布流程。咱们当然能够在发明安定事务途径时更加战略性一些。终究咱们完成了方针,但花费了太长时刻,而且常常感到惧怕。
清晰文明
咱们没有在前期清晰定义团队文明和中心价值观,它们后来被社区和后来加入公司的人所定义。这导致咱们的团队文明发生了很大改变,虽然一开端并不明显。Docker 的文明终究反映了社区的风格和价值观,而不是反之。
一个具体的比如是,在咱们公司内有两个独立群体:一个专心于开源和社区,另一个专心于商业,这是我最大的惋惜之一。它演变成为内部东西、产品和项目管理以及团队文明本身上出现不同的思维方法。对任何人来说,平衡这些竞争利益都很难,但当你把人物分开时,就会发生内部斗争、不一致性和难以有定论的争辩(每个人都从自己的角度以为自己是正确的)。很多优异的人在社区作业,但在和商业侧的许多协作中,还是常常会有奇妙(或直接)的评判。有时候感觉是「开源信仰者」与「企业挣钱者」的对抗。这只会导致低效。
一起具有一个充满活力的社区和可持续发展的商业形式所需求的,是一支无时都因这个形式而挣扎,但又能融合在一起的团队。它还能发明更好的团队文明。不管在公司的哪个部门作业,只有一个方针值得重视。
容器作为世界中心
退后一步看时,我意识到咱们过于依赖容器:咱们将容器视为大多数问题的中心处理方案,这使咱们对开发供应链的其他需求变得盲目。Docker 之所以诞生,是由于咱们看到容器将在职业内引发一系列必要的革新,但随着发展,咱们没有重视后续需求,这就为别人留下了许多进入并开辟国土的空间。一方面,这留下了很棒的机会,但也意味着社区的分裂。一个比如是在 Docker 中未能处理的应战之一便是软件供应链彻底自动化。虽然在那个供应链结尾释放了很多价值,但却没有充沛满意开发人员编码和协作的需求,直至今日 CI/CD 依然紊乱不胜。但它是能够处理的紊乱局面。
像 Solomon Hykes,Andrea Luzzardi 和我许多同代人一样,在回忆 Docker 的期间时,意识到咱们所推动的革命还不完整,因而找到了未来十年的方针。
更多资讯,请重视 Bytebase 公号:Bytebase