作者:
徐磊,开源云原生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