仅有50Mb大小的cli即可搞定大厂才能玩的CloudIDE丨SmartIDE

447af69d842e7f7dac8509db00dac272.gif

作者:

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

原文地址:https://smartide.cn/zh/blog/20220919-meetup-s01e04/

关于SmartIDE

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

54dc007f388647db0f57312f36ff4b97.jpeg

CLI是SmartIDE产品架构中与其他类似产品最大的差异。大多数CloudIDE都会提供CLI工具,但是这些CLI都是作为辅助性工具存在的,也就是说用户使用CLI连接到CloudIDE服务来完成类似端口转发,如果脱离的CloudIDE服务,这些CLI本身是无法单独使用的。

Smart Meetup已经在上周二(2022.9.13)重新启动,后续我们将在每周二晚8点30分和大家见面。Smart Meetup的目标是持续为大家输出云原生IDE相关的最佳实践,并不局限于介绍SmartIDE自己的特性和功能,而是希望能够从软件工程的角度为开发者提供帮助。以下是我们当前规划的一些方向,希望各位小伙伴多提意见和建议:

  • SmartIDE 特性介绍 - 按照我们的发版周期,每隔2周都会发布新版本给社区,我们会通过这个Meetup为大家介绍这些新特性,帮助大家尽快的将新功能用起来。

  • 开源项目推荐 - SmartIDE的一个重要特点就是帮助开源社区的小伙伴快速的体验新项目,我们会继续这个做法,为大家喜欢的开源项目适配 IDE配置文件,并在Meetup为大家展示这些项目的能力。之前我们已经适配过的项目包括:若依项目、Gin-Vue-Admin和飞致云的Metersphere。

  • 云原生相关技术分享 - 作为一款云原生IDE,SmartIDE不仅会利用云原生技术让开发者的工作变得更加简单高效,也同样在践行着各种云原生开发实践,比如我们之前就介绍过如何使用SmartIDE来开发调试Dapr应用。后续我们会继续这个方向的摸索,并将最棒的云原生开发实践推介给大家。

  • 敏捷/精益/DevOps/研发效能相关实践和案例分享 - SmartIDE的定位是成为DevOps和开发者的桥梁,那么我们的Meetup也同样会承载类似的职责。我们会不定期的邀请行业内的专家大咖来给大家分享各种最佳实践和案例。

另外,在每一期的活动上我会邀请一位观察员,从用户的角度给予一些反馈,提出一些问题,帮助我们打磨产品,拓展使用场景。

S01E03 回顾

a0b346097a8987abb7fbdc6273551aae.png

时间:2022.9.13 晚20:30

主持人:徐磊

观察员:施慧斌、FIT2CLOUD北区解决方案负责人

上周的Meetup距离之前的活动已经有了一段时间,因此我们首先对SmartIDE的一些进展给大家做了介绍,然后针对 Codespaces for Azure DevOps 插件进行了重点介绍。这次Meetup我们也邀请到了FIT2CLOUD北区解决方案负责人施慧斌作为观察员参与了整个演示。

CodeSpace for Azure DevOps 插件

SmartIDE产品定位于开发人员的的DevOps入口,基于这个定位我们在微软的DevOps平台Azure DevOps上进行了首次尝试。通过在Azure DevOps的电子看板,代码库,流水线和拉取请求的不同位置提供一键创建云端工作区的入口,为开发和测试人员提供快速稳定获取可用环境的入口。这个插件充分利用了SmartIDE的标准化环境编排能力,将原本静态的开发环境转变为随用随起,用完即焚的临时性环境,让原本很重的环境管理变成一键非常轻量而且便捷的事情。

bd27c1ec48c6c1ee48cf53433b08bfec.png

