回归远程 - 云原生IDE是IaC从表象触达本质的必然选择 | SmartIDE

作者:

徐磊,开源云原生SmartIDE创始人、LEANOSFT创始人/首席架构师/CEO,微软最有价值专家MVP/微软区域技术总监Regional Director,华为云最有价值专家。从事软件工程咨询服务超过15年时间,为超过200家不同类型的企业提供过软件研发效能相关的管理和技术咨询工作。

原文地址:https://smartide.cn/zh/docs/overview/

e854895ef55b5888d2e3cef737ee5879.jpeg

关于SmartIDE

SmartIDE是一款 远程/云端工作区调度工具,其目标是从根源上解决软件环境问题。当前,SmartIDE主要采用容器技术,比如:Docker和Docker-Compose;以及容器集群编排技术,比如:Kubernetes,来解决软件运行环境的一致性,标准化,快速获取,可扩张性和可维护性问题。

aa12ec4933e9829495bab690b758d0ad.jpeg

开发者常用的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左移

63a5ed0fa09c5debd07f2492cde657dd.png

也因为以上原因,IT行业内开始涌现了Docker, Kubernetes, Hashicrop等专注于解决软件环境问题的基础工具类软件。从2013年Docker引领的容器化浪潮开始,软件交付方式已经有了翻天覆地的变化,而且这种变化在逐步从生产环境向开发测试环境推进。这个趋势的核心实践,Infrastructure as Code(IaC 基础设施即代码)的思路正在影响着越来越多的DevOps实践者和工具厂商。可以说,在容器化浪潮的背后其实是IaC实践广泛应用,也因为此IaC实践被大多数DevOps实践者作为判断一个组织的软件工程能力的重要评估标准。

如下图所示:IaC实践(工具)正在从生产环境逐步左移

320c67a0e4103bb48a9cca1b83757f1f.png

IaC实践左移实际上是从问题的表象逐渐触达本质的过程。容器化/IaC实践首先被用于生产环境的原因很容易理解,因为这个环境最贴近用户,最贴近业务,也是企业最愿意投入资金的部分;但随着生产环境的容器化进程推进,组织会逐步认识到生产环境的问题的根源其实并不在生产环境,而在其左侧的测试,流水线以及开发环境。开发环境作为产生环境的源头,如果不能被容器化,会对其下游(右侧)环境构成连锁问题效应,破坏容器化本应产生的效益,比如:为管理容器编排文件而专门设置的权限、人员角色和流程,因为开发人员引入的环境变更而引起的后续环境的连锁变更;运维人员为了防止以上问题影响系统稳定性而采取的保守管理策略,以及受到损伤的业务敏捷性。

容器云和DevOps平台是云原生IDE落地的必要条件

510c4c6fc2e40ff2aa7f0b8720d2cbac.png

在容器化进程发展到今天的将近10年以后,开发环境的非标准化已经成为阻碍整个持续交付体系效能提升的关键性障碍。同时,随着企业中的容器化平台(包括:各种类型的k8s以及很多企业习惯称之为PaaS的私有云平台)以及DevOps工具链的普及,已经为IDE上云提供了必要条件。

艾瑞咨询的调研数据显示,在2025之前企业私有容器云市场仍然将保持每年超过33%的市场增速。

0ce46651364484ec6d88333ab62b167c.png

同时,企业DevOps工具软件按也将保持每年25%的市场增速。

ee7fb33ef330cbbf6bf64ffbe4ac70f4.png

以上两项基础设施的完毕将为云原生IDE在企业中的落地提供必要条件。

传统IDE上云进程已经启动

e64180277755b577f02bd06dd3d8cefa.png

从传统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工具的云化进程。

f16e824af8fd445d0a1e9d74d77b6832.png

SmartIDE 定位于远程/云端工作区的调度,为传统IDE上云提供服务端的完整解决方案,依托于已经在大量企业普及的容器云和DevOps平台,为开发者提供更加安全,简单和高效的全新工作模式。最终实现在 探索阶段 就能确认软件的最终形态的目的,为后续的环节提供明确的状态基准。

336788c246a693915e6d8b08c474b1e7.png

云原生IDE的优势场景

184a0a2af696239947c194146c505794.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android获取手机机型、厂商、deviceID基本信息

