To speed up development and deployment eight times, I’m involved in contributing to this IDE plug-in.


How do you participate in the design of an IDE plug-in as you do in open source?

As a user of an IDE plug-in, can I decide on the functionality of the next version?

Since the release of Cloud Toolkit (an IDE plug-in) last December by product manager Silver Shih and his development buddies, tens of thousands of developers have been helped to improve the efficiency of business deployment. In the meantime, developers are not only users of Cloud Toolkit, but also designers involved in plug-in update iterations.

This article is from developer Xu Jingfeng and shares his story with Cloud Toolkit.

Meet Cloud Toolkit

During a chat with Miss Middleware, I came across this plug-in by chance. Miss mentioned to me that she was running an IDE developer tool, which could increase the efficiency of development and deployment by eight times. Out of curiosity, I began to experience it and see what kind of product it was. After using it for a while, I can’t wait to share with my sister some of my views on plug-ins as a developer.

My most intuitive feeling about this product is that it is a publishing tool that helps users package applications directly in the IDE and deploy them to various terminals. At first, I saw this product on Aliyun’s page. I thought it was a product strongly bound to Aliyun’s service. But after trying it out, I found that it is very suitable even for ordinary cloud hosts. It can also solve many pain points of development and maintenance. Non-Aliyun users can use it safely.

Before Cloud Toolkit came into being

As a Java programmer, most of us will develop WEB applications based on SpringBoot in Intellij IDEA, so the evaluation in this article will be based on the following frameworks:

  • Development environment: IDEA
  • Project organization: Maven
  • Development framework: SpringBoot

How do you deploy a SpringBook application before touching the Cloud Toolkit? As a decent evaluator, I don’t look for some ancient deployment tools to make a comparison in order to highlight the power of Cloud Toolkit, but use the built-in functions of Intellij IDEA to make a comparison.

Step 1: Configure server information

InTools -> DeploymentIDEA’s built-in plug-in support for project deployment is found, in which we can configure server information, including server address and privilege authentication, and map the local project to server path in the Mapping tab.

Step 2: Configure the Maven Packaging Plug-in


Because it is a SpringBook application, after configuring a dedicated packaging plug-in, the whole project can be transformed into a fatjar. The sample project is very simple:

public class Application {
    public static void main(String[] args) {, args);