对于用户而言,可以利用以上能力解决一些日常开发协作中的问题:

  • 特性分支规范化: 特性分支是当前软件开发团队普遍使用的一种分支模型,要求开发人员根据不同的开发任务拉取独立的特性分支,并在这个分支上完成所对应任务的开发工作,起到聚合和隔离代码变更的作用。特性分支对于大型团队隔离不同特性之间的相互影响,做到灵活控制上线周期和发版方式来说效果非常明显。但是特性分支在企业落地中普遍存在几个问题:1)特性分支命令不规范,因为分支需要开发人员自己创建,经常会出现各种不规范的分支名称增高管理成本;2)代码夹带,很多开发人员认为特性分支操作太繁琐,经常会为了省事儿把多个特性在一个分支上一起开发,这样会造成后续发版过程中无法拆分清楚代码,造成未经审核的代码被夹带上线,严重的时候可能造成生产问题;3)操作流程复杂造成的误操作,特性分支要求开发团队具备非常严格的流程执行纪律,特性分支到发布分支再到主分支的合并过程不能随意跨越,但实际操作过程中很多团队并不能很好的执行这个流程,教育和培训成本都很高。这些问题的根源在于,git分支操作过于灵活并且可以在开发机本地完成,使得这个流程无法完全在线上闭环完成。使用云原生IDE之后,可是实现整个编码开发过程的线上化,不再依赖开发人员本地环境,实现完整的流程线上化闭环。

  • 测试环境独立化: 测试环境的获取一直都是软件测试流程中的一个难题,受限于企业资源和自动化能力问题,大多数的开发团队仍然依赖开发人员手工部署测试环境。对于测试来说,最好能够给每个测试目标都提供独立测试环境,比如:手工测试应该针对每个测试人员的每个测试轮次提供,自动化测试应该针对每个被测版本的每个测试轮次提供。考虑上测试环境被测试用例污染的问题,还需要提供快速重置测试环境的能力。传统模式下,以上这些问题都没有特别好的解决方案,关键问题在于2个环境标准化能力不足(IaC实践没有被引入到开发测试阶段)和资源限制(容器化实践没有被引入到开发测试阶段)。使用云原生IDE,随用随起,用完即焚的环境调度能力可以有效解决标准化的问题,VMLC能力可以有效应对资源限制问题。开发环境独立化问题得到完美解决。

  • 基于代码评审上下文的临时环境: 拉取请求时有效的代码评审机制,但是代码库所提供的拉取请求只能帮助评审者比较代码,无法帮助评审者从功能的角度验证代码的正确性。虽然CI/CD流水线中可以嵌入各种质量门禁,但是都无法让评审这从用户的角度了解应用行为的正确性。使用云原生IDE我们可以针对代码评审的上下文创建一个临时的让评审者可以直接进行操作,从用户的角度进行验证功能,辅助完成代码评审过程。

以下是本次Meetup的视频回访,Codespaces for Azure DevOps的演示部分在视频的43分钟开始。

274c1939b7be21f4dc77c6b158fd3467.jpeg

另外,以下视频中也对这个插件进行了完整的演示和介绍

23742415d2400235c1cb63238609288a.jpeg

S01E04 预告 - CLI 详解

346bccea89d5981607bfa03b445fa142.png

时间:2022.9.21 周三晚20:30 (本周特殊原因临时改在周三) 

观察员:衣明志,烟台易云网络创始人/资深.NET开发者/前微软最有价值专家MVP

主题:SmartIDE CLI 详解

本周的Meetup将围绕SmartIDE的使用场景展开,CLI是SmartIDE产品架构中与其他类似产品最大的差异。大多数CloudIDE都会提供CLI工具,但是这些CLI都是作为辅助性工具存在的,也就是说用户使用CLI连接到CloudIDE服务来完成类似端口转发,如果脱离的CloudIDE服务,这些CLI本身是无法单独使用的。

1f6e95fe4cd3967ddf6029e28a81fe8b.png

SmartIDE的CLI则不同,用户可以使用CLI直接创建、停止,删除,清理远程/云端工作,这个过程无需CloudIDE服务(SmartIDE Server)的存在。

这样设计的目的是为了方便个人开发者可以非常轻量的管理自己的远程/云端工作区,无需预先部署Server。这样,个人开发者可以在需要的时候使用一个 smartide start 指令即可在任何资源上启动远程/云端工作。

从开发和调试的角度来说,CLI工具的迭代速度是带有WebUI或者API类型的应用无法比拟的。因为CLI极度简单的操作方式,我们无需处理界面的布局,美观,操作体验,各种边界条件等问题,可以专注于业务目标的实现。这种快速迭代能力让我们可以更早的触达用户,验证产品核心功能并及时调整产品方向。在过去的6个月,CLI的发布速度是平均每天3.8个版本。