/*** 系统工具类*/ public class SystemUtil {/*** 获取当前手机系统语言。** return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”*/public static String getSystemLanguage() {return Locale.getDefault().getLanguage();}/***…

题目1362:左旋转字符串(Move!Move!!Move!!!)

题目1362:左旋转字符串(Move!Move!!Move!!!) 时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:2306 解决:961 题目描述:汇编语言中有一种移位指令叫做循环左移&#xff0…

PHP简单实现递归

//递归 //斐波那契数列 function digui($n) {if($n > 2) {$arr[$n] digui($n-1) digui($n-2);return $arr[$n];} else {return 1;} }//使用 echo digui(5); 总结 : 首先应该想到出口是什么,将出口放在else条件里 例如,本例斐波那契数列中,出口是前两个数是1,也就是数组下…

(三)Controller接口控制器详解(二)

一、AbstractController(简单控制器) AbstractController使用方法: 首先让我们使用AbstractController来重写第二章的HelloWorldController: public class HelloWorldController extends AbstractController {Overrideprotected M…

[BZOJ]1095 Hide捉迷藏(ZJOI2007)

一道神题,两种神做法。 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走…

Spring4-自动装配Beans-通过注解@Autowired在构造方法上

1.创建Maven项目,项目名称springdemo19,如图所示2.配置Maven,修改项目中的pom.xml文件,修改内容如下<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://mave…

15个开源的工业软件

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)不同的工业流程&#xff0c;需要不同的工业软件。此前&#xff0c;我们已经介绍了面向研发设计环节的开源软件&#xff08;详情查看&#xff1a;20 个开源的工业设计软件&#xff09;&#xff0c;今天就来介绍一下面向…

PHP开发中保证接口安全

模拟客户端请求:<?php namespace Home\Controller; use Think\Controller;class ClientController extends Controller{const TOKEN API;//模拟前台请求服务器api接口public function getDataFromServer(){//时间戳$timeStamp time();//随机字符串$randomStr $this ->…

MySQL远程访问报错解决

2019独角兽企业重金招聘Python工程师标准>>> 我之前的一篇博客讲了MySQL配置远程访问的方法&#xff0c;但是可能配置了账户以后还是不能访问&#xff0c;这可能是防火墙的原因&#xff0c;在CentOS里&#xff0c;我们修改一下防火墙设置就可以了 1. 进入防火墙配置…

jssdk.php

/*** Created by PhpStorm.* Date: 17/8/19* Time: 下午2:24*/ class JSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this->appId $appId;$this->appSecret $appSecret;}public function getSignPackage() {$jsapiTick…

GNU/Linux与开源文化的那些人和事

一、计算机的发明 世上本无路&#xff0c;走的人多了&#xff0c;就有了路。世上本无计算机&#xff0c;琢磨的人多了……没有计算机&#xff0c;一切无从谈起。 三个人对计算机的发明功不可没&#xff0c;居功至伟。阿兰图灵&#xff08;Alan Mathison Turing&#xff09;、阿…

PHP使用PHPMailer发送邮件

1. 首先下载phpmailer插件,并将插件复制到目录下 下载地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python学习记录2

一、两个模块&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印环境变量6 print(sys.argv[0])#当前文件相对路径,sys.argv是一个列表&#xff0c;第一个元素为程序本身的相对路径&#xf…

cordova-config.xml配置应用图标

1. <icon src"res/icon/ios/browser.png"/> 2.规格&#xff1a; iphone平台一般要求3种规格的图片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有图标的圆角效果由系统生成&#xff0c;给到的图标本身不…

将 Figma 设计转换为 .NET MAUI Graphics 代码

原文链接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻译&#xff1a;沙漠尽头的狼(谷歌翻译加持)&#xff0c;翻译别扭&#xff0c;建议直接阅读原文使用FigmaSharp.Maui.Graphics将Figma设计转换为 .NET MAUI Graphi…

Android之上下文context

Context&#xff0c;中文直译为“上下文”&#xff0c;SDK中对其说明如下&#xff1a; 1、它描述的是一个应用程序环境的信息&#xff0c;即上下文。 2、该类是一个抽象(abstract class)类&#xff0c;Android提供了该抽象类的具体实现类。 3、通过它我们可以获取应用程序的资…

论坛中,无限分类的原理

1.创建数据表 CREATE TABLE category( cat_id SMALLINT unsigned not null auto_increment comment 类别id, cat_name VARCHAR(30) not null default comment 类别名称, par_id SMALLINT unsigned not null default 0 comment 类别父id, PRIMARY KEY (cat_id) )enginemyisam …

mooc- 基本程序设计方法week1,week2

学习了第一单元我们几本可以写出10行左右的代码。 week1:python编程之基本方法 1、从计算机到程序设计语言&#xff1a; 理解计算机&#xff1a;计算机是能够根据一组指令操作数据的机器。 功能性&#xff1a;可以进行数据计算 可编程性&#xff1a;根据一系列指令来执行 计算机…

Windows 11 的 2022 更新为每个人带来了新的东西

Windows 网站发布博客&#xff0c;宣布今天在 190 多个国家/地区推出 Windows 11 2022 更新。微软在过去一年中对 Windows 11 进行了非常大的改进&#xff0c;感觉每个月都有一次更新。对于之前的 Windows 11&#xff0c;相信很多人在使用过程中也遇到过或大或小的问题。而一部…

goaccess_nginx日志分析工具

在控制台分析nginx日志goaccess -f b.log生成html文件分析nginx日志vi ~/.goacce***ctime-format %Tdate-format %d/%b/%Ylog-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"各参数详解&#xff1a; man goaccess或Nginx Variable …