《王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLIDesktopServer 的全平台实践经验.pdf》由会员分享,可在线阅读,更多相关《王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLIDesktopServer 的全平台实践经验.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
1、第三届中国Rust开发者会基于 Rust 编程语构建 Amphitheatre CLI/Desktop/Server 的全平台实践经验王宜国-独开源软件作者RUST CHINA CONF 2023 项背景介绍 产品功能演示 应场景概览项介绍 概念 架构设计 技术实现设计与实现纲Amphitheatre 云开发环境(Cloud Development Environment),在云端即时启动新的、动化的开发环境,并在秒钟内开始开发。就像 docker-compose up 或docker build&kubectl apply项介绍开发从代码库克隆代码到本地硬盘,打开 VS Code 编辑器进编
2、码AMP在 Amphitheatre 中创建即可实时部署到云端进测试和验收上线利 Amphitheatre 配置件,执标准 CI/CD 作流,轻松发布!开发程师需要在本机安装各种编程语的运时和相关的框架以及库,随着业务规模的增,多语多版本的维护和管理变得越来越复杂。技术栈杂多研发流程达个步骤:安装开发软件、配置环境、克隆代码、开发、本地调试、提交代码、编译构建、动化测试、部署到测试环境、测试验收、合并代码到主线、部署到产环境研发流程繁起因:开发者之痛为了部署测试,不仅要学习容器化、Kubernetes,还要申请资源安装配置各项中间件,学习成本,费费复杂的基础设施BuildTestCodeDep
3、loyReleaseTestIntegratePushInner LoopOuter Loop戏单(正在测试中的环境)1排练(申请环境)2替换(切换版本)3演出(运)搭档适于 29+种编程语您可以在个地测量项中所有语以及领域中所有项的可靠性、安全性和可维护性。从语到语,我们为您提供有凝聚的体验和致的指标集以及数百条静态代码分析规则。需配置环境,持多种编程语和框架KaynSonaRedisETCDRivenEventAccountProjectActivityTariqShareNS 1KaynSonaRedisETCDRivenEventProjectNS 2KaynSonaRedisETCD
4、RivenEventAccountProjectActivityTariqShareNS 3Docker ContainerKubernetes Pod轻松创建限量的隔离集成测试环境持微服务架构体系和多协作联调测试KaynSonaRivenEventAccountProjectActivityTariqShareRedisETCD可让您完全跳过镜像构建,使新代码更新正在运的容器,只需秒钟不是分钟。本地开发实时部署到远程集群如何作的?Kubernetes 集群更改 资源定义定义执资源资源定义资源定义更改件更改户触发件更改frontend12hshopping-cart15mcatalogue3d
5、件更改户触发架构概览AMP Cloud AccountAmphitheatre apiserverWeb ConsoleDesktopCLIInternetAMP InfrastructureRemote InfrastructureRemote Cloud AccountVPCKubernetes镜像仓库(ECR、GCR、ACR)负载均衡器Env 1 NamespacePod 1Pod 2Pod 3Pod 4AMP Namespaceamp-directoramp-controllers123456Internet流程图:创建流程图:运Live Update 模式原理开启实时更新(Live
6、Update)模式时,当你在程根录放置.devcontainer 录时,Amphitheatre 终端软件会识别.devcontainer 规范,借助内置的 Syncthing 将变化的代码增量同步到 Amphitheatre 集群内,让你可实时构建并预览到效果。为了加速构建,集群内将直接编译并替换掉当前可执的进程,全量构建镜像再发到到镜像仓库,然后再拉取镜像替代旧的 Pod 等系统慢的流程。BuildpacksHow Buildpacks work分析探测恢复构建包可于优化构建和导出阶段的件。查找组有序的构建包以在构建阶段使。恢复构建从缓存中恢复图层。将应程序源代码转换为可以打包到容器中的可
7、运件。导出创建最终的 OCI 图像。Packages and Cratesclidesktopcommonclientapiservercontrollersresourcesschemascmconfiggithubgitlabclapiced.rsaxumkube-rskube-rs基于 kube-rs 编写 Kubernetes Controller 及资源操作Operator(CRD Controller)ClusterCRDreconcileReconcile Period(60s)Kubernetes 资源布局示意kube-rs:Kubernetes 资源操作 使定义资源时,通过
8、kube-derive 的 proc_macros 动成代码。得益于 Kubernetes 抽象的 CRUD 接设计,操作其它常规 Kubernetes 资源如 Pod、Service 等同样极其简单。kube-rs:Kubernetes Controller 个典型的控制器(Controller)即是个反射器(reflector),连同任意数量的观察者,在内部调谐事件,通过个调节器发送事件。GitHub CI Runner 太慢?基于 Github Actions 构建容器镜像及优化策略 Dockerfile 多阶段构建,充分利层(Layer)缓存加速能;使 Cargo Chef 缓存你的
9、Rust 项的依赖项;Github Actions Matrix 矩阵构建 amd64/arm64 等多架构镜像;利 Github Actions Cache Management 缓存能,加速 CI 执速度;跨多运器分布式构建 Docker 镜像;Github Actions 建运器;参考实例:https:/ https:/ stageBuilding stage12Final stageDistribute build across multiple runners123456cirun:Create On-demand Self-Hosted Github Actions Runners
10、 on your Cloud!Depot:Cloud-accelerated container builds up to20 x faster 需配置环境,持多种编程语和框架 轻松创建限量的隔离集成测试环境 持微服务架构体系和多协作联调测试 本地开发实时部署到运程集群 交互式运实例快照,可键分享!可插拔的态应市场,全位提升效率 Amphitheatre Cloud 按需付费,开箱即Amphitheatrehttps:/amphitheatre.appInstantly spin up fresh,automated dev environments in the cloud and start developing within seconds.Make Development FasterThank you!扫右侧维码图案加我为好友