小而美:两步完成从源码到应用的极简交付

作者:花三(王俊)

Serverless 应用引擎 SAE 是阿里云推出的一款零代码改造、极简易用、自适应弹性的容器化应用托管平台,面市以来为几万家企业客户提供服务,运行稳定,广受好评。

SAE 的出现解决了众多企业想用 K8s,但是又上手困难的问题,可以用非常低的门槛享受到 K8s 的技术红利。尤其是 SAE 在应用的构建和发布时的顺滑体验,更是帮助中小企业用户极大地提升了研发效能。

本文将主要介绍,如何通过 SAE 快速实现项目从源码到应用的交付与上线。

SAE 两步完成应用交付

在 SAE 上,从源码到应用的交付部署,仅需要进行两步操作:准备代码仓库和创建应用。 完成这两步后,基于持续部署的能力,就可以愉快地进行应用版本的迭代了。

第一步:准备代码仓库

接下来,将以开源项目 excalidraw 为例进行演示,在无需修改任何代码的前提下,在 SAE 上进行应用的快速部署。首先,需要将 excalidraw 项目的开源仓库 fork 到您的个人仓库,当然您可以使用其他的开源项目。

excalidraw 是 GitHub 上一款开源的手绘风格画板项目,开源热度很高。

GitHub 地址:https://github.com/excalidraw/excalidraw

版权许可:MIT License

第二步:创建应用并绑定源码仓库

创建部署应用,这里需要填写应用名、HTTP 监听端口、请求超时时间这几个配置项,其他配置项采用默认值即可。

  • HTTP 监听端口号,即在线应用对外提供 web 服务的端口号,用于 HTTP 流量全托管场景下的请求转发,这里配置 HTTP 监听端口为 3000(excalidraw 项目中默认使用的端口);
  • 请求超时时间,excalidraw 服务初始化启动时,需要耗费一定的时间,因此配置为 60 秒。

绑定源码仓库,选定部署方式为“从源码仓库持续部署”,而后配置绑定具体的仓库和分支即可。

  • 构建类型配置为“系统自动检测并构建镜像”——无需 Dockerfile;
  • 启动命令,配置启动 excalidraw 服务的命令;
cd ./excalidraw-app && vite --host
  • 配置完成后,选择“跳过高级设置,创建应用”,触发应用创建和应用版本的构建部署。

在这里,可以对 SAE 源码部署的能力,有一个全局性的了解:

  • 仓库类型,支持多种类型的 Git 源,包括 GitHub、Gitee、公网 Gitlab、Codeup;
  • 构建类型,支持基于 Dockerfile 的镜像构建方式,同时支持系统自动检测编译的方式,无需提供 Dockerfile,完全由 SAE 自动检测自动编译,最终自动构建打包成镜像;
  • 触发模式,可满足多样的持续部署需求;
  • 镜像仓库,SAE 默认提供镜像的仓库存储能力,不强要求开通 ACR,当然也支持推送镜像到个人 ACR;
  • 启动命令和工作目录,主要为满足个性化的构建要求,同时更多的可拓展可自定义配置的能力陆续研发中,尽请期待。

可视化流程

在应用版本的构建部署过程中,在具体的构建记录中可以查阅所有的环节,包括各个环节的日志和耗时,全流程可观测。构建部署成功后,会生成一个应用的新版本。此时,手动在版本列表-流量配置中,将流量全切换至新版本即可。

测试验证

流量配置完成后,可以直接通过 SAE 默认提供的测试域名,直接访问应用,方便进行快速验证和调试。至此,应用上线完毕,后续可以利用 SAE 提供的持续部署能力,进行迭代。

代码安全,源码即资产

SAE 通过完全隔离和用完即销毁的运行时环境,保证用户的代码安全。

在每一次构建的生命周期中,资源上,运行时环境之间是完全相互独立的,网络上,运行环境之间是完全互相隔离且安全的;Serverless 的构建环境,每一次构建都是从零拉起一个完整的构建环境,用完即毁,达到真正的一次性;源码仅初始化环境时被拉取一次,构建完成后,随着构建环境一起被销毁,期间不留任何痕迹。

云端构建部署,性能与体验

在性能方面,为了保证云端构建耗时能与本地相近,带来最好的云端体验。SAE 不仅对运行时环境的快速拉起做了很多优化,同时还综合分析了每一类编程语言在编译时的不同表现和特征,包括编译型语言和解释型语言,设计实现了一套多级缓存的机制,用于加速项目编译构建时获取外部依赖资源的速度。

  • 运行时优化 + 镜像缓存,实现运行环境的迅速拉起,冷启动耗时 3S 内;
  • 高频依赖或资源直接存在运行时环境的镜像中,可直接本地加载,进行复用;
  • 多样化的、中等频度的依赖或资源,以 OSS 作为缓存媒介,高速拉取,无需走外网;
  • 个性化的、低频的依赖或资源,以镜像作为缓存媒介,第一次拉取的时候需走外网,会存在冷拉取的现象。但是二次构建可以直接从缓存中拉取,进行资源复用,无需再走外网,实现加速。

SAE 2.0 能力升级回顾

弹性能力升级: 弹性效率优化到百毫秒级,支持缩容到 0。并提供闲置计费能力,无请求时 CPU 不计费,弹后更省。

开发者体验升级: 零改造迁移,秒级创建应用,一键灰度。提供 S2A 等丰富的平台工程能力,研发提效。

适用场景升级: 除支持开源微服务 /XXL -job、ElasticJob、Spring Task 等无缝迁移外,新增支持 Web 应用类型,从实例托管到流量托管。

《庆余年2》盗版资源被上传到 npm,导致 npmmirror 不得已暂停 unpkg 服务 Windows 11 将在中国区设备上安装「微软电脑管家」 新款 iPad Pro 使用了 12GB 内存颗粒,但却声称是 8GB 内存 Kotlin 2.0.0 稳定版发布,K2 编译器已稳定 Linus “吃狗粮”最积极! macOS 终端工具 iTerm2 发布重大更新 3.5.0:集成 ChatGPT、让 AI 帮你写命令 开源日报 | Kotlin 2.0.0;简体中文压缩数据只有6TB;AI不是核弹;全球首个开源大规模"NoC IP";华为有哪些能力是当前不可代替的? 微软 Windows 过渡到 Arm 架构的核心组件 —— “Prism”模拟器 通义千问 GPT-4 级主力模型降价 97%,1 块钱 200 万 tokens curl 8.8.0 正式发布
{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3874284/blog/11188709