2023 年 3 月 11 日,CSDN 研发效能 CMeet 技术沙龙在成都圆满举办。倍赛科技研发负责人王家军老师作为本次沙龙的特邀讲师之一,为广大技术开发者、架构师、产品与研发效能领域在职者及业余爱好者分享了《GitLab CI + Kubernetes DevOps 实战》。活动聚集了1700多位线上与85位线下小伙伴,讲师与同学在分享中交流,气氛热烈。

王家军老师现任倍赛科技研发负责人。拥有十五年互联网软件工程实践和团队管理经验,擅长云原生环境下大流量和复杂业务的分布式应用开发和架构,拥有丰富的DevOps实践经验。曾任职于深圳腾讯、上海盛大和成都数联铭品。

本次沙龙中,王家军老师分享了团队如何使用GitLab CI来自动构建和部署Java 微服务架构SaaS 应用(AI 数据标注)到Kubernetes 集群,包括后端和前端软件包构建、镜像构建和自动部署,以便提升开发效率,避免人为错误,对于技术开发者、架构师、产品、研发效能领域在职者及业余爱好者都具有重要的参考价值。

一、Kubernetes环境微服务应用开发
在第一部分中,王家军老师首先介绍,对于小规模技术团队来说,怎样避免引入太多微服务组件,尽量复用 Kubernetes 提供的功能来使用微服务架构。
而微服务通常包含大量服务,除了应用服务,还包括大量后端的存储或消息服务,资源消耗非常高,本地电脑的资源难以满足。除了资源消耗高,部署也比较复杂,对于新人来说,如果想要搭建完整的本地开发环境,难度比较大。即便已拥有相应的条件与资源,后期协作的成本也比较高,因为各个微服务互相依赖,需要及时同步他人的修改。

对于这些痛点,王家军老师讲解,通过配置合适的融合开发环境,可以大大减少资源消耗。融合开发环境由本地个人开发环境与Kubernetes 连调开发环境组成,本地只启动当前需要开发的微服务,另外通过端口映射对外暴露 Kubernetes 连调开发环境里的内部服务。

二、GitLab CI 软件自动化构建和发布
在第二部分中,王家军老师首先介绍了GitLab CI Pipeline:“Pipeline 的作用是定义 CI/CD 的具体过程,主要包含Job和Stage两类对象,Job 定义做什么,Stage 定义什么时候做。每个 Job 必须且只能归属到某个 Stage,并按 Stage 的顺序执行,同一个 Stage 下的多个 Job 并行执行。Job 由对应类型的 Runner 来执行,通过 Tag 来指定 Runner 类型。Pipeline 执行可在提交代码时自动触发,也可手动触发。”
接下来,王家军老师结合实际案例讲解了在 GitLab CI 中如何构建 Java 服务,包括三个主要任务:构建 Jar 包、构建 Docker 镜像以及部署服务到 Kubernetes 集群。

在最后一部分,王家军老师又结合了实际应用讲解了 GitLab CI Python PyPI 包的构建和发布。
倍赛多模态训练数据平台上,用户通常需要进行大量标注工作。以自动驾驶场景为例,一张点云数据中可能存在几十辆、甚至上百个车辆与行人目标。这样的情况下,人工手动标注并尽量保证 2D 框与 3D 框贴合目标非常耗时费力,倍赛团队通过引入算法模型进行辅助,完成自动化预标注,即可加速多模态训练数据的处理效率,进而提高建模效率,特别是在 2D & 3D 多模态融合数据方面,标注效率的提升可达 72%。
在平台数据可视化与自动化标注的背后,就涉及到了内部 PyPI 包的发布工作。如果在列表中同时加载几十个点云文件,除了网络流量的开销,前端渲染也会产生比较大的开销。如果把点云数据先渲染成一张底图,数据量就会变小,这需要算法团把渲染脚本或工具以 PyPI 包的形式进行同步。

上一篇
下一篇