CLI封装了管理远程/云端工作区的所有能力,这让用户利用CLI来搭建自己的CloudIDE系统,实际上SmartIDE Sever 本身就是这样工作的,通过将 CLI 打包成 tekton流水线任务,SmartIDE Server 的所有工作区操作都不会直接调用虚拟机或者k8s集群,而是通过CLI来完成。借助CLI的快速迭代特性,我们的Sever开发人员可以更加专注于用户体验和企业级功能,而不用关心底层工作区调度问题。对于希望构建企业内部CloudIDE平台的组织来说,利用CLI的这种可集成特性,可以非常快速底层本的完整平台的搭建,不用去关注与虚拟机以及k8s集群进行操作的细节问题。

我们当前已经提供了gitlab-ci的集成示例,未来我们会提供更多各种类型的DevOps系统场景。

Meetup内容

本次Meetup将详细演示以下操作:

  • SmartIDE CLI 安装和基本操作

  • 使用 start 指令在本地,远程主机和k8s集群上启动远程工作区

  • 使用 host 指令将Linux主机注册为开发环境

  • 使用 list/start/stop/remove 指令管理远程工作区生命周期

  • 使用 new 指令从预制的开发环境模板启动新开发环境

  • 使用 init 指令对现有代码库进行初始化,自动完成 IDE配置文件 的生成和适配

  • 使用 login/logout/connect 为Server工作区提供端口转发支持

  • 辅助功能指令 config/version/reset/debug

  • 第三方系统集成:在 gitlab-ci 中集成smartide cli实现云原生IDE调度能力

报名方式

扫描海报中的二维码通过B站直播间预约

直播抽奖

一等奖1名:JetBrains全系列产品激活码(价值1500元)

二等奖2名:SmartIDE 文化衫

123f3b5bd3564dd1a3f9f625b6492c81.png

aff007551674aee544bab58db488786d.gif

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

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

相关文章

操作Checkbox标签

在前端开发中,少不了对Checkbox的操作。 常用的的方法有2个:.is()和.prop()方法。前者是判断 checkbox的状态,选不是未选。而后者为checkbox设置一个值,可以设置checkbox是true还是false。写个小例子,练习一下&#xf…

memcache在项目中的应用

一 安装memcache 具体流程这篇文章有写到: 点击 链接 二 在项目中应用memcache 为了减轻数据库的查询压力,所以我们把一些不经常变动的数据进行缓存,用户查询时,如果查询的要求是一样的,我们就memcache缓存中读取数据并返回去,如果查询要求变了,我们再到数据库中查询,并将查…

Dapr 证书过期了怎么办? 别慌,有救!

一、背景Dapr 默认证书有效时间是1年,证书过期后就不能执行相关控制面和数据面的交互了,如下图:二、查看证书有效时间通过dapr mtls expiry 看到期时间,具体参见命令https://v1-7.docs.dapr.io/reference/cli/dapr-mtls/dapr-mtls…

js高级程序设计的笔记(一)

2019独角兽企业重金招聘Python工程师标准>>> 1.js中的 null : 如果只意在保存对象的变量还没有真正的保存对象之前,就需要先把该变量保存 null值, null代表空对象的指针 2.函数的参数对象 arguments的理解。 argument对象的length属性 实例 f…

Redis在PHP项目中的应用

一 运行redis服务端 出现上图的图形,就说明redis服务端开启成功,并且开启了密码功能(如果不加载配置文件,连接redis是不需要密码的,这样,会给我们的程序带来很大隐患) 密码的设置: 在redis配置文件中,搜索requirepass ,后面设置密码 比如 : requirepass G506myredis 则表示此…

上汽拒绝HW符合商业逻辑

不久前,上汽董事长陈虹表示“与HW合作自动驾驶是不可接受的。这就好比一家公司为我们提供整体的解决方案,如此一来,它就成了灵魂,而上汽就成了躯体。对于这样的结果,上汽是不能接受的,要把灵魂掌握在自己手…

javac compiling error ( mising package)