    public String hello() {
        return "hello world~~~~~~~~~~~~~~~~";

After that, as long as install is executed, a runnable jar package can be obtained:

Step 3: Deploy the jar package

Since we have already configured the mapping between the project path and the server path in the first step, we can choose to upload directly to the remote server by right-clicking on the fatjar.

Step 4: Start the application

The two excellent built-in features in IDEA are shown in the figure above, which can be used in _________ IDEA.Tools -> Start SSH sessionOpen the terminal of the remote server in order to execute remote instructions under IDEA; orTools -> Deployment ->Browse Remote Host Expand the structure on the right side of the figure, visually browse the list of files on the server, and check whether the application has been successfully deployed.

In the remote terminal, the corresponding fatjar is found and -jar spring-demo-1.0-SNAPSHOT.jarThe entire deployment process has been completed.

Summary of IDEA built-in plug-ins

IDEA built-in plug-ins have provided quite powerful capabilities, the entire deployment process we did not leave IDEA! Avoiding frequent window switching and installing various deployment tools can be said to be very convenient. Cloud Toolkit must be more powerful than this deployment process. Now let’s experience how Cloud Toolkit is optimized.

First Experience of Cloud Toolkit

We’re not in a hurry to deploy applications with the Cloud Toolkit. Although the author is a developer, but from the perspective of the product to study its menu items, to see its product positioning. The process of installing IDEA plug-ins is omitted. For more details, you can refer to “New Edition of IDEA Plug-ins Release | Support more scenarios, and develop more efficiently”biu”.

Other menu items aside, these five core capabilities should be the core of Cloud Toolkit.

Even as a plug-in, Xiaobai should be able to guess the functions of these menus.

  • Deploy to Host: Deploy to any server. This feature determines that Cloud Toolkit is powerful because it can benefit every developer. It’s not really tied to Aliyun vendors. I will focus on this function below.
  • Deploy to ECS: ECS here refers to Aliyun’s ECS. If your service is deployed on Aliyun’s ECS, you can choose to use this function to achieve richer functions than Deploy to Host. I will also briefly review this function below.
  • Deploy to EDAS & EDAS Serverless: EDAS & EDAS Serverless is a distributed service governance service provided by Aliyun, which can be understood as a commercial version of Deubbo with strong service governance and service scheduling capabilities. Cloud Toolkit has personalized deployment support for EDAS, so that users do not need to log on to the console, in IDEA. The deployment of EDAS can be completed.
  • Deploy to CS K8S: In the cloud native era, many applications are deployed in a containerized way. Cloud Toolkit does a good job. It has the capability of containerized deployment and has a certain foresight.

In fact, it can be seen from the simple function introduction that Cloud Toolkit is much higher than IDEA’s built-in deployment capability. It can even be said that Deploy to Host can completely cover all the capabilities of IDEA plug-ins and simplify the process. Next, I will focus on the Deploy to Host capability and compare it with the previous deployment process.

Deploy applications to any server using Cloud Toolkit

The configuration items of the Deploy to Host function shown in the figure above actually cover the following points:

  • Remote Server Configuration
  • Deployment: Maven builds, uploads files directly (Gradle builds are not currently supported, and may be supported in subsequent versions)
  • Mapping Configuration of Local File and Server Path
  • Start script integration

account management

SSH login account can be inPreferences -> Alibaba Cloud Toolkit -> SSH Profile It doesn’t matter if you can’t find it in the middle management. When you need to set it up, there will always be hyperlink jumps, which is very humanistic.

Host Management

The service information can be found in ___________Tools -> Alibaba Cloud ->Alibaba Cloud View Expand in the following figure:

Deploy to Host

After configuring account information and host information, only right-click project selection is required.Alibaba Cloud -> Deploy to Host-> RunThat’s it. This process is much easier than before:

  • Without packaging, the Cloud Toolkit integrates Maven plug-ins.
  • Instead of logging into remote terminals to perform script startup services, Cloud Toolkit provides the necessary hooks for the application deployment life cycle, just setting up the startup script.
  • After modifying the local code, click Deploy to Host to complete the deployment of the change code.

Through the above evaluation process, I believe that even if no users have used Cloud Toolkit, they can intuitively understand what kind of plug-in it is, and how practical its functions are.

Deploy applications to ECS using Cloud Toolkit

From the point of view of product design, Cloud Toolkit provides so many deployment capabilities that it can be imagined that it directly presupposes users. For example, an ECS user in Aliyun can use Deploy to Host or Deploy to ECS when choosing deployment mode; furthermore, an EDAS user can use Deploy to Host, Deploy to ECS or Deploy to EDAS when choosing deployment mode. Customized ECS. From the product point of view, the more customized functions, the fewer people its services are, and the more powerful its functions are. From the user experience point of view, it also reveals a feature of cloud services. Cloud vendors are creating a better user experience for the cloud services they provide. With the help of such plug-ins, users’development and operation are reduced. Threshold.

One predictable thing is that for non-Ali cloud users, Deploy to Host is their biggest temptation to use Cloud Toolkit. As an evaluation article, besides introducing Deploy to Host, I also chose Deploy to ECS as a function to evaluate. So I bought an Aliyun ECS to deploy the same application as above.

Access Key/Access Key Secret, which can be accessed from the Aliyun console, is available in IDEA.Preferences -> Alibaba Cloud Toolkit -> AccountsAccounts can be set up.

After the account has been set up, Cloud Toolkit seems to be directly related to my ECS instance through the built-in API. When choosing deployment, it can directly select the machine in the list of instances according to the region for deployment.

The remaining deployment processes are almost the same as Deploy to Host. That is to say, Deploy to ECS has accomplished more authority management and host management, and ECS users can use this function very efficiently.

Highlights of Cloud Toolkit

Cloud Toolkit provides many highlights besides the main deployment capabilities. I chose three of them to share: uploading files, remote terminal, and built-in application diagnostics for evaluation.

Upload files

Some scripts we want to upload to the server after editing locally. Cloud Toolkit provides an Upload operation for each host. It can upload local files to remote hosts and trigger a commond. This function is also very human, because uploading scripts is often required. Running once prevents us from logging on to the remote host to perform a run again.

Remote Terminal

Especially in the Mac system, one of my worries is how to manage many remote machines. Occasionally, I need to build a blog host to see why the personal blog is hanging. Occasionally, I need to see why my VPN host can’t forward traffic. In the development and testing phase, I have to go to the blog frequently. Execute some simple commands on the test host. It’s easy to do all this with the SSH tool, but when all the hassles come together, they tend to make me burnt out. For this reason, Cloud Toolkit is a life Saver.

In fact, in the previous evaluation, we have learned that IDEA has built-in remote Terminal. Cloud Toolkit is a further optimization of its experience. Users can directly select the host they want to log in remotely on the visual page. After adding Tag to the host, the process will be more intuitive.

Built-in diagnostic function

In the process of evaluating the experience, I unexpectedly found a function support of Cloud Toolkit, that is, the screenshots above show, but I did not mention the Diagnotic (diagnostic) function. Cloud Toolkit integrates an Alibaba open source application diagnostic framework, Arthas.

  • For the local host, it can be directly passed through the ___________Tools -> Alibaba Cloud -> Diagnostic ToolsOpen the diagnosis.
  • For remote hosts, remote diagnosis can be turned on through the Diagnostic tab in host management.

In the past, if we wanted to diagnose, we had to install Arthas manually on the server. However, with the integration of Remote Terminal and Arthas, Cloud Toolkit made it possible to do all this in IDEA. It seems that we want to implement the principle of completely eliminating third-party tools and doing everything with plug-ins.

When you encounter the following similar problems and are helpless,ArthasCan help you solve:

  1. Which jar package does this class load from? Why do you report various kinds of Exceptions?
  2. Why hasn’t my code been executed? Am I not commit? Is the branch wrong?
  3. You can’t debug online when you encounter problems. Can you only redistribute it by adding logs?
  4. There is a problem with the data processing of a user online, but it can not debug online and can not be reproduced offline.
  5. Is there a global perspective to see how the system works?
  6. What is the way to monitor the real-time running state of JVM?

As a decent evaluation, we try to use the remote diagnosis function and select the more intuitive trace command to evaluate.

As shown in the figure above, we constructed a slow request, where invokeService A_B() is time-consuming compared to other methods. We want to locate the source of the slow call through the Cloud Toolkit and find out the culprit of invokeService A_B.

Click on the Diagnotic menu item of the corresponding deployment server in IDEA, and an Arthas diagnostic page will appear as shown in the figure above. It will automatically relate to the user’s Java process, and the user only needs to select the corresponding diagnostic process.

After associating the corresponding process, we execute the trace instruction.trace moe.cnkirito.demo.Application * -j

The meaning of this instruction ismoe.cnkirito.demo.ApplicationWhen any method is triggered to be called, the corresponding call stack is printed out and time-consuming is calculated.-jThe meaning is to filter out JDK built-in classes and simplify the stack. As shown in the figure above, we found that invokeService A_B of invokeService A is the most time-consuming. Users can monitor the corresponding method by themselves and replace * with the way they want to monitor. (For more monitoring instructions, refer to the Arthas documentation link:

Deficiencies found in the evaluation

It’s software that is bound to have bugs, or where the user experience is not good. Next, I simply list a few aspects of this plug-in that I think is inadequate.

Remote connections are prone to anomalies

This problem is not particularly easy to reproduce. The performance is that after running the project for a long time, redeployment will prompt the remote connection failure. This problem can be solved after restarting IDEA for unknown reasons. I couldn’t reproduce it when I wanted to reproduce it later, but it took me a long time. I don’t know if any other users have the same problem.

File browsers are too crude

When trying to configure SSH public and private keys to achieve secret-free login, it was found that Browse’s open file browser could not display. SSH hidden folders in Mac properly. In most cases, users would store SSH public and private keys in ~/. ssh. This user experience is not very good, maybe there is a way to access them in this file browser. Hide folders, but at least I haven’t found a way.

Lack of remote host visualization

IDEA’s default plug-in supports the Remote Host function, which allows users to visually manage remote hosts and add or delete files to enhance the user experience. Cloud Toolkit provides remote host management, but does not have the ability to visually manage the files in it. If the Cloud Toolkit implements Remote Host, it will make it easier for users to view their deployment results. From the choice of connection protocol, we can also find that Cloud Toolkit only supports SFTP protocol at present, while the DPloyment plug-in built in IDEA also supports ftp, FTPS and other ways.

Competition-Product Orientation-Evaluation

In fact, this article is basically around IDEA’s built-in Deployment along with Cloud Toolkit evaluation. Actually, I don’t think Cloud Toolkit has any competition.

Could the competition be xftp or xshell? They’re just an SSH tool, they don’t even want to compete with you.

Could it be Jenkins? Jenkins has its own Devops process, focusing on continuous integration, while Cloud Toolkit positioning is to complete deployment validation and other activities in daily development.

In my evaluation process, I can feel the ingenuity of this product, almost all users may encounter problems with documentation, such as: do not know how to write the startup script? Links to commonly used Java application startup scripts; it’s not clear which deployment method to use? Each approach has a complete deployment document; multilingual? At the same time, the deployment cases of Go and NodeJS are provided. At the same time, it also supports some gift functions: viewing real-time logs, file upload, SQL execution, etc.

On the one hand, Cloud Toolkit provides Deploy to Host, built-in Arthas diagnostics and other functions, benefiting the vast number of developers, on the other hand, some functions of Aliyun service binding. Cloud Toolkit brings good news to ECS and EDAS users. You can enjoy more convenient operation than ordinary application deployment. The former has accumulated industry reputation for Cloud Toolkit, while the latter has increased the confidence of Aliyun paying users and planted seeds for potential Aliyun users.

What I want to say to Cloud Toolkit team

In my daily development, I also occasionally need to test some functions on remote Linux services, which can help me save a lot of time and energy after familiarizing myself with Cloud Toolkit. Cloud Toolkit is a great deployment tool, and hopefully it will strike a balance between commercialization and open source, with an extra emphasis on Deploy to Host when promoting it.


Xu Jingfeng, Senior Development Engineer of Aliyun Intelligence, specializes in distributed service framework, micro-service and other fields. He likes to write, and he likes to pour over all kinds of interesting things. He maintains the personal technology public number “Kirito’s technology sharing”. To some extent, “technology sharing” is a less lonely thing for authors and readers. West.

Author: Brother Middleware

Read the original text

This article is the original content of Yunqi Community, which can not be reproduced without permission.

Recommended Today

Picture carousel Preview

effect realization JS code: import React, { Component } from ‘react’; import Carousel from ‘nuka-carousel’; import ‘./largePreview.scss’; const Index = props => { return props.visible ? <LargePriview {…props} /> : null; }; /** *@ param {array} pics image array [{img: ‘}, {img:’}] *Does @ param {Boolean} visible show large preview *@ param {number} currentindex is […]