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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月15万CU 3个月
简介: 本文将主要介绍,如何通过 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

相关实践学习
1分钟部署经典小游戏
本场景介绍如何使用Serverless应用引擎SAE 1分钟快速部署经典小游戏。
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践  
相关文章
|
15天前
|
SQL 缓存 监控
技术方案到底怎么写?7步完美搞定!
总结了作者多年编写技术方案的经验,介绍了如何通过七个步骤来编写技术方案,包括系统用例、功能链路、核心业务流程、数据库设计、接口设计、非功能设计和系统风险点评估,帮助开发人员更高效地进行系统设计和需求分析。
技术方案到底怎么写?7步完美搞定!
|
5天前
|
敏捷开发
敏捷开发的全过程问题之迭代排期时提前梳理下一迭代的需求列表的问题如何解决
敏捷开发的全过程问题之迭代排期时提前梳理下一迭代的需求列表的问题如何解决
|
2月前
|
SQL 监控 测试技术
软件交付问题之项目发布后要关注监控的有效性,如何解决
软件交付问题之项目发布后要关注监控的有效性,如何解决
|
3月前
|
前端开发 Java Serverless
阿里云云效产品使用问题之前端流水线部署时,在构建环节,编译和打包要分开还是放在一起
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
搜索推荐 JavaScript Java
项目开发过程中实际遇到的几个问题处理
项目开发过程中实际遇到的几个问题处理
129 2
|
4月前
|
资源调度 运维 Devops
云效产品使用报错问题之构建时总是卡在拉包的地方不动要如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
问题排查流程——持续⚡️迭代中
通过这个模板能给像我一样小白的人提供一个抓手
|
10月前
|
小程序 IDE 开发工具
小程序从零开始开发到上线的过程
小程序从零开始开发到上线的过程
133 0
|
缓存 NoSQL 关系型数据库
Laravel部署流程和部署优化思路
Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。
585 0
|
前端开发 测试技术
接口测试平台代码实现23:项目列表收尾
好本节,继续收尾项目列表。
接口测试平台代码实现23:项目列表收尾
下一篇
云函数