专栏名称: 朱小厮的博客
著有畅销书:《深入理解Kafka》和《RabbitMQ实战指南》。公众号主要用来分享Java技术栈、Golang技术栈、消息中间件(如Kafka、RabbitMQ)、存储、大数据以及通用型技术架构等相关的技术。
目录
相关文章推荐
消费日报官方平台  ·  胖东来有新动作! ·  昨天  
哈佛商业评论  ·  企业全球化如何防患未然?这三个问题很关键 ·  昨天  
为你读诗  ·  花草有本心:走近古典文学中的春天 ·  2 天前  
元素和同位素地球化学  ·  《人类简史》人性的底层逻辑及其与文明发展的悖论 ·  2 天前  
元素和同位素地球化学  ·  《人类简史》人性的底层逻辑及其与文明发展的悖论 ·  2 天前  
51好读  ›  专栏  ›  朱小厮的博客

让开发部署提速 8 倍,我参与贡献这款 IDE 插件的全过程

朱小厮的博客  · 公众号  ·  · 2019-07-12 08:41

正文

点击上方“ 朱小厮的博客 ”,选择“ 设为星标

做积极的人,而不是积极废人


作者:徐妈

本文缩略图: James Sutton on Unsplash

来源:阿里巴巴中间件


如何像参与开源那样,去参与一款 IDE 插件的设计?

✅ 作为一款 IDE 插件的使用者,我是否能决定下一个版本的功能?


自从产品经理银时小伙和他的开发小哥们在去年12月发布 Cloud Toolkit (一款 IDE 插件)以来,已帮助数以万计的开发者们提高了业务的部署效率。期间,开发者们不仅是 Cloud Toolkit 的使用者,同时也作为设计者参与了插件的更新迭代。


本文来自开发者徐靖峰,分享了他和 Cloud Toolkit 的故事。


遇见 Cloud Toolkit



在与中间件小姐姐的一次聊天中,偶然间了解到这款插件:“这款免费的 IDE 开发者工具能够使开发部署效率提高 8 倍。”出于好奇心,我就上手体验了一下,看看究竟是一个什么样的产品。 使用了一段时间之后,便向小姐姐分享了我作为开发者对插件的一些看法。


对这款产品最直观的感受: 这是一款发布工具,帮助用户在 IDE 中直接打包应用并部署到各种终端。 一开始看到这款产品位于阿里云的页面中,原本以为是一款和阿里云服务强绑定的产品,但试用过后才发现, 即使对于普通的云主机,也非常适用,还可以解决很多开发运维的痛点,非阿里云用户可以放心使用。


在 Cloud Toolkit 出现之前



作为一个 Java 程序员,我们大多数会在 Intellij IDEA 中基于 SpringBoot 来开发 WEB 应用,所以本文中的测评将会基于以下架构来构建:


  • 开发环境: IDEA

  • 项目组织方式: Maven

  • 开发框架: SpringBoot

在接触 Cloud Toolkit 之前,用什么方法来部署一个 SpringBoot 应用呢? 作为一个偏正经的测评人员,我不会为了凸显出 Cloud Toolkit 的强大而去翻出一些上古的部署工具来做对比,而是直接使用 Intellij IDEA 的内置功能与之对比。


第一步:配置服务器信息

在 Tools->Deployment 中找到 IDEA 对项目部署支持的内置插件,我们可以在其中进行服务器信息的配置,包括服务器地址和权限认证,并且在 Mapping 选项卡中完成本地工程与服务器路径的映射。


第二步:配置 Maven 打包插件



  1. org.springframework.boot

  2. spring-boot-maven-plugin


由于是 SpringBoot 应用,配置专用的打包插件后,可以将整个工程打成一个 fatjar,示例工程非常简单:


  1. @SpringBootApplication

  2. @RestController

  3. public class Application {

  4. public static void main(String[] args) {

  5. SpringApplication.run(Application.class, args);

  6. }

  7. @RequestMapping("/hello")

  8. public String hello() {

  9. return "hello world~~~~~~~~~~~~~~~~";

  10. }

  11. }


之后,只要执行 install,即可得到一个可运行的 Jar 包:


第三步:部署 Jar 包



由于我们在第一步已经配置过项目路径与服务器路径的映射,可以选择直接对 fatjar 右键,upload 到远程服务器上。


