作者:
徐磊,開源云原生SmartIDE創始人、LEANOSFT創始人/首席架構師/CEO,微軟最有價值專家MVP/微軟區域技術總監Regional Director,華為云最有價值專家。從事軟件工程咨詢服務超過15年時間,為超過200家不同類型的企業提供過軟件研發效能相關的管理和技術咨詢工作。
原文地址:https://smartide.cn/zh/docs/overview/
關于SmartIDE
SmartIDE是一款 遠程/云端工作區調度工具,其目標是從根源上解決軟件環境問題。當前,SmartIDE主要采用容器技術,比如:Docker和Docker-Compose;以及容器集群編排技術,比如:Kubernetes,來解決軟件運行環境的一致性,標準化,快速獲取,可擴張性和可維護性問題。
開發者常用的Visual Studio, Visual Studio Code, JetBrains全系列以及Eclipse這些傳統的IDE工具在 I (Integrated 集成性)和 D(Development)上面做得都非常出色,但是它們都沒有為開發者徹底解決E的問題。這是因為在這些IDE產品出現的時候,軟件本身的依賴環境還沒有那么復雜,大多數的軟件都是單體,微服務架構還未出現,通用中間件軟件也不流行,大多數的開發者都可以在自己本地的開發機上完成整個應用(系統)的完整搭建,開發調試,測試以及打包發布過程。
當前的軟件系統已經越來越復雜,越來越多的開發者在使用各種中間件來簡化自己的軟件開發過程,越來越多的團隊在引入微服務架構來適應業務架構的敏捷性需求,云原生技術正在被更多團隊接受,容器化和集群編排系統以及DevOps CI/CD流水線的引入也給軟件工程引入了更多的復雜度。
在這樣的背景下,傳統IDE產品的局限性日漸顯現,開發者不得學習更多的技術,引入更多的工具,花費的更多的時間在軟件環境的管理和維護上。在軟件工程領域,也出現了類似SRE這種專注于打通復雜軟件工程系統協同的專業化工作角色/職責,軟件環境在SRE的工作職責占有非常高的比重(參考:Google SRE)。即便如此,軟件環境問題仍然是企業改進軟件工程系統過程中最難解決的核心問題之一。(參考:8 Key Challenges in Adopting DevOps)。對于希望通過改進軟件工程工藝來提升研發效能的團隊來說,解決環境的可獲取能力是實現端到端持續交付能力的主要障礙。
IaC左移
也因為以上原因,IT行業內開始涌現了Docker, Kubernetes, Hashicrop等專注于解決軟件環境問題的基礎工具類軟件。從2013年Docker引領的容器化浪潮開始,軟件交付方式已經有了翻天覆地的變化,而且這種變化在逐步從生產環境向開發測試環境推進。這個趨勢的核心實踐,Infrastructure as Code(IaC 基礎設施即代碼)的思路正在影響著越來越多的DevOps實踐者和工具廠商。可以說,在容器化浪潮的背后其實是IaC實踐廣泛應用,也因為此IaC實踐被大多數DevOps實踐者作為判斷一個組織的軟件工程能力的重要評估標準。
如下圖所示:IaC實踐(工具)正在從生產環境逐步左移
IaC實踐左移實際上是從問題的表象逐漸觸達本質的過程。容器化/IaC實踐首先被用于生產環境的原因很容易理解,因為這個環境最貼近用戶,最貼近業務,也是企業最愿意投入資金的部分;但隨著生產環境的容器化進程推進,組織會逐步認識到生產環境的問題的根源其實并不在生產環境,而在其左側的測試,流水線以及開發環境。開發環境作為產生環境的源頭,如果不能被容器化,會對其下游(右側)環境構成連鎖問題效應,破壞容器化本應產生的效益,比如:為管理容器編排文件而專門設置的權限、人員角色和流程,因為開發人員引入的環境變更而引起的后續環境的連鎖變更;運維人員為了防止以上問題影響系統穩定性而采取的保守管理策略,以及受到損傷的業務敏捷性。
容器云和DevOps平臺是云原生IDE落地的必要條件
在容器化進程發展到今天的將近10年以后,開發環境的非標準化已經成為阻礙整個持續交付體系效能提升的關鍵性障礙。同時,隨著企業中的容器化平臺(包括:各種類型的k8s以及很多企業習慣稱之為PaaS的私有云平臺)以及DevOps工具鏈的普及,已經為IDE上云提供了必要條件。
艾瑞咨詢的調研數據顯示,在2025之前企業私有容器云市場仍然將保持每年超過33%的市場增速。
同時,企業DevOps工具軟件按也將保持每年25%的市場增速。
以上兩項基礎設施的完畢將為云原生IDE在企業中的落地提供必要條件。
傳統IDE上云進程已經啟動
從傳統IDE工具的演進來看,以 Visual Studio Code Remote 以及 JetBrains Gateway 為代表的遠程開發能力已經被越來越多的開發者接受并喜愛;同時也出現了類似 Squash, telepresence, Nocalhost ,Bridge to Kubernetes (Visual Studio 插件 和 Visual Studio Code 插件) 這樣專注于解決K8S環境下調試場景的特定工具(參考:Debugging Microservices: The Ultimate Guide)。這些都代表著傳統IDE工具的云化進程。
SmartIDE 定位于遠程/云端工作區的調度,為傳統IDE上云提供服務端的完整解決方案,依托于已經在大量企業普及的容器云和DevOps平臺,為開發者提供更加安全,簡單和高效的全新工作模式。最終實現在 探索階段 就能確認軟件的最終形態的目的,為后續的環節提供明確的狀態基準。
云原生IDE的優勢場景
SmartIDE理論上可以支持任何應用的開發場景,但對于以下這些類型的應用來說可以提供比傳統開發模式更好的體驗。
端到端的代碼安全:對于非常關注代碼安全性或者使用大量外包人員的組織來說,如何防止代碼離開自己受控的服務器環境,同時又可以讓開發者方便的完成代碼開發一直都是一個矛盾。很多資金充裕的企業已經在使用的虛擬桌面(VDI)解決方案就是針對這種場景,但是VDI系統價格昂貴,資源占用量大而且無法動態調度資源,這也造成很多企業給開發者提供的虛擬桌面配置很低,開發效率非常低。SmartIDE所采用的容器化方案可以做到動態資源調度,根據項目本身的特性控制資源使用,同時開發者可以只需要瀏覽器即可訪問這些資源。對于企業優化IT基礎設置資源利用率,提升開發者體驗和工作效率非常有幫助。
大數據和AI開發:這些開發場景因為需要更強的算力并處理大量的數據,因此通過遠程開發方式可以讓開發者更好得利用云端資源,更加便捷高效的完成開發。
微服務架構開發:當系統中所設計的微服務數量到達一定量級之后,開發者無法在本地開發環境運行完整系統,利用SmartIDE所提供的遠程工作區則可以利用云端的大量服務器資源輕松完成環境搭建。同時因為IDE工具與運行環境可以非常貼近,在開發調試過程中也可以避免因為網絡延遲而造成的各種問題。
實驗室/培訓環境:教育/培訓行業往往需要同時提供多種不同的開發語言,工具的環境以便適應不同類型的課程的需要,但是因為課程本身的時效性問題,這些環境并不需要一直運行,而只需要在學員需要的時候啟動,課程結束之后即可銷毀。采用SmartIDE工作區可以非常便捷的快速為新課程配置環境,隨用隨起,用完即焚。
工業軟件/硬件開發:工業軟件和硬件開發往往需要在特定硬件環境中才能進行調試和測試工作,傳統模式下IDE是無法運行在這些硬件上的,開發者需要通過開發同步工具,命令行調試工具才能完成日常開發調試工作。這個過程往往非常繁瑣,大幅降低了開發效率。SmartIDE所采用的集成了IDE工具的工作區可以很方便的部署到這些硬件環境中,讓開發者直接在這些硬件上進行開發調試,大幅提升日常工作效率。
參考連接:
Google SRE
https://sre.google/
8 Key Challenges in Adopting DevOps:https://www.devopsinstitute.com/8-key-challenges-in-adopting-devops-part-1/
Debugging Microservice
https://lightrun.com/debugging/debugging-microservices-the-ultimate-guide