V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
cdlnls
V2EX  ›  云计算

发现函数计算在某些场景下真的可以省钱

  •  
  •   cdlnls · 2023-11-11 12:51:41 +08:00 · 5327 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近用阿里云的函数计算部署 stable-diffusion 玩,发现竟然可以挂载 nas ,所以它就能实现数据持久化。 (题外话,跑 stable-diffusion 并不便宜)


    在程序的的访问量少的情况下,成本会低得离谱,要比直接部署在 ECS 服务器上便宜得多。

    昨天试着跑了几个程序:

    • typecho ,使用 sqlite3 作为数据源,在只有一个人访问的情况下,成本是 0 元
    • gitea ,也是使用 sqlite3 作为数据源,虽然能跑,但是项目每次 push 代码的大小不能超过 32M ,否则会失败。成本是 0.02 元
    • filebrowser ,可以比较方便的管理 nas 上的文件,成本是 0 元

    nas 文件存储服务,也是按量付费的,在占用不多的情况下,会被抹零。我目前是 500 多 M 的大小,每小时费用都是 0 元。

    所以,如果程序只是间歇性的需要使用,不需要提交大文件,价格就可以很低。可以用来部署 在线备忘录、git 仓库、密码管理器、webhook 。

    缺点是可能会破产。放在公网上公开访问,如果被刷流量,账单估计很难看,这个就不太可控了。

    但是如果在域名不对外公开的情况下,只部署一些自用的服务,这个应该是最不花钱的方案了。

    image.png

    43 条回复    2023-11-16 22:39:37 +08:00
    woooooOOOO
        1
    woooooOOOO  
       2023-11-11 13:05:37 +08:00
    云函数是支持 GPU 的吗?
    woooooOOOO
        2
    woooooOOOO  
       2023-11-11 13:06:09 +08:00
    @woooooOOOO 是不是可以搞个模型调用集合
    whileFalse
        3
    whileFalse  
       2023-11-11 13:08:54 +08:00
    我理解 sqllite 几乎没有扩展性,并发到了一定程度还是要换正经的 DB/nosql 。

    把“玩 lambda”本身当目的还不错,真想用还是算了
    cdlnls
        4
    cdlnls  
    OP
       2023-11-11 13:21:23 +08:00
    @woooooOOOO 是的,现在是支持 GPU

    @whileFalse 确实没什么扩展性,但是单实例并发不高的情况下还是可以用的。现在主要是看到还可以挂载自己磁盘,数据能持久化,可以玩的就比纯“lambda"多一点了。
    Conantv2
        5
    Conantv2  
       2023-11-11 14:37:56 +08:00   ❤️ 2
    云函数很适合帮非交互式产品剥离很少用到的用户交互功能,比如企业网站的咨询表单、应用的用户反馈、博客的评论框,如果把这些挪到云函数,服务器本身就可以做到非交互式,提升一个安全等级。
    Bingchunmoli
        6
    Bingchunmoli  
       2023-11-11 14:44:36 +08:00 via Android
    还有个问题,用的流量上来请求数和流量带宽是不是单独计费的
    caomingjun
        7
    caomingjun  
       2023-11-11 15:25:45 +08:00 via Android
    gitea 还能挂云函数上?有教程吗?
    coolcoffee
        8
    coolcoffee  
       2023-11-11 15:35:04 +08:00   ❤️ 1
    云函数目前的商业模式还是比较鸡肋。小客户群体用量少,云厂商赚不到什么钱就开始各种改规则;大客户用量大,发现还不如服务器包月划算。
    perfectlife
        9
    perfectlife  
       2023-11-11 15:59:44 +08:00
    多说一句 个人感觉 用函数计算部署服务可维护性比较差,数量多了维护起来太累了
    laminux29
        10
    laminux29  
       2023-11-11 16:03:12 +08:00
    不可维护的玩意,真有人敢用?
    cdlnls
        11
    cdlnls  
    OP
       2023-11-11 16:29:39 +08:00
    @laminux29 类似函数计算这种服务设计出来时,它就把“运维”作为服务的一部份来卖了,所以维护自然是不需要的了。

    @coolcoffee 我也十分赞同这个观点
    cdlnls
        12
    cdlnls  
    OP
       2023-11-11 16:37:12 +08:00
    @caomingjun 基本上部署项目,需要用到数据持久化时,设置 NAS 挂载数据目录就行。 所以这里 gitea 部署的时候只要把 NAS 挂载到 gitea 的数据目录就可以了。
    woooooOOOO
        13
    woooooOOOO  
       2023-11-11 16:49:36 +08:00
    我试了一下,部署了一个图片转动漫风格的模型,总是生成失败,5 次成功一次的感觉
    caomingjun
        14
    caomingjun  
       2023-11-11 17:35:11 +08:00
    @cdlnls 但是 gitea 不是需要持续运行的吗,比如内部有很多定时任务的( actions, mirroring, ...)。直接 Docker 部署居然能用?
    joyanhui
        15
    joyanhui  
       2023-11-11 17:59:58 +08:00
    @caomingjun 我这几天也在测试阿里云的 servless,确实你说的这个问题很难受。

    golang 的协程 、定时任务,基本没法用。 如果选择保留实例,费用就又上来了。而且保留实例虽然能保证 cpu 不会冻结,但是新换起的弹性实例是没法不冻结的。依旧会导致协程被冻结。


    有一些后台功能调整代码可以实现比如每次响应的时候用检查时间戳的方法来触发某些不是很严格的定时任务,有一些就没办法搞定了。
    cdlnls
        16
    cdlnls  
    OP
       2023-11-11 18:41:47 +08:00
    @caomingjun 异步的任务都处理不了
    keepRun
        17
    keepRun  
       2023-11-11 20:28:17 +08:00 via Android   ❤️ 2
    被盗刷问题可以应该可以通过鉴权解决吧,比如套个 cdn ,根据生成的 sign 检验,或者让 cdn 回源鉴权服务器来判断是否允许访问,阿里云都在 cdn 配置里给出了解决方案,建议仔细研究下,再配合 cdn 的云监控的下行流量告警、带宽封顶规则,就解决了盗刷问题。
    lyc8503
        18
    lyc8503  
       2023-11-11 22:07:28 +08:00
    个人用起来很方便, 随便写的代码就可以发布, 还不用刻意维护, 用量小几乎不要钱(以前还是有免费额度的, 现在没了)

    不过对大型应用很不友好了, 适配 serverless 开发成本高, 迁移困难, 加上云函数在用量大时价格大于 ECS.

    再者难以确定的预算可能也是个问题...
    ibegyourpardon
        19
    ibegyourpardon  
       2023-11-11 22:15:08 +08:00   ❤️ 4
    作为主功能来说确实不是很适合,但作为非主业务的补充,一些边缘化的事情,写进主单体或者部署个微服务反而头疼,如果正好用量占比又不大,云函数我觉得非常合适,我自己就有大概二三十个类似的云函数。

    它们有一些共同特征,本身逻辑简单,没太多状态,放进哪个仓库或者服务都觉得不是很符合语义或者模块划分,单起个又恶心,这个云函数的服务本身甚至可有可无,也许只是个实验特性,这一类我现在优先会选择用个简单的云函数快速跑起来,先满足了业务需求再说。

    当然云函数也有一些问题,本身写起来如果依赖的东西多,放云函数里跑限制一堆,很麻烦,数量也很容易暴涨。但数量保障我觉得就是没规划好,说明不是一些适合放到这里面的服务。

    我大概二三十个,有的一两年前的我都快忘了代码了,真要更新迭代我十有八九不会去修改这个云函数,而是去直接快速重写一个,很大可能一天内就搞定了。这也是我会把云函数用的地方,有一些属于不需要长期更新迭代,但会长期使用的轻量级业务,我都会扔进去。

    而一个足够大型的系统,十有八九总能找到这样一些类似的边缘的业务。当然要不要上云函数那是见仁见智。

    我这周才刚又写了一个近似于采集系统的东西,非典型业务,不适合抽象起来放进现有架构,又急需,以后又基本没什么更新,用量不大,一天目测就几百次调用,这种我就是一天写完,一天测试,丢上去完事。

    过几个月也许有迭代了再说,大迭代就重写拉倒。
    huyujievip
        20
    huyujievip  
       2023-11-12 07:54:17 +08:00 via iPhone
    @joyanhui 云函数主打无状态服务呀,你这起点就错了,强人所难
    snylonue
        21
    snylonue  
       2023-11-12 09:16:26 +08:00
    sd 跑一张图大概多少钱
    nananqujava
        22
    nananqujava  
       2023-11-12 10:58:43 +08:00
    有个缺点是如果用 docker 的方式冷启动很慢, 保留实例又贵
    joyanhui
        23
    joyanhui  
       2023-11-12 11:23:29 +08:00 via Android
    @huyujievip 额,但是异步完全不能用,是没想到的
    AItsuki
        24
    AItsuki  
       2023-11-12 13:32:11 +08:00
    greensea
        25
    greensea  
       2023-11-12 21:56:12 +08:00
    好像有点贵? 50 元的资源包,包含 50 万 GB*秒,等于 138.88GB*小时,也就是 0.36 元/GB*小时。如果用一个 8G 显存的话,每小时就要两块多钱,一个月下来就上千块钱了。
    但是我没看到它的 GPU 规格,不知道速度如何,如果速度足够快的话可以考虑,否则还不如买张显卡丢机房里面
    Rehtt
        26
    Rehtt  
       2023-11-13 08:28:04 +08:00
    @whileFalse sqlite 不能并发写入,但做单体应用数据库还是可以的
    Rehtt
        27
    Rehtt  
       2023-11-13 08:37:53 +08:00
    stable-diffusion docker 冷启动太慢了
    zealotxxxx
        28
    zealotxxxx  
       2023-11-13 11:12:05 +08:00
    云函数其实你们可以接入 MongoDB 。我曾经一个超大流量项目用过,性能完全扛的住。但是吧,维护性就比较 emmm 了。后期云函数破 200 个了,简直维护不动
    zealotxxxx
        29
    zealotxxxx  
       2023-11-13 11:12:30 +08:00
    异步可以通过 kafka 之类的队列来解决
    cp19890714
        30
    cp19890714  
       2023-11-13 12:41:24 +08:00
    函数计算能省钱的场景, 非常非常有限.
    wanniwa
        31
    wanniwa  
       2023-11-13 14:03:52 +08:00
    公司一堆机器人就搞到云函数了,成本降了非常多
    IdJoel
        32
    IdJoel  
       2023-11-13 14:47:11 +08:00
    额,我上个单位全部业务都上函数云计算了。。。上面那些人说的缺点其实现在完全都解决掉了,而且极其省钱。。。

    1.测试环境基本完全弹性,省了一大笔钱
    2.干掉了负载均衡,函数云计算自带,服务并没有拆分,打包成 docker 直接部署的,维护根本没压力
    3.预留实例,基本没有冷启动的问题,还可以根据时间或者请求数量动态伸缩,多少人也不怕服务器炸了
    4.原来用过 k8s 一套,基础服务就干了不少钱,还得有专门的人维护,函数云计算在基本做到同样功能的情况下节省了各种基础服务的费用
    5.数据库也有弹性的啊,闲时成本并不高
    6.我们是 PHP ,冷启动也很快,🦊🦊
    IdJoel
        33
    IdJoel  
       2023-11-13 14:48:22 +08:00
    但是真的不建议用,这玩意用多了,第一会绑死在阿里云上没办法迁移,第二就是会失业
    cdlnls
        34
    cdlnls  
    OP
       2023-11-13 15:13:13 +08:00
    @IdJoel 昨天看了一下默认的 runtime ,迁移的话,大概也就是重新打包个镜像的事情。

    只要绑定了阿里云提供的 SDK ,用上了就等于绑定了,才是真无法迁移。这种只是提供计算资源的服务,迁移起来问题感觉不大。

    现在已经失业了。。。
    ashuai
        35
    ashuai  
       2023-11-13 16:10:40 +08:00
    用了很久了,跑 http 超省,本来跑了个服务在上面,发现费用不比 ecs 便宜。
    然后买了台 1k 一年的 2c4g ecs ,把服务迁过去了,http 继续跑在 fc 。
    免运维的弹性伸缩,谁用谁知道
    IdJoel
        36
    IdJoel  
       2023-11-13 16:51:23 +08:00
    @cdlnls
    比如要部署的话得用他的那个 sererless cli ,总不能手动去点点点把,然后 MySQL ,如果用固定大小的话好像弹性就没啥意义了,就切换到 Mysql serverless 服务,然后每家的函数计算要求、打包方式也不同。

    迁移的成本特别大。
    IdJoel
        37
    IdJoel  
       2023-11-13 16:52:19 +08:00
    @ashuai 常年跑的服务肯定不合适,但是如果是定时的,或者队列形式的,稍微改造下应该也非常省钱
    testliyu
        38
    testliyu  
       2023-11-13 17:47:35 +08:00
    @IdJoel cicd 啥的云函数也支持么
    IdJoel
        39
    IdJoel  
       2023-11-13 18:03:11 +08:00
    @testliyu 云函数本质就是个容器,CI/CD 得自己部署啊
    KgM4gLtF0shViDH3
        40
    KgM4gLtF0shViDH3  
       2023-11-16 01:00:26 +08:00 via iPhone
    sqlite 是直接跟函数一起打包吗
    cdlnls
        41
    cdlnls  
    OP
       2023-11-16 01:10:42 +08:00
    @bestkayle 不是,sqlite 放在 nas 里面,函数启动后会把 nas 里面的目录挂载到函数的容器里面,就像 docker 挂载数据卷一样。
    KgM4gLtF0shViDH3
        42
    KgM4gLtF0shViDH3  
       2023-11-16 15:40:46 +08:00
    @cdlnls #35 还能这样,那也太舒服了,不过容器 serverless 总感觉不纯粹
    KgM4gLtF0shViDH3
        43
    KgM4gLtF0shViDH3  
       2023-11-16 22:39:37 +08:00
    serverless 有个问题,特别是国内,本身 serverless 函数很便宜,但是云数据库巨贵。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1819 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:34 · PVG 00:34 · LAX 08:34 · JFK 11:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.