第四步:启动应用

上图中展示的是 IDEA 中两个非常棒的内置功能,可以在 Tools->StartSSH session 中开启远程服务器的终端,在 IDEA 下方可以执行远程指令; 也可以在 Tools->Deployment->BrowseRemoteHost 中展开如图右侧的结构,可视化地浏览服务器上的文件列表,检查应用是否部署成功。


在远程终端中,找到对应的 fatjar,执行 java-jar spring-demo-1.0-SNAPSHOT.jar 便完成了整个部署流程。


IDE 内置插件总结

IDEA 内置插件已经提供了相当强大的能力,整个部署过程我们完全没有离开 IDEA! 避免了频繁切换窗口,装各种部署工具,可以说已经很方便了, Cloud Toolkit 必须要比这个部署过程做的更加强大才行,那下面就让我们来体验下 Cloud Toolkit 是怎么优化的吧。


Cloud Toolkit 初体验



我们不急着用 Cloud Toolkit 来部署应用。虽然笔者是一位开发者,但还是从产品的角度来研究下它的菜单项,看看它的产品定位。IDEA 安装插件的过程省略,详情可以参考 《IDE 插件新版发布 | 支持更多场景,开发效率更“biu”了》

其他菜单项暂且抛到一边,这 5 个核心能力应该就是 Cloud Toolkit 的核心了。 即使作为一个插件小白,应该也能够望名知意,猜到这几个菜单对应的功能:


  • Deploy to Host: 部署到任意服务器。 这一个功能决定了 Cloud Toolkit 强大的之处就是可以使得每个开发者受益,它其实并不是和阿里云厂商强绑定的。 我会在下文重点测评下这个功能。

  • Deploy to ECS: 这里的 ECS 指的阿里云的 ECS,如果你的服务部署在阿里云 ECS 上,可以选择使用这个功能,获得比 Deploy to Host 更加丰富的功能。 在下文我也会简单测评下这个功能。

  • Deploy to EDAS & EDAS Serverless: EDAS & EDAS Serverless 是阿里云提供的分布式服务治理服务,可以理解为商业版的 Dubbo,具有强大的服务治理、服务调度能力,Cloud Toolkit 对 EDAS 做了个性化的部署支持,让使用者无需登录控制台,在 IDEA 中即可完成 EDAS 的部署。

  • Deploy to CS K8s: 在云原生时代,很多应用使用容器化的方式进行部署,Cloud Toolkit 这一点做的还是不错的,已经具备了容器化部署的能力,具有一定的前瞻性。


其实,从简单的功能介绍就可以看出, Cloud Toolkit 相比 IDEA 内置的部署能力的确是高出一大截了,甚至可以说,Deploy to Host 这一能力完全就可以覆盖 IDEA 插件的所有能力,并且对流程还进行了一些简化。 下面我重点测评下 Deploy to Host 这一能力,与之前的部署流程进行一个对比。


使用 Cloud Toolkit 把应用部署到任意服务器

上图展示的 Deploy to Host 功能的配置项,实际上涵盖了以下几点:


  • 远程服务器配置

  • 部署方式: Maven 构建,直接上传文件(目前还不支持 Gradle 构建,可能在后续的版本会支持)

  • 本地文件与服务器路径的映射配置

  • 启动脚本的集成


账号管理

SSH 登录账户可以在 Preferences->AlibabaCloudToolkit->SSHProfile 中管理,找不到也没关系,需要设置的时候一般都会有超链接跳转,这点做得很人性化。

主机管理

服务信息可以在 Tools->AlibabaCloud->AlibabaCloudView 中展开,如下图所示:


Deploy to Host

配置完账号信息和主机信息,接下来只需要右键项目选择 AlibabaCloud->DeploytoHost->Run ,一切就搞定了。 这个过程相比之前变得非常简易:


  • 不需要自己打包,Cloud Toolkit 集成了 Maven 插件;

  • 不需要登录远程终端去执行脚本启动服务,Cloud Toolkit 提供了应用部署生命周期必要的钩子,只需要设置好启动脚本即可;

  • 修改完本地代码,点击下 Deploy to Host,即可完成改动代码的部署。


