為什麼需要雲IDE?
- 2020 年 6 月 5 日
- 筆記
- Programming
一.雲 IDE?是新概念嗎?
不不不,早在 2010 年就有成熟的產品了:Cloud9 IDE
時至如今,雲 IDE 已經相當常見了,比如:
-
Cloud9:亞馬遜為其雲計算服務提供的 IDE
-
Eclipse Che及Eclipse Theia:老牌 IDE 的雲化版本
-
Coder:以及前不久開源的code-server
-
Expo Snack:React Native 的雲端開發環境
-
Coding:中國的雲 IDE 產品
-
codesandbox:面向 Web 項目的雲 IDE
二.為什麼需要雲 IDE?
一般的開發工作流中,我們會建立一套本地環境,包括順手的 IDE 和整套本地工具,但這種本地開發模式存在一些問題:
-
開發機性能要求高:冷編譯一次 40 分鐘
-
開發環境配置複雜:工具環境能夠通過容器技術或一系列版本管理工具(如 nvm)解決,但網路、安全等環境就不那麼容易配置了
-
依賴特定設備:休假可以,但是帶上電腦,24 小時 On Call,10 分鐘無響應記大過一次
-
巨型程式碼庫的管理難題:巨型程式碼庫切換個 Git 分支,動輒半小時
於是,遠程開發的理念應運而生,連接遠程測試伺服器,直接在伺服器環境完成日常開發工作,免去本地重建並維護一套測試環境的成本
現有的遠程開發模式下,工程師大多通過終端交互工具連接遠程機器,並通過 vim、naro 等文本編輯器來開發。而這些編輯器通常對項目文件管理、運行任務、調試器、智慧提示/補全等基礎功能的支援不那麼友好,並不能像本地 IDE 一樣提供舒適的開發環境。開發體驗下降的同時,也限制了開發效率
那麼,有沒有兩全其美的辦法?
有,把 IDE 也搬到遠程,即雲 IDE
P.S.或者把雲拽下來,即,本地 IDE 提供遠程開發能力,但理念上與雲 IDE 並無二致(本地 IDE 相當於瀏覽器),具體見VSCode 遠程開發套件
三.雲 IDE 能解決什麼問題?
綜上,IDE 上雲能解決兩方面問題:
-
本地開發模式難以解決的問題:不再要求本地機器十分強大,不必擔心環境,不依賴特定辦公設備,硬碟也不用再瘋狂旋轉
-
遠程開發模式的體驗問題:不再是 Web Editor 玩具,而與本地 IDE 一樣順手的開發環境
雲 IDE 也是遠程開發模式的一種實現形式,自然能夠解決本地開發模式所存在的一些難題
同時,作為 Web Editor 的升級形態,雲 IDE 能夠提供更好的遠程開發體驗,補足遠程開發模式的體驗短板,解決工具不稱手限制開發效率的問題
四.雲 IDE 有什麼作用?
無論本地 IDE 還是雲 IDE,都具有兩個基本作用:
-
提升開發效率:整合零碎的開發工具/服務,實現工具鏈的平台化
-
升級開發體驗:無縫連接開發工作流,提供一站式體驗
從開發者角度來看,IDE 的關鍵在於對工具的整合與連接,不只是簡單的工具集,而是讓這些工具能以最自然的方式配合工作,組成高效的工作流。即工作台/工作助理 >> 工具集
:
IDE >> 項目文件管理 + 文本編輯器 + 互動式終端 + 項目腳手架 + 運行任務 + 調試器 + 工具插件 + ...工具
對雲服務供應商而言,能夠實現從 Cloud Shell、Cloud Editor 到 Cloud IDE 的產品形態升級,將一系列產品(雲服務)與用戶的工作流緊密結合起來,不僅能更好地表達產品功能,還能通過 IDE 更高效率地觸達用戶:
^ FaaS、BaaS / 雲服務用戶 ---> 雲IDE ---> 數據存儲服務 \ v 計算資源
五.應用場景
在肉眼可見的未來,雲 IDE 有這樣幾個應用場景:
-
FaaS:函數即服務,那麼,函數在哪裡寫?
獨立的技術生態:如 React Native、小程式、可視化搭建系統等 -
雲計算產品:從提供離散的產品/服務(如 FaaS),轉向提供訂製開發環境和工作流
-
源碼管理平台:試想,GitHub/GitLab 即開發環境
-
研發工作台:雲計算時代的全雲研發模式下,
需求-開發-測試-運維
的完整鏈路
六.未來的研發模式(可能)是怎樣的?
以雲 IDE 為中心的高效研發模式,可能是這樣的:
-
統一的開發環境:藉助容器技術,開發環境也能作為項目的一部分,像源碼一樣管理起來(基礎設施即程式碼,Infrastructure as Code),程式碼風格約束也能更好地落實
-
專用 IDE:通過訂製開源 IDE,提供更貼合產品/業務的專用 IDE
-
完整的工程化鏈路:編輯-構建-運行-調試-測試-運維
-
飛快的構建速度:得益於雲計算的彈性調配能力,編譯時長能被大幅縮短
-
Code anywhere:開發環境也能像雲計算服務一樣觸手可得,隨時隨地,想碼就碼
-
實時協作:在線 Review,手把手教學,共享工作空間、一鍵分享程式碼
-
AI 助力開發:基於全源碼的智慧提示、甚至程式碼生成、品質分析等
在技術走向 techless 的同時,研發模式或將迎來 tool-less 時代