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

作者:花三(王俊)

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 应用类型,从实例托管到流量托管。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python库之lxml的简介、安装、使用方法详细攻略

Python库之lxml的简介、安装、使用方法详细攻略 简介 lxml是一个用于处理XML和HTML文档的Python库,它提供了简单易用的API来解析和生成这些文档。lxml以其性能和易用性而受到广泛欢迎,特别适合于需要处理大量数据或需要高性能解析的场景。 安装 安装…

运行时异常和编译时异常的区别

Java中的异常被分为两大类:编译时异常和运行时异常。 都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException。这些异常是不检查异常,运行时异常的特点是Java编译器不会检查它,程序中可以选择捕…

纯代码如何实现WordPress搜索包含评论内容?

WordPress自带的搜索默认情况下是不包含评论内容的,不过有些WordPress网站评论内容比较多,而且也比较有用,所以想要让用户在搜索时也能够同时搜索到评论内容,那么应该怎么做呢? 网络上很多教程都是推荐安装SearchWP插…

RK3588 Android13 预安装自己的apk应用及把这个应用设置为默认桌面

1、cp -rf device/rockchip/rk3588/rk3588m_s/preinstall device/rockchip/rk3588/rk3588_t/ 2、给device/rockchip/rk3588/rk3588_t/preinstall/的存放app的文件夹改名为app-imms2,在app-imms2放入app-imms2.apk,编译安卓源码即可, 3、编译完会在out/…

android sp指针的cast

sp<Base> b; sp<Derived> d; b static_cast<Base*>(d.get()); 对于c原生的智能指针&#xff0c;有static_pointer_cast之类的操作方法。可以看cppreference。

Spring Web MVC介绍及详细教程

目录 1.什么是Spring Web MVC&#xff1f; 1.1 MVC定义 1.2 Spring MVC与MVC关系 2.为什么要学习Spring MVC 3.项目创建 4.Spring MVC连接 4.1 RequestMapping 4.2 PostMapping和GetMapping 5.Spring MVC参数获取 5.1 获取单个参数 5.2 获取多个参数 5.3 获取普通对…

通用代码生成器应用场景一,项目前期

通用代码生成器是一种自动化编程软件&#xff0c;是一种先进的编译系统。它具有表级抽象。把系统抽象为域对象&#xff0c;枚举&#xff0c;弹性登录模块&#xff0c;复杂版面和图形报表。使用通用代码生成器完成项目前期&#xff0c;比直接使用对应的高级语言快的多&#xff0…

element Notification 消息过多需要折叠

Notification 消息过多太长 希望能折叠 如图下效果 element-plus 可以将dom 插入到具体的元素 结合css :nth-child 来控制样式达到效果 element dom 只能插入到body中 所以无法使用:nth-child 1.Notification需要消息提示时设置class let eleNum 0 // 弹窗的序号 function…

vue+canvas实现逐字手写效果

在pc端进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字&#xff0c;然后在特定时间后将这个字添加到 outputCanvas 上&#xff0c;形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 <template><div class"container"…

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经

&#x1f604; 整个流程按如下问题展开&#xff0c;用时60min左右面试官人挺好&#xff0c;前半部分问问题&#xff0c;后半部分coding一道题。 各位有什么问题可以直接评论区留言&#xff0c;24小时内必回信息&#xff0c;放心~ 文章目录 1、自我介绍2、介绍下项目&#xff…

金额计算导致的错误问题汇总解决

在日常的开发中&#xff0c;前端计算金额是非常常见&#xff0c;如果不够仔细&#xff0c;考虑不够周全的话&#xff0c;很容易犯错的&#xff0c;金额这个东西一但错了是很严重的&#xff0c;因此总结一些常见的错误&#xff1a; 1.最重要的&#xff0c;涉及到计算的参数一定要…

关于做事方式的小讨论

大家好&#xff0c;我是阿赵。   之前五一劳动节期间&#xff0c;看到了这么一个新闻&#xff1a;某动物园内部收费项目五一期间涨价&#xff0c;喂长颈鹿的树叶&#xff0c;一枝需要30元。然后新闻下面的评论就炸锅了&#xff0c;纷纷的指责动物园太黑心&#xff0c;一枝树叶…

淄博公司商标驳回复审条件及流程

商标是人工审查的&#xff0c;所以不同的人会有不同的想法和意见&#xff0c;导致同一案件的审查结果不同。特别是商标审查周期缩短到5个月&#xff0c;全国平均每个工作日有1万多个商标提交申请&#xff0c;而全国只有一个商标审查单位——国家商标局提交申请。这种情况下&…

从入门到精通:掌握Scrapy框架的关键技巧

在当今信息爆炸的时代&#xff0c;获取并利用网络数据成为了许多行业的核心竞争力之一。而作为一名数据分析师、网络研究者或者是信息工作者&#xff0c;要想获取网络上的大量数据&#xff0c;离不开网络爬虫工具的帮助。而Scrapy框架作为Python语言中最为强大的网络爬虫框架之…

ubuntu当前登录用户IP验证

设置一个白名单列表检查到登录用户IP信息不在白名单&#xff0c;发送信息到指定邮箱 #!/bin/bash# 定义常用IP地址列表文件 KNOWN_IP_FILE"/path/to/known_ips.txt" # 替换为实际路径# 定义邮件接收者 EMAIL_TO"test163.com"# 定义日志文件 LOG_FILE&quo…

2024-5-23

今日安排&#xff1a; 继续审计 nf_tables 源码 && iptables 相关学习♥♥♥♥♥复现 CTF 相关题目♥♥♥♥mount 的使用&#xff0c;学习 namespace (昨昨昨昨昨昨昨昨昨昨昨昨昨天残留的任务)&#xff08;&#xff1a;看我能搁到什么时候♥♥♥静不下心学习新知识就…

qmt量化交易策略小白学习笔记第11期【qmt编程之获取股票订单流数据--原生Python】

qmt编程之获取股票订单流数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 获取股票订单流…

Java版工程行业管理系统-提升工程项目的综合管理能力

工程项目管理涉及众多环节和角色&#xff0c;如何实现高效协同和信息共享是关键。本文将介绍一个采用先进技术框架的Java版工程项目管理系统&#xff0c;该系统支持前后端分离&#xff0c;功能全面&#xff0c;可满足不同角色的需求。从项目进度图表到施工地图&#xff0c;再到…

Java泛型类和方法声明

泛型方法 protected <E> TableDataInfo<E> getDataTable(List<E> list){TableDataInfo<E> rspData new TableDataInfo();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg("查询成功");rspData.setRows(list);rspData.setTotal(new Pag…

C++_vector操作使用

文章目录 &#x1f680;1.1 vector介绍&#x1f680;1.2 vector的初始化&#x1f680;1.3 vector的常用内置函数&#x1f680;1.4 vector的遍历 &#x1f680;1.1 vector介绍 vector是表示可变大小数组的序列容器。就像数组一样&#xff0c;vector也采用的连续存储空间来存储元…