幽门梗阻

注册

 

发新话题 回复该主题

专访CNCF大使王炜让云原生开发回归 [复制链接]

1#
北京白癜风医院好 http://yyk.39.net/bj/zhuanke/89ac7.html

近期,腾讯云CODINGDevOps开源了云原生开发环境-Nocalhost。

根据官方文档介绍,Nocalhost来源于NoLocalhost,其含义是开发者不再依赖本地计算机的编码、调试和测试过程。他是一个云原生开发环境,旨在解决云原生下开发难的问题。

例如,在Kubernetes环境下进行微服务开发,通常会面临以下问题:

?每次修改代码,都需要经过构建映像-推送映像-拉取映像-重新启动应用程序(Pod)的过程,开发的反馈循环非常长(10分钟以上);?为了开发某个微服务,必须要在本地启动整个环境和所有微服务,这带来了过度依赖本地资源的问题;?开发人员只专注于他们自己的服务,随着迭代的进行,本地启动或更新完整的开发环境越来越难;?微服务之间的依赖关系和启动顺序难以控制;?新入职的员工一般需要2-3周的时间来熟悉开发环境的搭建及学习背景知识

那么,Nocalhost到底是怎么解决以上问题的?Nocalhost的开源,又会给K8s生态带来哪些影响呢?带着这些问题,我们与Nocalhsot的设计者之一、新晋CNCF大使、云原生社区成员,来自腾讯云CODINGDevOps的王炜,详细聊聊关于Nocalhost的产品、技术和生态。

采访嘉宾

以下为采访原文:

Q:首先跟大家介绍一下Nocalhost的起源吧

王炜:Nocalhost的起源其实是解决CODING自身开发难的问题。CODING在早期已经拥抱微服务、云原生和Kubernetes,但在我们日常开发过程中,发现Kubernetes虽然解决了部署和运维的问题,但同时也带来了开发难的问题。

最典型的痛处是每写几行代码,要观察代码效果或者调试,就不得不重新构建镜像-推送镜像-修改工作负载镜像版本-等待Pod重建的漫长过程。这个过程虽然可以用自动化的CI/CD来解决一部分人工手动运行问题,但其核心不变。

此外,本地全量运行CODING所需的资源要求非常高,早期开发人员不得不配备一台8核64G的电脑来开发,后续也尝试过为每个人都配备了一台远程的高配开发机,但开发效率仍然无法提升。

针对这种场景,我们开始探索相应的解决方案,并最终将该实践开源成为了Nocalhost项目。

Q:在云原生环境下,开发难除了体现在每次编码需要重新构建镜像以外,在实践中还遇到了其他痛点吗?

王炜:痛点非常多!以后端同学为例,从入职开始,熟悉和配置开发环境需要花大量的时间和精力。另外,好不容易搭建好了开发环境,需要更新微服务组件时往往出现大量组件无法启动。当然这可能更多的是应用管理问题了,目前社区也有非常好的应用模型实践。

但问题是,统一维护这套应用模型是非常吃力的,如果使用它的场景非常低频,那么问题暴露会越来越迟,最终与无人维护没有多大差别。而所有开发者的环境又是独立的,遇到问题总是自己解决而不是往上层去更新应用模型,这会进一步导致应用版本越来越老旧。

所以,我们考虑开发环境是必须要集中化管理,开发环境的部署来源只能是独立维护的应用模型,业务组协同维护并产生部署-修改循环效应,才能实现一致性的应用管理。

Q:所以Nocalhost会管理应用和开发环境吗?

王炜:是的。应用管理是使用外部标准,例如Manifest文件组合成的应用、Helm应用和Kustomize应用等,它是用于拉起开发环境的标准安装方法,不同的开发者的开发环境在Nocalhost里的定义是开发空间(DevSpace),目前是采用Namespace的方式进行隔离和管理的,不同开发空间后续将支持协作开发。应用和开发空间的管理都可以在Nocalhost控制台来实现。

Nocalhost开发空间Q:Nocalhost有哪些组件组成?

王炜:Nocalhost主要由这几个组件组成:

?管理侧(面对开发环境的管理人员)?Nocalhost控制台:提供开发人员管理、应用管理、开发空间管理等功能?NocalhostDep组件:提供应用依赖管理,控制微服务依赖启动顺序?用户侧(开发者)?nhctl-cli:Nocalhost命令行工具,提供完整的功能?IDE插件:提供VSCode插件和JetBrains插件

Nocalhost工作示意图:

Nocalhsot工作原理图Q:Nocalhost对开发者来说最直观的使用感受是什么?

王炜:对开发者来说,最直观的使用感受是开发过程变得非常简单,从部署开发环境到开发只需要在IDE插件上进行简单的四步操作:

1.一键拉起开发环境

一键拉起开发环境

2.点击“锤子”进入待开发组件的“开发模式”

进入开发模式

3.在本地IDE编写代码,保存4.无需重新构建镜像,新代码在远端容器直接生效

在使用Nocalhost进行服务开发时,屏蔽了开发所需的复杂背景知识,只需要具备语言开发基础,就能够立即进行业务代码的开发工作。

目前在CODING最快的实践是:刚入职的新同学,中午接到需求后,下午就已经提交了业务代码。令人兴奋的是,他面对的需求是一套由多个微服务组成的系统,这一切都是建立在他不了解任何CODING微服务架构、开发环境、甚至是业务代码的仓库地址(Nocalhost已提前配置好)的背景下独立完成,这在以前的开发模式下是无法想象的。

Q:比如我已有一套业务系统,怎么使用Nocalhost?

王炜:对于已有的业务系统,首先确认是否为Kubernetes标准的应用安装方式,例如Manifest、Helm和Kustomize。

其次,Nocalhost不侵入任何的业务逻辑,只需要使用声明式的配置方式提供开发参数配置即可,以开发Istio提供的Bookinfo为例。

以下是存放Bookinfo安装文件的Git仓库:

分享 转发
TOP
发新话题 回复该主题