出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
您获悉了一个很棒的新流程或是新工具,知道它可以帮您直击痛点,而且它确实可以解决某种需求。如果可以恰当的推出它,可能会改变游戏规则。您通过自己的努力完成了调研,并亲自测试了它,运行了一个简单的 PoC (概念验证)并解决了相关问题,您觉得现在是时候进行广泛的推广并扩展到全公司。当您发出通知告诉大家这个新流程或是新工具即将上线使用时,几乎没有人使用它们。究其原因是因为团队不确定或对迈出第一步感到焦虑。这种现象就是我所说的“接受焦虑”,这里有一些技巧帮助我成功地将容器即服务(Container-as-a-Service, CaaS)平台引入到企业规模的公司。
牢记您的目标
自己想出的点子,一定会认为它是最棒的。但仅仅因为某件事对您来说很重要,并不能保证您的解决方案会转化为其他人的解决方案。我们要遵循互惠原则 —— 当有人为我们做了某件事,我们天生就会被迫为他们做一些事情作为回报。
第一个建议:问问客户:“您想做什么?”
如果您的客户能够明确哪个工具和策略能够实现他们的愿景,那么他们就不会与您交谈了。如果问题是“您需要什么?答案可能是“我需要“X”工具的设置与“Y”的配置,就像我在“Z”的 GitHub 帖子中看到的那样。但是,如果问题是“您想做什么?”,那么您将更好地了解客户的目标以及了解如何调整您的解决方案来实现客户的目标。
当向我们的开发团队提出“您想做什么?”这个问题时,答案是他们希望能够更快地创建原型、更好地控制自己的基础架构并且使用自动化测试(CI / CD)进行代码推送。
在此之后,我们的团队使用了容器化解决方案,拥有了几乎完全自主的环境,并能够充分利用全自动的 CI / CD 管道。现在,不是我们的团队试图将我们的解决方案推广给其他的开发团队,而是其他的开发团队向我们询问,他们需要做些什么才能加入并使用这个系统。结果是,不仅其他的开发团队被说服使用我们的策略,他们还开始帮助我们开发自动化。这种转变是因为我们一开始就询问如何帮助他们解决目标。
推进的目的
当我们第一次开始研究容器时,说我们什么都不知道并不夸张。容器是新的热门,Docker 是可以让我们所有的 DevOps 梦想成真的黑魔法。我学习了所有关于集群架构、etcd、rethink 和 raft 的知识,但创建第一个 Dockerfile 可能还需要几个月的时间。这是为什么呢?因为我读过的有关容器的所有内容都告诉我他们将会改变游戏规则,我很害怕学习 Dockerfile “语言” 需要花费很多时间(想想 AWS CloudFormation),以至于我没时间关注制定整体的 CaaS 战略计划。最后我请了一位同事向我展示他们编写的 Dockerfile,并向我介绍语法(再次考虑 AWS CloudFormation),这是他们向我展示的Dockerfile:
我的天!Dockerfile 只需 3 行代码可以支持一个 web 服务器。突然之间,我确信为之努力的战斗已经胜利了。
第二个建议:与他们一同迈出第一步
不要寄希望于一两封邮件就可以让大家相互理解,不要等待团队从零开始起步。相反,花时间举办一场研讨会或一对一坐下来向他们展示如何入门,实际上比他们想象的要简单得多。通过花费30分钟创建第一个 Dockerfile 文件开始,开发团队就会有信心使用容器。在我们采用这种研讨会的方法之前,开发团队可能需要数周或数月才能开始尝试创建他们的第一个容器。当开发团队在 Docker 中运行了第一个 Prod 实例之后,他们开始对使用容器和 CI/CD 产生了浓厚的兴趣。而且,一旦开发团队将其第一个应用程序容器化后,他们就能够在短短几天内教授其他团队成员如何迁移新的应用程序。
不要好高骛远
据估计,在14世纪,黑死病已造成欧洲30-60%的人口死亡。总的来说,瘟疫可能使世界人口从估计的4.5亿减少到3.5 - 3.75亿(维基百科)。在21世纪,“病毒式传播”在传播能力上与黑死病类似。同样,我们的推广计划是在公司内部进行有机传播,直到项目像病毒一样扩散开来。
最后一个建议:有节奏的增长,在自己适合的深度游泳
由于没有使用Docker、Swarm 或 CI / CD 的经验,所以我们采取小步快跑的迭代步骤而不是一开始就排列出完美的步骤。我们从一个小型 PoC 小组开始,我们知道他们对新技术充满热情。我们从处于新开发阶段而非关键业务的应用程序开始。在将这些应用程序投入生产之后,我们引入了另一个试验小组来测试我们第一波创建所使用的流程和自动化。从这些团队的探索中,我们创建了示例和参考架构,以培训新团队使用 Docker。现在我们有大约50个开发团队和400多个应用程序都在我们的 CaaS 平台中使用 CI / CD。在这些团队中,85%的团队能够在不需要我们团队帮助的情况下将额外的应用程序带到平台上生产,并且能够教授他们周围的团队使用 CI/CD 在 Docker 中设置他们的应用程序。在6个月的 PoC 中,我们有了两个开发团队,现在 Docker 已经成为我们公司首选的运行时环境,每周都会有有1到3个新团队加入。进入 2019 年,我们准备应对将数千个旧的应用程序迁移到 Docker 的挑战,我们相信这在很大程度上是因为这种分阶段的方法,使得我们能够保持势头,同时永远不会让项目脱离正轨。
如果您已经实现了您的愿景,那么我希望您能从这些建议中找到一些有用的东西。如果您是 Docker 新手,在发现阶段或等待决定 Docker 是否适合您的解决方案时,我能给您的最好建议是勇敢的迈出第一步!