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

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

作者:花三(王俊)


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
  • 配置完成后,选择“跳过高级设置,创建应用”,触发应用创建和应用版本的构建部署。

image.png

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


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


可视化流程

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

image.png

测试验证

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

image.png


代码安全,源码即资产


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


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


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


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


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

image.png

SAE 2.0 能力升级回顾


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


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


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

image.png

相关实践学习
基于小程序Serverless开发个人相册小程序
本场景基于小程序云Serverless+小程序开发者工具(IDE),快速搭建个人相册小程序
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践  
相关文章
|
24天前
|
Java Maven
分模块开发的意义及开发步骤
分模块开发的意义及开发步骤
24 3
分模块开发的意义及开发步骤
|
1月前
|
搜索推荐 JavaScript Java
项目开发过程中实际遇到的几个问题处理
项目开发过程中实际遇到的几个问题处理
111 2
|
1月前
|
资源调度 运维 Devops
云效产品使用报错问题之构建时总是卡在拉包的地方不动要如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
8月前
|
敏捷开发 测试技术
推三返一开发稳定版丨推三返一项目系统开发详细指南/方案需求/步骤逻辑/流程功能/案例设计/技术架构/源码程序
推三返一系统开发是一种软件开发模式,也被称为迭代增量开发模式。它是一种敏捷开发方法的一种,通过将整个开发过程分为多个迭代周期,每个周期都会增加新的功能和特性,并在每个迭代周期结束后进行测试、反馈和修改。推三返一系统开发的核心思想是“推进三步,反馈一步”。
|
敏捷开发 数据可视化 搜索推荐
大话项目:项目多、乱、慢,怎么管理项目更高效?
根据国外调查统计,大部分的企业会同时进行11-25个项目。那么现在,当前你的团队同时进行多少个项目呢?是完全没有数据支撑、两眼一抹黑,还是超过了这个平均值?
|
Kubernetes 测试技术 Go
分享:一文搞清楚应用发布到k8s集群的基本流程
分享:一文搞清楚应用发布到k8s集群的基本流程
328 0
|
缓存 NoSQL 关系型数据库
Laravel部署流程和部署优化思路
Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。
567 0
|
测试技术
软件测试面试题:在手工接口测试或者自动化接口测试过程中,上下游接口有数据依赖如何处理?
软件测试面试题:在手工接口测试或者自动化接口测试过程中,上下游接口有数据依赖如何处理?
298 0
|
测试技术
软件测试面试题:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
软件测试面试题:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
575 0
|
前端开发 测试技术

热门文章

最新文章