关于nocalhost:Nocalhost云原生开发新体验
本文为 CSDN 博主「祈晴小义」(黄鑫鑫:腾讯云 CODING DevOps 研发工程师、Nocalhost 我的项目的外围开发者)的原创文章,并依据作者在 CSDN 云原生 Meetup 深圳站的演讲内容进行了整顿,次要分享 Nocalhost 在解决云原生开发问题上的思路和摸索,并展现 Nocalhost 为云原生开发带来的全新体验。云原生场景下的开发痛点当咱们的利用架构从传统利用过渡到云原生利用的时候,会发现利用架构的复杂性大大晋升了,原来的传统利用组件少,部署简略,咱们往往能够在本地开发完一个传统利用后,把它丢到服务器上就能跑起来。而对于云原生利用来说,利用被拆分成一个一个粒度更小的微服务,各个服务之间有着盘根错节的关系,从而让开发环境的搭建和服务的调试变得异样艰难。 本地部署 VS 集群部署当咱们要开发云原生微服务利用时,如何将咱们的开发环境搭建起来呢?常见的有两种形式:本地部署和集群部署。 本地部署是将一整套微服务利用部署到本地的开发机器上,如下图所示: 这种形式会带来以下几个问题: 1. 影响开发机器的性能。微服务利用往往规模比拟大,动辄几十上百个服务,都泡在本人的开发机上可能会让电脑变得很卡,影响工作效率。 2. 环境无奈共享,资源节约重大。当咱们须要在本地部署起整套规模比拟大的微服务利用的时候,就须要应用配置较高的开发机器,并且每台开发机器的开发环境只有一个开发人员能应用,即使该开发人员只须要开发其中一个或某几个服务,也无奈将其它应用不到的服务共享给其它开发人员应用。 3. 对于一些规模很大的微服务利用,本地机器可能还没有方法跑起来。 另外一种形式将微服务利用部署到云上的 K8s 集群里,如下图所示: 这种部署形式能够较好地进步资源利用率,然而它会让开发和调试利用时的反馈链路被大大拉长。 咱们开发传统利用时的工作流是:在本地编写好代码 -> 把代码进行编译 -> 运行程序查看后果,如下图所示: 这个过程往往很快,所以咱们能够在做完一次代码的小改变当前,就把它运行起来查看后果。 然而在开发 K8s 集群上的利用时,工作流变成了:批改代码 -> 编译程序 -> 将程序打包到 Docker 镜像 -> 将 Docker 镜像推送到镜像仓库 -> 批改集群中容器的镜像版本,期待 K8s 将新版本的镜像部署下来 -> 查看后果,如下图所示: 这个流程可能须要耗时几分钟,当这个循环反馈被大大拉长了当前,无疑会让开发的效率大大降低。 目前支流的云原生开发方式手动打包推送镜像这种形式是最原始的形式,工作流大体如下: 编写完代码当前,在本地编译生成二进制文件或者 jar 包之类,而后通过 Dockerfile 构建出 Docker 镜像,再将镜像推送到 Docker 仓库,再通过批改工作负载的 yaml 定义中镜像版本,部署新版本容器的工作则交给 K8s 去做,只不过部署调度的过程可能有点漫长,须要期待 K8s 将新版本的 Pod 调度运行起来之后,咱们能力看到代码批改的成果。如果代码改变得频繁,这个流程显然是十分繁琐的。 ...