目录

我猜 DevStream 没人会用,除非……

DevStream 当年立志要成为一个 DevOps 工具链管理器,高举“灵活”和“自由”的旗帜,呵,我想教育下这些人!

封面:月亮弯(金沙江第一弯)。

你们还记得 DevStream 吗?

记得是去年3月,我看到有人到处在说:“我们要做一个 DevOps工具链管理器!实现 DevOps toolchain as code!……” 。我的脑海里不禁闪现罗永浩扬言收购苹果的画面:

/dtm-mvp-prfaq/lyh.gif

那时候我在的研发团队小几百人,光 DevOps + 运维就有四五个,也算得上是“家大业大”了。有一天,我偶遇 DevOps 部门的老大,和他嘟囔了一嘴:“大神,你听说 DevStream 了吗?好像他们要把 DevOps 工具链搭建的事情自动化掉!这样你们以后就失业啦!”

大神呵了一声,不屑地告诉我:“DevStream 嘛,我试用过的啦。他们可能没有想明白,一百家公司用 Java,用的是同一个 Java;一百家公司落地 DevOps,落地的是一百种 DevOps。标准化都没有,谈何自动化?况且我学习 DevStream 不需要时间啊?我有空学着写 DevStream 的配置文件,然后用 DevStream 来部署 Argo CD,我干嘛不直接看 Argo CD 文档,然后用 Helm 来部署?多一层封装就多一层错误啊,年轻人!”

大约过了两三个月,我看到 DevStream 加入了 CNCF,这速度确实有点快。于是我还是忍不住加了 DevStream 用户群,尝试进一步了解一下这个工具。也就是那时候我认识了 DevStream 的 PMC 成员胡涛,不过我并没有和他聊太多,只是隔三差五看到他在群里发一堆消息。当然我也没有真正去用 DevStream,只是在默默关注着 DevStream 的动态。

我猜 DevStream 没人会用

有一天我脑子里突然闪过一个念头:DevStream 应该没有人会用吧!

离职创业

前不久,我离开了老东家,创业去了。我是一个日撸千行那种骨灰级 Javaer。和我一起出来干的还有2个骨灰级前端开发工程师(他还是一个巨牛的 UX)和2个比我还骨灰的 Javaer。我们5个“码神”凑一起简直“摧枯拉朽”!我们要一起做一个贼牛的 web 应用!

/dtm-mvp-prfaq/wd.gif

怀念老东家的工具链

没过几天,我们就开始怀念老东家的“DevOps 工具链”了。那时候我们只需要专注于自己的业务,每次代码一提交,GitHub 上的 Actions 就会自动运行,一堆 CI 流程会帮我们解决代码扫描、自动化测试、镜像构建等等工作,然后包含最新业务代码的容器镜像就被自动推送到 Dockerhub 上了。接着公司的 Argo CD 又会自动将这个最新版本的镜像拉到测试环境,以容器化的方式跑在 k8s 集群里,然后我们就可以从浏览器里访问到自己开发的应用,看到刚刚提交的新代码是啥效果了,好和谐啊!

DevStream 还是帮不到我

“大神”不需要 DevStream,我本来以为离开了“大神”之后我应该会需要 DevStream。

单飞后我终于需要亲自关注 DevOps 工具链的问题了,但是我不想花时间去慢慢研究 k8s 啊,Helm 啊,Argo CD 啊,GitHub Actions 啊,这啊,那啊…… 我只想研究 Java,研究我的 web 应用如何给用户更好的体验,如何支撑更大的并发度…… 但是 DevStream 宣传的“既xxx又xxx”属实让我头大。什么既可以选择 Jenkins 又可以选择 Argo CD,既可以选择虚拟机部署又可以支持容器化部署,然后又告诉我每种选择可以怎样怎样配置……

我看着 DevStream 大几十行的配置文件,看着 DevStream 里的各种概念,什么“状态、后端、应用、插件、工具、实例……”。我是个 Javaer,不是运维,更不是 DevOps 工程师!我擅长的是写 Java 代码,不是研究各种稀奇古怪的新工具!我就是搞不懂 Argo CD 这些工具,也懒得去花精力研究,才想要找 DevStream 这类工具。然后你告诉我你可以“自动化”部署,那你倒是自动化呀,让我啥都不需要配置就能把工具链拉起来啊!别和我扯灵活啊自由啊,我不需要!我用 DevStream 还是得写20行配置,而且要理解额外的新概念,那我干哈不直接去学习 Argo CD 啊!

我又想起“大神”对“自动化搭建 DevOps 工具链”的不屑一顾,他是自己啥都懂,不需要也不信任这类“工具的工具”;而我们这些非 DevOps 专家也同样不喜欢 DevStream,因为 DevStream 还是太难用了。

垃圾 DevStream,我要去怼他们 PMC

我花了半天时间研究 DevStream,但是我想要的 DevOps 工具链还是没有出现在我的面前!显然 DevStream 面向的不是我这种没有 DevOps 实操经验的“开发者”。但是“大神”不是也说了他们这种“DevOps 专家”不需要 DevStream 的嘛!所以 DevStream 面向的是谁?面壁吗?真是让人火大!

/dtm-mvp-prfaq/fh.gif

我在微信群里找到了胡涛,在开怼之前,我还是礼貌性地先和他说了我的需求:

首先,我是一个 Javaer,我们团队没有 DevOps 工程师,也没人想研究 DevOps 工具链。

