I. Cloud IDE? Is it a new concept?
No, no, no. Mature products existed as early as 2010: Cloud9 IDE
Nowadays, Cloud IDEs are quite common, such as:
-
Cloud9: IDE provided by Amazon for its cloud computing services
-
Eclipse Che and Eclipse Theia: Cloud versions of the veteran IDE
-
Coder: And the open-source code-server released not long ago
-
Expo Snack: Cloud development environment for React Native
-
Coding: Domestic Cloud IDE product
-
codesandbox: Cloud IDE for Web projects
II. Why do we need Cloud IDE?
In typical development workflows, we set up a local environment, including a handy IDE and a complete set of local tools. But this local development model has some problems:
-
High performance requirements for development machines: 40 minutes for a cold compilation
-
Complex development environment configuration: Tool environments can be solved through container technology or a series of version management tools (such as nvm), but network, security and other environments are not so easy to configure
-
Dependency on specific devices: Vacation is fine, but bring your laptop, 24-hour On Call, one major demerit for 10 minutes of no response
-
Management challenges for giant codebases: Switching a Git branch in a giant codebase often takes half an hour
Thus, the concept of remote development emerged. Connect to remote test servers and complete daily development work directly in the server environment, eliminating the cost of rebuilding and maintaining a test environment locally
Under existing remote development models, engineers mostly connect to remote machines through terminal interaction tools and develop through text editors like vim, naro, etc. These editors usually don't support basic features like project file management, running tasks, debuggers, intelligent hints/completion in a friendly way, and cannot provide a comfortable development environment like local IDEs. While development experience declines, it also limits development efficiency
So, is there a way to have the best of both worlds?
Yes, move the IDE to the remote as well, i.e., Cloud IDE
P.S. Or pull the cloud down, that is, local IDE provides remote development capabilities, but conceptually it's no different from Cloud IDE (local IDE is equivalent to a browser). See VSCode Remote Development Kit for details
III. What problems can Cloud IDE solve?
In summary, moving IDE to the cloud can solve problems in two aspects:
-
Problems difficult to solve in local development model: No longer requires local machines to be very powerful, no need to worry about environment, no dependency on specific office equipment, and hard drives no longer need to spin crazily
-
Experience problems of remote development model: No longer a Web Editor toy, but a development environment as handy as local IDE
Cloud IDE is also an implementation form of remote development model, so it can naturally solve some problems existing in local development model
At the same time, as an upgraded form of Web Editor, Cloud IDE can provide better remote development experience, complement the experience shortcomings of remote development model, and solve the problem of tools not being handy limiting development efficiency
IV. What is the function of Cloud IDE?
Whether local IDE or Cloud IDE, both have two basic functions:
-
Improve development efficiency: Integrate fragmented development tools/services, realize platformization of toolchains
-
Upgrade development experience: Seamlessly connect development workflows, provide one-stop experience
From a developer's perspective, the key to IDE lies in the integration and connection of tools, not just a simple toolset, but enabling these tools to work together in the most natural way, forming an efficient workflow. That is Workbench/Work Assistant >> Toolset:
IDE >> Project File Management + Text Editor + Interactive Terminal + Project Scaffolding + Running Tasks + Debugger + Tool Plugins + ...Tools
For cloud service providers, they can achieve product form upgrades from Cloud Shell, Cloud Editor to Cloud IDE, closely combining a series of products (cloud services) with users' workflows, which not only better expresses product functions, but also reaches users more efficiently through IDE:
^ FaaS, BaaS
/
Cloud Service Users ---> Cloud IDE ---> Data Storage Services
\
v Computing Resources
V. Application Scenarios
In the foreseeable future, Cloud IDE has these application scenarios:
-
FaaS: Function as a Service, so, where are functions written?
-
Independent technical ecosystems: Such as React Native, Mini Programs, visual building systems, etc.
-
Cloud computing products: From providing discrete products/services (such as FaaS), to providing customized development environments and workflows
-
Source code management platforms: Imagine, GitHub/GitLab as development environment
-
R&D workbench: In the all-cloud R&D model of the cloud computing era, the complete chain of
Requirements-Development-Testing-Operations
VI. What might the future R&D model look like?
An efficient R&D model centered on Cloud IDE might look like this:
-
Unified development environment: With container technology, development environment can also become part of the project, managed like source code (Infrastructure as Code), and code style constraints can be better implemented
-
Dedicated IDE: Provide dedicated IDEs that fit products/business better by customizing open-source IDEs
-
Complete engineering chain: Edit-Build-Run-Debug-Test-Operations
-
Fast build speed: Thanks to [cloud computing's elastic allocation capabilities](/articles/伯克利研究员们眼中的 cloud-computing/#articleHeader4), compilation time can be greatly shortened
-
Code anywhere: Development environment can be as readily available as cloud computing services, anytime, anywhere, code whenever you want
-
Real-time collaboration: Online Review, hands-on teaching, shared workspaces, one-click code sharing
-
AI-assisted development: Intelligent hints based on full source code, even code generation, quality analysis, etc.
While technology moves towards techless, the R&D model may usher in a tool-less era
No comments yet. Be the first to share your thoughts.