javac 编译java源文件时,提示 package does not exist 的错误 Test.java import java.security.MessageDigest; import org.apache.commons.codec.binary.Hex;public class Test{public static void main(String args[]){boolean isAlarmed true;boolean aa isAla…

使用ffmpeg录音

官方教程:http://ffmpeg.org/ffmpeg.html 录音方法: 开始找到了这个方法,但是不行呀,好像是没有这个oss吧。 oss 是linux 下的声音相关的东西,与alsa 一样,不过oss 是商业的, 而/dev/dsp 是oss …

Mysql慢查询日志的使用 和 Mysql的优化

一、生成实验数据 原理:sql 蠕虫复制(这种生成数据方式同样适用于数据表中有主键的情况)。 insert into comic (name,pen_name,cover) select name,pen_name,cover from comic 二、慢查询日志设置 当语句执行时间较长时,通过日…

thinkphp出现Call to undefined function Think\C() in ... online 313

造成这个问题的原因很多,在这里我只说明我自己遇到之后解决的办法 我将functions.php改成了function.php之后,修改了一些其他无关紧要的东西出现了这个问题,来回排查,各种尝试,最后,将function.php改回functions.php,可以正常运行

WPF效果第一百九十九篇之Gamma曲线

前面效果中分享了模块对比;今天大周末那就再来分享一下最近实现的效果;基于YX^n公式根据不同的系数绘制Gamma曲线效果如下图:1、曲线的话,咱就用最简单的方式绘制一堆点:PathFigure pathFigure new PathFigure(){StartPoint new Point(0, count),};for(double x 0; x < 1…

深入理解Spring Boot数据源与连接池原理

​ Create by ysterfoxmail.com 2018-8-2一&#xff1a;开始 在使用Spring Boot数据源之前&#xff0c;我们一般会导入相关依赖。其中数据源核心依赖就是spring‐boot‐starter‐jdbc 如下 <dependency><groupId>org.springframework.boot</groupId> …

Dapr 集成 Open Policy Agent 实现 接口的访问控制

大型项目中基本都包含有复杂的访问控制策略&#xff0c;特别是在一些多租户场景中&#xff0c;例如Kubernetes中就支持RBAC&#xff0c;ABAC等多种授权类型。Dapr 的 中间件 Open Policy Agent 将Rego/OPA策略应用到传入的Dapr HTTP请求中。Open Policy AgentOpen Policy Agent…

【招聘(大连)】北森云计算 .NET 专场招聘

为了更好的实现战略布局&#xff0c;逐步形成以三个产品研发中心&#xff08;北京、成都、大连&#xff09;为主&#xff0c;青岛和南京为辅的产品研发团队配置。北森云第三研发中心&#xff08;大连&#xff09;正式成立&#xff0c;目前大连的人选招聘正式开启&#xff0c;欢…

C#多线程编程-必知必会

“发现问题的能力&#xff0c;运用技术解决问题的能力&#xff0c;是一个技术人成长的关键”图片故事&#xff1a;洋姜的花&#xff0c;拍摄于2022年7月23日&#xff0c;地点&#xff1a;北京奥林匹克森林公园 &#xff0c;摄影师&#xff1a;刘先生概要&#xff1a;使用C#发起…

『中级篇』Dockerfile详解(17)

一般的&#xff0c;Dockerfile 分为四部分&#xff1a;基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 ####官网学习 https://docs.docker.com/engine/reference/builder/#usage ####FROM 必须为第一个命令&#xff0c;指定基础镜像 FROM <image> FROM &…

KestrelServer详解[1]:注册监听终结点(Endpoint)

具有跨平台能力的KestrelServer是最重要的服务器类型。针对KestrelServer的设置均体现在KestrelServerOptions配置选项上&#xff0c;注册的终结点是它承载的最重要的配置选项。这里所谓的终结点&#xff08;Endpoint&#xff09;与“路由”介绍的终结点不是一回事&#xff0c;…

快来加入阿里云大学【云学院】班级助理招募—机会稍纵即逝,错过遥遥无期!...

2019独角兽企业重金招聘Python工程师标准>>> 如果你对云计算、大数据、云安全、人工智能领域感兴趣~ 如果你想从事与此相关的工作~~ 如果你又喜欢边交流边学习的方式~ 那么&#xff0c;加入我们吧&#xff01; 我们将为你提供一个广阔的平台&#xff0c;让你接触到云…

深入理解ajax系列第五篇——进度事件

前面的话 一般地&#xff0c;使用readystatechange事件探测HTTP请求的完成。XHR2规范草案定义了进度事件Progress Events规范&#xff0c;XMLHttpRequest对象在请求的不同阶段触发不同类型的事件&#xff0c;所以它不再需要检査readyState属性。这个草案定义了与客户端服务器通…

对象(poco)深度克隆

提供深度克隆对象功能,基于编译表达式实现&#xff0c;性能与原生代码几无差别&#xff0c;远超 json/binary 序列化实现。1. 简单示例class Person {public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }public DateTime Birth { get; s…