我们要开发一个 Java web 应用,最后准备部署到阿里云 ACK 上。在开发过程中,我们希望有 CICD 可以用,能够实现:

  1. 在代码提交的时候自动化跑一些 CI 流程,完成自动化测试、代码扫描、镜像构建等工作;
  2. CI 成功的话镜像要自动推送到 Dockerhub 上;
  3. 镜像有了之后,我希望它能自动部署到一套测试用的 k8s 集群里;
  4. 后面每次提交代码到 main 分支时,我希望这套 k8s 集群里的容器会自动更新;
  5. 这里用到的 k8s 集群、Argo CD,我希望能够在本地 PC 自动化部署,因为 PC 算力闲置,买云服务要额外花钱;
  6. 这个工具链部署过程我不希望写一行配置文件,不希望学习一个新概念,我需要傻瓜化的交付流程;
  7. ……

我说了一堆的想法,然后准备在最后补一句“如果 DevStream 能够做到这些,那我立马就变成 DevStream 的铁杆用户!但是我知道 DevStream 现在做不到,所以……”

还没等我开喷,胡涛打断了我,说了句:

你这个需求吧,这样,给我1天时间,我做一个“Interactive CLI 工具”给你,无感地帮你在本地完成工具链的搭建。

我:

一天?

胡涛:

对,一天;不过一天时间不是给你一个 production ready 的正式版本。

一天之后我们给你一个 mvp 版本,基本包含你说的这些能力,你试用下,如果满意,我们再花些时间朝着这个方向开发一阵,让 DevStream 完善地支持“傻瓜化、零配置地在本地拉起 DevOps 工具链”。

他居然不给我“怼”的机会。好吧,他说可以快速解决我的痛点,那我姑且再等上一天……

我是谁?我想干嘛?

OK,关子卖到这里为止,解密时间到了。上文只是我以第一人称写的一个小故事。和你一开始想的一样,我就是胡涛。我要让 DevStream 变得更加易用,往“零配置”方向发展。

上面提到的 mvp 版本,我准备好了,你可以在这里看到。这个 mvp 版本目前可以做到:

  1. 在你的 Mac 上自动化,零配置地完成 Docker、Minikube(Kubernetes)、Helm、Argo CD 等工具的部署配置;
  2. 交互式地让你选择一种语言,一种开发框架,然后自动生成相应的代码脚手架,脚手架里包含相应的 demo 代码以及 CICD 相关配置,也就是 CI 配置文件、Dockerfile、Helm Chart 配置等等全部都自动化生成;
  3. 自动化完成一次 CICD 流程运行,让你的 demo 应用完成镜像构建,k8s 里的部署,并且让你在浏览器里能够访问到这个新应用;
  4. 最后,你就可以直接开始写业务代码了。

等等,有奖品

我不知道上面提到的这些“能力”有多少的价值,能够得到多少的认可。不过我们老板说:“能用钱解决的问题,都不是问题。拿10000块去,找点用户试用一下,让他们来告诉你这条路对不对”。

愁死我了,一万块该怎么花呢……

万一只找到10个用户试用,一人发一千?不行不行,太腐败了。找100个,一人一百?不行不行,100人的反馈看起来太累。找几十个吧,至于最终是20个还是50个,看人品了。

我:“保证花完一万…… 不是,我是说,保证完成任务!”

奖品选啥?我也没想好啊。不过一万块钞票摆着,“试用者”也一定会控制在50以下,所以你可以期待下少说是个200块的“神秘大礼包”!

怎么领奖?

我不管你是对 DevStream 感兴趣还是对“神秘大礼包”感兴趣,总之我只对你的“反馈”感兴趣。

第一步:试用 DevStream 新特性

前置要求:该 mvp 版本只支持 Mac,但是我们不提供 Mac,所以,你懂的。另外,记得安装好 brew。

  1. 你可以在这里下载到 v0.12.0 版本的 DevStream CLI - dtm,记得完成下载后,给一个可执行权限(sudo chmod +x ./dtm);
  2. 接着你可以试下 ./dtm start 命令,这个命令会帮助你完成 Docker、Kubernetes、Helm、Argo CD 等工具的安装配置(如果你的 Mac 里已经安装了一些上述工具,记得适当删一些,让 dtm start 命令有点事情可以做);
  3. 然后你可以试下 ./dtm create 命令,这个命令会让你交互式地选择编程语言、改语言对应的一些框架等,进而使用你选定的语言和框架,自动化创建代码脚手架,进而完成 CICD 流程,让你可以在浏览器里访问到你的新应用。(由于走一次完整的 CICD 流程需要在你的 GitHub 上创建 repo,以及将镜像推送到你的 Dockerhub 上,所以你需要在执行过程中输入这两个平台的 token;配置方式可以参考这里这里。)

第二步:填写反馈

你可以先点一下这个链接,如果能正常打开,说明活动还没截止。

前面你已经试用过 DevStream 的这个特殊“mvp 版本”了。我希望你不要太关注当前这个 mvp 版本是否存在 bug,是否功能简陋等等,而是尝试理解 mvp 版本所传达的“定位”。

也就是说 DevStream 想要以交互式,几乎零配置的方式来帮助开发者搭建 DevOps 工具链,这条工具链可以在本地,也可以在云端,总之在哪里不重要,但是搭建过程一定不会让你感觉到“配置痛、理解痛”等,整个过程足够傻瓜化;进而 DevStream 提供交互式的 CLI 来让你选择语言和框架等,然后帮你生成目标语言/框架的应用脚手架,脚手架里会包含 CICD 相关配置,并且结合前一步准备好的 DevOps 工具链,这个脚手架应用能够直接利用这条工具链走通完整的 CICD 流程,让你尽量只需要关注自己的业务代码,轻松地交付一个可以在 k8s 里部署的“云原生应用”。

我相信这次试用一定让你心中荡漾着许多“赞美”与“槽点”,来,别顾及面子,让我们听到最真实的声音!通过前面这个链接填写问卷,然后我们会给你寄一份“神秘大礼包”!