Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
0091edca
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0091edca
编写于
1月 04, 2023
作者:
hbcui1984
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update aliyun-migrate-business.md
上级
a224541b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
257 addition
and
0 deletion
+257
-0
docs/uniCloud/aliyun-migrate-business.md
docs/uniCloud/aliyun-migrate-business.md
+257
-0
未找到文件。
docs/uniCloud/aliyun-migrate-business.md
浏览文件 @
0091edca
...
...
@@ -203,3 +203,260 @@ url化访问时不管是默认域名还是自定义域名均和上述转发逻
```
结论:如果你的
`短信`
和
`一键登录`
业务平均每天发送条数为10000条,使用阿里云正式版云服务空间后,对应云函数每天大概消耗0.139元,对比之前的短信和一键登录费用,平均每次调用多花0.0000139元,几乎可忽略不计。
### App升级中心消耗资源评估@uni-upgrade-center
近期,uniCloud阿里云版开始正式商用,部分开发者对基于uniCloud的
`uni-upgrade-center`
等云端一体业务,开始纠结,不清楚这些业务预计会花费多少钱,不清楚相比传统服务器而言,何种方案性价比更好。
本文尝试算细账、算总账,以阿里云
[
按量计费
](
https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay
)
为例,详细预测
`uni-upgrade-center`
在不同用户规模下的资源消耗及对应费用,帮助大家明智选择,无忧开发。
本文主要分为三个部分:
-
`uni-upgrade-center`
消耗的资源费用测算
-
`uni-upgrade-center`
给你带来的收益
-
综合考虑,你该如何选择
#### uni-upgrade-center 消耗的资源费用测算
`uni-upgrade-center`
升级中心涉及费用的部分主要分为:
-
云函数:
`uni-upgrade-center`
云函数,将客户端版本和服务端最新版本进行对比,返回是否需升级的逻辑
-
云数据库:
`opendb-app-versions`
表,存储版本信息
-
云存储:放置近期的升级包资源(apk/ipa/wgt)
-
前端网站托管:部署
`uni-admin`
,管理员发布新版本
接下来,我们对不同资源,分别进行费用评估。
##### 云函数
启用
`uni-upgrade-center`
升级中心后,你的App每次启动,会请求一次
`uni-upgrade-center`
云函数。
我们按照
[
uniCloud官网
](
https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay
)
列出的按量计费规则,计算一下云函数的资源消耗。
![](
https://mp-8ca8132b-2139-4831-aff2-582d4c8385da.cdn.bspapp.com/cloudstorage/8492ba8e-f4c6-45de-abf2-f9d6825ceefb.png
)
我们可以简单得出如下公式:
`云函数费用 = 资源使用量 * 0.000110592 + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8`
其中:
-
资源使用量 = 云函数内存(单位为G)
* 云函数平均单次执行时长(单位为秒) *
调用次数
-
调用次数 = App日活
*
每日活用户平均每天启动App次数,因为App每次启动,均会执行检查更新逻辑
我们假设如下数据模型:
-
云函数内存:256M,即0.25G;注意云函数内存默认为512M,
`uni-upgrade-center`
云函数建议设置为256M
-
云函数平均单次执行时长:100毫秒,即0.1秒
-
每日活用户平均每天启动App次数:2次
-
出网流量:0,升级中心无需链接外网
按照如上公式,你的App若有100个日活用户,其升级中心云函数每天的费用为:
```
云函数费用(天) = 资源使用量 * 0.000110592 + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8
= 云函数内存(单位为G) * 云函数平均单次执行时长(单位为秒) * 调用次数 + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8
= 0.25G * 0.1S * 100 * 2 * 0.000110592 + 100 * 2 * 0.0133/10000 + 0
= 0.00081896(元)
```
即:你的App日活为100,使用
`uni-upgrade-center`
商业版后,对应云函数每天大概消耗0.00081896元。
据此,可计算其每月的费用为:0.00081896
*
30 = 0.0245688,即每月只需2分钱;
同理,我们可推导出日活为1000、10000、10万的App,其升级中心云函数每月费用如下表:
|日活 |资源使用量计费 |调用次数计费 |出网流量计费 |合计 |
|100 |0.0165888 |0.00798 |0 |0.0245688 |
|1000 |0.165888 |0.0798 |0 |0.245688 |
|10000 |1.65888 |0.798 |0 |2.45688 |
|100000 |16.5888 |7.98 |0 |24.5688 |
日活1000的App,月度消耗才2毛钱,真是毛毛雨了。
##### 云数据库
按照
[
uniCloud官网
](
https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay
)
介绍,云数据库费用 =
`容量费用 + 读操作次数费用 + 写操作次数费用`
,其中:
-
容量费用:数据库存储容量(单位为G)
*
0.07
-
读操作次数费用:读操作次数(万次)
*
0.015
-
写操作次数:写操作次数(万次)
*
0.015;
###### 容量费用
我们以
`hello uni-app`
为例,
`opendb-app-versions`
数据表中共存储30条升级记录,容量大小为8K。
据此可计算出
`opendb-app-versions`
表的日存储费用为:
`8/1024/1024 * 0.07 = 0.000000534`
> 容量计费单位是G,故需先将8K折算成M,再折算成G,故上述公式中连续除了两个1024
1月按30天算,则月存储费用为
`0.000000534 * 30 = 0.000016`
,还不到1分钱,可忽略。
注意:数据库容量仅跟发布版本多少有关系,跟日活用户无关。
###### 读操作次数
在uni升级中心业务中,云函数
`uni-upgrade-center`
每次执行,仅调用一次数据库读取(读取一次
`opendb-app-versions`
表),故数据库的读操作次数等同于云函数的
`调用次数`
,前文有过公式,云函数调用次数 =
`App日活 * 每日活用户平均每天启动App次数`
,每日活用户平均每天启动App次数我们假设为2次。
我们即可推算,如果一个App的日活为100,则uni升级中心每日云数据库读操作次数费用计算如下:
```
读操作次数费用 = 读操作次数(万次) * 0.015
= 云函数调用次数(万次) * 0.015
= App日活 * 每日活用户平均每天启动App次数 / 10000 * 0.015
= 100 * 2 / 10000 * 0.015
= 0.0003
```
1月按30天算,则每月云数据库读操作次数费用为
`0.0003 * 30 = 0.009`
,还不到1分钱。
同理,我们可推导出日活为1000、10000的App,其uni升级中心每月云数据库读操作次数费用为9分钱、9毛钱。
###### 写操作次数
`uni-upgrade-center`
升级中心,写数据库操作很少;管理员仅在每次发布新版时,通过
`uni-admin`
向
`opendb-app-versions`
表插入一条新版本信息;用户端App每次启动检查升级,无需数据表的写入操作,故写操作次数可忽略为0;
###### 小结
因为容量费和写操作次数费用均可忽略为0,根据公式:
```
云数据库费用 = 容量费(忽略为0) + 读操作费用 + 写操作费用(忽略为0)
= 读操作费用
```
可推导,uni升级中心的云数据库计费主要是读操作次数计费,因此我们进一步得出如下预测:
|日活 |容量费 |读操作次数费用 |写操作次数费用 |合计 |
|100 |0 |0.009 |0 |0.009 |
|1000 |0 |0.09 |0 |0.09 |
|10000 |0 |0.9 |0 |0.9 |
|100000 |0 |9 |0 |9 |
##### 云存储
按照
[
uniCloud官网
](
https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay
)
介绍,云存储费用 =
`容量费 + 下载操作次数计费点 + 上传操作次数计费点 + CDN流量费`
。
如果您的应用每次均上架到apple store或安卓各应用商店,升级时从应用商店下载安装,则云存储费用为0,因为使用的是应用商店的存储和CDN下载流量,本计费点测评章节可直接跳过。
> uni-upgrade-center 支持设置应用新版安装包下载地址为应用商店地址,这样就可以使用应用商店的存储和CDN,不消耗uniCloud的云存储资源。
现阶段,iOS平台均需上架apple store,我们可以忽略iOS平台的云存储消耗。
如果您的安卓apk安装包及wgt差量升级包全部托管在uniCloud云存储中,我们也可以算算这笔账。
###### 容量费
容量费主要是存储费用,我们可以定期将过期版本删除,从而节省容量费。
假设我们在云存储中保留最近5个版本的文件,apk/wgt全部保留,大小假设分别为:40M、10M。
>如前所言,ipa需上架apple store,不使用云存储,测评可忽略。
则每天容量费用为:
`5 * (40+10)/1024 * 0.0043 = 0.0010498`
据此,可计算其每月30天的容量费用为:
`0.0010498 * 30 = 0.031494`
,即只需3分钱;
注意:云存储容量仅跟保留的历史升级包多少有关系,跟日活用户无关。
###### 下载操作次数计费点
下载操作次数计费点:仅触发文件下载时会触发,若无新版本下载,则不会触发。
假设你的App日活为100、月活为1500,每月发一次版本;月活用户中,50%会选择升级到新版本,我们可计算下载次数为:
`1500*50% = 750次`
。
而云存储的下载操作次数计费规则为:每万次0.01元,即每万次下载1分钱,750次下载远还不到1分钱,故下载操作计费点可直接忽略。
###### 上传操作次数计费点
每次App发版,仅需管理员上传一次新的资源包,用户App端检查升级时,不涉及上传操作,故上传操作次数计费点亦可忽略。
###### CDN流量费
CDN流量费:我们假设50%概率启用wgt资源包升级(升级包为10M),50%概率为整包升级;而整包升级中,20%为苹果用户(使用apple store流量),80%为安卓用户(升级包为40M)。
则按照如上数据模型,日活为100的App,假期其月活为1500,而月活用户中,50%会选择升级到新版本,即750人选择升级,不同升级包消耗CDN流量如下:
-
wgt资源包CDN流量:750
* 50% *
10 / 1024 = 3.662G
-
苹果整包升级CDN流量:使用apple store流量,uniCloud云存储流量为0
-
安卓整包升级CDN流量:750
* 50% *
80%
*
40 /1024 = 11.719G
即:日活为100的App,月度CDN流量为:
`3.662 + 0 + 11.719 = 15.381G`
,对应费用则为:
`15.381 * 0.18 = 2.76858`
(元)
同理,我们可推导出日活为1000的App,其升级中心云存储每月的CDN费用为27.6858元。
###### 和传统 OSS + CDN 对比
如果你不用
`uni-upgrade-center`
,选择如阿里云的传统
`OSS + CDN`
方案,同样按量计费的情况下,1PB流量以内,传统CDN都没有价格优势;传统CDN每GB的起步价为0.24元,而uniCloud云存储CDN每GB的费用为0.18元。
![](
https://mp-8ca8132b-2139-4831-aff2-582d4c8385da.cdn.bspapp.com/cloudstorage/d9ff593a-fb54-43fd-a58e-bbcb3294a82c.jpg
)
详见:
[
阿里云官网CDN定价详情
](
https://www.aliyun.com/price/product?spm=a2c4g.11186623.0.0.4a6f31c9cwW5vQ#/cdn/detail/cdn
)
1PB流量是什么概念?我们以每个安卓安装包为40M为例,需要
`1 * 1024 * 1024 * 1024 / 40 = 26843546`
,即需要2600万人次安装包下载才能达到1PB流量,你可以评估一下你的App何时可以达到这个量级。
> 具体解释一下:1PB = 1024TB,1TB = 1024G,1G = 1024M,故上面公式连乘3个1024
也有人说了,购买阿里云CDN资源包可以更便宜。确实,购买大额资源包会更便宜,但这个方案有两个缺点:
-
这个资源包仅仅是CDN流量包,你还需要购买OSS回源流量包,而uniCloud直接将回源流量费用包在CDN费用之内了,无需额外购买回源流量。
-
预付费,在业务发展不明朗的情况下,一次性投入太多钱;一旦业务失败,CDN资源包未消耗完毕,也不能退款,浪费资金;而按量计费则没有这个问题,真实用多少资源,就花多少钱;
综合来看,uniCloud云存储相比传统云厂商的
`OSS + CDN`
方案:
-
都选择按量计费,uniCloud版CDN默认0.18元更具价格优势;
-
预付费方式,选购云厂商CDN资源包,需额外购买回源流量包,对普通开发者,特别是中小开发者,并不友好,此时依然是uniCloud按量计费的云存储更具性价比。
##### 前端网页托管
`uni-upgrade-center`
需要和
`uni-admin`
配合使用,
`uni-admin`
需要部署在前端网页托管中。
`uni-admin`
主要是管理员使用,使用频次较少,流量也较低。
按照
[
uniCloud官网
](
https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay
)
介绍,前端网页托管费用 =
`容量费 + 流量费`
。
###### 容量费
`uni-admin`
编译后为4.7M,按照官网每GB每天0.0043元的规则,
`uni-admin`
的月度容量费为:
`4.7 / 1024 * 0.0043 * 30 = 0.00059`
,不到1分钱,可忽略。
###### 流量费
管理员登录
`uni-admin`
,到升级中心管理页面浏览并发布新版,所需流量不超过3M,即使每月发布2次更新,流量费预估为:
`3 / 1024 * 0.18 * 2 = 0.00105`
,也不到1分钱,也可忽略。
##### 合并总结
细项对比完了,我们来合并看看,使用uniCloud升级中心,到底需要花多少钱,相比传统自己研发升级逻辑、搭建升级中心,哪些地方都需要花钱,差异点在哪里?
不管是开发者自研的升级方案,还是
`uni-upgrade-center`
,存储+CDN的费用都是必需的,前文也将传统
`OSS+CDN`
和uniCloud云存储的性价比进行了对比,均按量计费的模式下,uniCloud更具性价比;以资源包方式购买传统CDN模式下,各有优劣。
既然两个方案,都绕不开云存储,那我们暂时抛开云存储对比,将其他各项按照日活用户规模罗列一下,看看
`uni-upgrade-center`
在其他维度所需费用。
|日活 |云函数 |云数据库 |云存储 |前端网页托管 |合计 |
|100 |0.0245688 |0.009 |忽略 |0 |0.0335688 |
|1000 |0.245688 |0.09 |忽略 |0 |0.335688 |
|10000 |2.45688 |0.9 |忽略 |0 |3.35688 |
|100000 |24.5688 |9 |忽略 |0 |33.5688 |
#### uni-upgrade-center 给你带来的收益
使用
`uni-upgrade-center`
,免费获取、一键安装,你将获得:
-
经受大量App验证的、完备的检查升级逻辑,同时支持整包/资源包升级,支持静默升级,支持强制升级;
-
完备的管理功能,分平台发布新版、下线老版,关联应用商店,分渠道发布等。
-
代码开源,随意定制
如上功能,如果你使用传统模式自研,需要前后端配合开发,后端使用php/java做接口,前端发起Ajax请求,处理服务端的各种响应和错误码,处理升级弹窗提醒,这些功能做完善至少需要4个工作日。
假设工程师月薪18K,社保等综合管理成本是薪资的1.4倍,则4个工作日的综合成本为:
`18*1000*1.4/22 * 4 = 4582元`
。
#### 总结
再次说回
`uni-upgrade-center`
,相比传统方式自研升级中心,存储+CDN的钱都是要花的,我们忽略它。
其它云函数、云数据库等,虽然看起来是额外增加的费用,但实际上你使用传统php/java自研升级逻辑,除了自研人力费用,后期也是需要消耗CPU、内存、带宽资源的,只是这些费用合并到虚拟机的整体租用成本中,你无法拆出来计算罢了。
再看回刚才的计算表,以1000日活用户来说,云函数、云数据库每月才多了0.34元,每年才多了4块钱(不考虑云存储CDN的情况下),一年多花4块钱,可以省掉自研的4500多元人工费用,可以让工程师将更多精力投入核心业务中。这5块钱的买卖,不划算吗?它不香吗?
|日活 |云函数 |云数据库 |云存储 |前端网页托管 |合计 |
|100 |0.0245688 |0.009 |忽略 |0 |0.0335688 |
|1000 |0.245688 |0.09 |忽略 |0 |0.335688 |
|10000 |2.45688 |0.9 |忽略 |0 |3.35688 |
|100000 |24.5688 |9 |忽略 |0 |33.5688 |
不重复制造轮子,聚焦业务,快速验证模式,实现商业增长,才应该是聪明工程师的追求。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录