经过如上的测评过程,相信即使没有使用过 Cloud Toolkit 的用户,也可以直观体会到这是一款怎么样的插件了,并且它的功能是多么的实用。


使用 Cloud Toolkit 把应用部署到 ECS

从产品设计的角度来分析,Cloud Toolkit 提供如此多的部署能力,可以想到是其直接预设了使用人群。 例如一个阿里云的 ECS 用户,在选择部署方式时,既可以使用 Deploy to Host 也可以使用 Deploy to ECS; 再者,例如一个 EDAS 用户,在选择部署方式时,既可以使用 Deploy to Host、Deploy to ECS,也可以使用 Deploy to EDAS(EDAS 可以理解为一个定制化的 ECS)。 从产品的角度,越定制化的功能,其服务的人群越少,同时功能更强大; 从用户体验的角度,其实也透露了云服务的一个特点,云厂商正在为其所提供的云服务创造更好的用户体验,借助于此类插件,来降低使用者的开发运维门槛。


可以预见的一件事是,对于非阿里云用户来说,Deploy to Host 是他们使用 Cloud Toolkit 最大的诱惑了。 作为一个测评文章,除了介绍 Deploy to Host 之外,我还选择了 Deploy to ECS 这一功能来进行测评。 为此我购买了一台阿里云的 ECS 来部署与上文相同的应用。

在阿里云控制台可以获取到账号的 Access Key/Access Key Secret,在 IDEA 中的 Preferences->AlibabaCloudToolkit->Accounts 中可以设置账号。


在账号设置完毕后,Cloud Toolkit 看起来是通过内置的 API 直接关联到了我的 ECS 实例,在选择部署时,可以直接根据 region 选择实例列表中的机器进行部署。

其余的部署流程和 Deploy to Host 相差无几。 也就是说,其实 Deploy to ECS 更多的完成了权限管理和主机管理,ECS 用户使用这个功能就显得非常高效了。



Cloud Toolkit 的亮点功能



Cloud Toolkit 除了主打的部署能力,还提供了不少亮点功能,我选择了其中的 3 个功能来分享: 上传文件、远程 Terminal、内置应用诊断功能来进行评测。


上传文件

有些脚本我们希望在本地编辑之后上传到服务器上,Cloud Toolkit 对每一个主机都提供了一个 Upload 操作,可以将本地的文件上传到远程主机上,并且还可以触发一个 commond,这个功能也是很人性化的,因为上传脚本后,往往需要运行一次,避免了我们再登录到远程主机上执行一次运行操作。


远程 Terminal

特别是在 Mac 系统中,我一直苦恼的一件事便是如何管理众多的远程机器,我偶尔需要去搭建了博客的主机上查看个人博客为什么挂了,偶尔又要去看看我的 VPN 主机排查下为什么无法转发流量了,在开发测试阶段,又要经常去测试主机上执行一些简单的命令。 所有这一切通过 SSH 工具去完成都不麻烦,但所有的麻烦事集合到一起时往往会让我变得焦头烂额, 针对这一点,Cloud Toolkit 简直是一个 Life Saver。

事实上,在前面的测评中我们已经了解到 IDEA 内置了远程 Terminal 这个功能,Cloud Toolkit 是进一步优化了它的体验,用户可以直接在可视化的页面选择想要远程登录的主机,在对主机加了 Tag 之后,这个过程会更加直观。


内置应用诊断功能

在测评体验过程中,意外地发现了 Cloud Toolkit 的一个功能支持,就是前面的截图有显示,但我未提到的 Diagnostic (诊断)功能。 Cloud Toolkit 集成了阿里巴巴开源的一款应用诊断框架 -- Arthas


  • 对于本地主机,可以直接通过 Tools->AlibabaCloud->DiagnosticTools 开启诊断;

  • 对于远程主机,可以通过主机管理中的 Diagnostic 选项卡,开启远程诊断。



在过去,我们想要进行诊断,必须要手动在服务器上安装 Arthas, 然而Cloud Toolkit 借助 Remote Terminal 和 Arthas 的集成,让这一切都可以在 IDEA 中完成,似乎是想要贯彻这个原则: 彻底杜绝第三方工具,一切都用插件完成。


当你遇到以下类似问题而束手无策时, Arthas可以帮助你解决:







请到「今天看啥」查看全文