做出赋能其他人的产品是技术牛人最好的证明
“ 一个优秀的应用开发平台不仅是一个开发平台,也是一个文化平台!而且是一个技术人很好的能力和贡献证明。”
如果你想快速开发一个 Web 应用,通过一键配置后就可以立即开发业务逻辑,又不用管服务器这些底层的事情,是不是很香?
由我们部门的技术大神“丹花”一手打造的 AppRunner 内部应用开发平台就是这样的平台,它赋能和激发了我们全球的开发人员在上面开发了近两千个应用,为公司内部的管理、度量、人才盘点等需求提供了大量高效工具,也构造了一种良好的技术文化。而且让“丹花”进一步巩固其技术大神的位置。
让我们一起来探究一下这么牛的平台和它背后的意义吧。
01 平台概貌
很多时候,我们都想开发一些小应用,来帮助我们提升管理、开发和工作效率。但当我们要开始开发一个 Web 应用时,往往会因为以下障碍而止步不前:
搭建开发环境——虽然像 Java 的 Maven 这样的构建工具已经大大简化了开发流程,但离一键配置、部署和运行还差十万八千里;
需要开发框架——要高效开发,最好是站在巨人的肩膀上,而不是一直重复造轮子,我们希望在一些成熟的开发框架上进行开发, 从而能更快地聚集在业务逻辑的编程,而不是纠缠于底层的实现。但像 Java 里 Spring、Spring Boot 这样的主流框架,离“开箱即用”还有一段距离,对于 Web 应用来说,也不是一站式的解决方案;
需要运行服务器——开发出来的应用最终还需要运行在服务器上。在我们公司,即使可以在数小时内通过内部云获得测试服务器,但由于没有 root 和 sudo 的权限,还要找服务器运维团队花费数天时间做必要的额外配置,更别说要找钱“供养”服务器。后续针对服务器的各种维护,像打补丁、OS 升级等都是烦人的事情。
AppRunner 为我们解决了以上烦恼。我们可以
一键配置
通过一键,新应用的专属的 Github 仓库和基础代码就已经准备好了,我们只需要把 AppRunner 的公钥放到自己的 Github 设置中从而允许 AppRunner 访问,然后通过 git clone 把专属 Github 仓库的代码拉到本地就可以开始开发了。
多种语言支持
AppRunner 支持多种语言,包括 Java、Node.js、Clojure、Python、.NET,满足大家的语言偏好。
快速开发
一旦新应用生成后,基于 MuServer 的后台基础代码和 Hello World 页面已经就绪,我们可以以此为基础进行业务逻辑的开发。也可以随意引入前端框架。
数据可以以文件或以文件形式管理的轻量级数据库保存,AppRunner 为每个应用保留一定的存储空间。
快速测试
我们可随时通过打包(如 Java 中的 mvn package),然后运行程序包(如 Java 中的 java -jar xxx.jar),即可通过 localhost 进行本地测试。
把代码提交到 Github 后,AppRunner 也会以秒级的速度立即自动部署,然后所有人都可以通过应用专属的 URL 访问更新的应用。可以在 AppRunner 上看到部署和运行的日志。
无需管理服务器
服务器资源完全由 AppRunner 管理,我们作为开发人员根本不需要操心。
当然,AppRunner 仅限于内部应用开发和使用,不能用于正式的业务应用和涉及敏感数据,这也是为什么它的开发、部署流程比较简单,但对于内部工具型的应用开发,足够了。
02 技术实现
下图是 AppRunner 的工作原理。当一个新应用生成时,AppRunner 会为它分配一个唯一的端口和 URL。用户通过应用专属的 URL 访问时,AppRunner 会把请求代理到相应的端口。
AppRunner 为每个新应用都准备了以 MuServer 为底层应用服务器的基础代码。MuServer(https://muserver.io/)是用 Java 开发的高效、轻量级的现代 Web 应用服务器。开发人员可以随意添加 Handler 来处理 HttpRequest 和 HttpResponse,生成相应的 API Endpoint。
开发人员也可以随意调用其它 AppRunner 应用提供的 API,获取数据,站在别人的肩膀上。
由于所有应用的 Github 仓库都是内部开源的,我们也可以随时参阅别人的代码。
03 优秀应用
有了 AppRunner,开发人员可以快速地、无所顾虑地开发内部工具型应用供所有人使用。到目前为止,AppRunner 上已经部署了接近 2000 个应用,其中不乏被广泛使用的优秀应用。
比方说收集开发和 DevOps 指标的 Dashboard 类应用,方便所有人对重要指标进行度量,并以此为根据进行持续改进;自底向上的自组织团队登记,方便各团队管理人员数据;辅助系统监控的 Dashboard;实现所有人在线各抒己见的回顾会议工具;运维数据完整性检查;系统间架构关联图谱;分享会预告和登记等。
04 写在最后
AppRunner 作为开放的内部应用平台,除了激发了人们对内部工具类应用开发的热情,也让所有人更容易反哺,切实地为大家提供各种高效的工具,形成了一种良性的氛围与文化,这也是我想跟大家分享的重点。作为技术人,我们应该坚持用技术解决一切问题!
另外,作为一家技术公司,我们一直为人们提供管理和技术两个发展路径。但是技术路线怎么发展和评估,则不像管理路线那样可以通过管理级别、团队规模进行量化。一个技术人个体怎样证明自己比别人更厉害,甚至可以“以一打十”,其实是很难的。
而评估一个技术人的能力,一个切入点可能就是看 TA 是否有能力赋能组织和其他人做出更大的成就,而且更有说服力的,就是看 TA 是否做出过实实在在的产品、平台、工具或服务,切实地赋能了大家,这样 TA 的能力和贡献就有了杠杆。技术牛不牛,技术人有没有贡献,从来不能靠吹,而是要靠做。
文中提到的“丹花”是我们公认的技术大神,AppRunner 也再次很好地证明了他的能力和贡献。这就是一个技术人发展的很好的榜样。
大神还慷慨地开源了他的 AppRunner,链接:https://github.com/danielflower/app-runner。
觉得文章不错,顺手转发给朋友们吧。
相关阅读:
关于作者
敏捷、精益、DevOps 专家
公众号“敏于思 捷于行”博主
精通极限编程、Scrum、看板方法、测试驱动开发、持续集成、行为驱动开发、DevOps 工具栈、Docker、Kubernetes (Google Kubernetes Engine, GKE)
曾在 GDevOps、DevOpsDays Meetup、中国软件技术大会、ArchSummit、Top 100 等论坛发表主题演讲
阿里云、谷歌云认证架构师
著有《猎豹行动:硝烟中的敏捷转型之旅》一书和专栏《软件交付那些事儿》
关注公众号看其他原创作品
敏于思 捷于行
坚持原创高质量软件交付相关文章
觉得好看,转发给朋友们,欢迎你留言。
版权声明: 本文为 InfoQ 作者【刘华Kenneth】的原创文章。
原文链接:【http://xie.infoq.cn/article/07738687d51a1bbfe13be26b1】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论