文章目录
大家好,很高兴能参加 CSDN 举办的云原生 Meetup。今天给大家带来的分享是:《Nocalhost: 云原生开发新体验》。我是来自腾讯云 CODING DevOps 的黄鑫鑫,同时也是 CNCF Sandbox 项目 Nocalhost 的核心开发者。今天的分享主要分为以下几个方面:
- 云原生场景下的开发痛点
- 目前主流的云原生开发方式
- Nocalhost 初体验
- Nocalhost 核心机制
- Nocalhost 高级特性
1. 云原生场景下的开发痛点
当我们的应用架构从传统应用过渡到云原生应用的时候,会发现应用架构的复杂性大大提升了,原来的传统应用组件少,部署简单,我们往往可以在本地开发完一个传统应用后,把它丢到服务器上就能跑起来。而对于云原生应用来说,应用被拆分成一个一个粒度更小的微服务,各个服务之间有着错综复杂的关系,从而让开发环境的搭建和服务的调试变得异常困难。
本地部署 VS 集群部署
当我们要开发云原生微服务应用时,如何将我们的开发环境搭建起来呢?常见的有两种方式:本地部署和集群部署。
本地部署是将一整套微服务应用部署到本地的开发机器上,如下图所示:
这种方式会带来以下几个问题:
- 影响开发机器的性能。微服务应用往往规模比较大,动辄几十上百个服务,都泡在自己的开发机上可能会让电脑变得很卡,影响工作效率。
- 环境无法共享,资源浪费严重。当我们需要在本地部署起整套规模比较大的微服务应用的时候,就需要使用配置较高的开发机器,并且每台开发机器的开发环境只有一个开发人员能使用,即便该开发人员只需要开发其中一个或某几个服务,也无法将其它使用不到的服务共享给其它开发人员使用。
- 对于一些规模很大的微服务应用,本地机器可能还没有办法跑起来。
另外一种方式将微服务应用部署到云上的 K8s 集群里,如下图所示:
这种部署方式可以较好地提高资源利用率,但是它会让开发和调试应用时的反馈链路被大大拉长。
我们开发传统应用时的工作流是:在本地编写好代码 -> 把代码进行编译 -> 运行程序查看结果,如下图所示:
这个过程往往很快,所以我们可以在做完一次代码的小改动以后,就把它运行起来查看结果。
但是在开发 K8s 集群上的应用时,工作流变成了:修改代码 -> 编译程