Serverless/云原生实践型(适合云原生/架构方向)

简介: 本文分享用阿里云Serverless(函数计算FC+OSS+CDN)搭建“Minute Cryptic”每日谜题网站的实践:零服务器、零运维、零成本(3个月账单为0),纯静态前端+定时生成JSON数据,适合个人Side Project快速上线。

一、为什么选择 Serverless?

做 side project 最怕什么?成本

买一台 ECS 最低配一年也要几百块,如果项目没做起来,这笔钱就白白浪费了。所以我一开始就决定:能 Serverless 就 Serverless,绝不碰服务器

本文分享的是我基于阿里云函数计算(FC)+ 对象存储(OSS)搭建的一个每日谜题网站——Minute Cryptichttps://minutecryptic.online/。重点是分享这套“零成本”架构的设计思路和落地细节。

二、整体架构

text

┌─────────────────────────────────────────────────────┐

│                    用户访问                          │

└─────────────────┬───────────────────────────────────┘

                 ▼

┌─────────────────────────────────────────────────────┐

│              OSS + CDN(静态资源)                   │

│         前端页面、JS、CSS、图片全部托管              │

└─────────────────┬───────────────────────────────────┘

                 ▼

┌─────────────────────────────────────────────────────┐

│           函数计算 FC(定时触发器)                  │

│     每天凌晨 00:00 自动生成当日谜题数据             │

└─────────────────┬───────────────────────────────────┘

                 ▼

┌─────────────────────────────────────────────────────┐

│           API 网关(可选,用于动态接口)             │

│       目前纯静态,未来可扩展用户系统                │

└─────────────────────────────────────────────────────┘

三、各组件详解

1. 静态资源托管:OSS + CDN

整个网站的前端资源(HTML、JS、CSS、图片)全部托管在阿里云 OSS 上,前端开启 CDN 加速。这套方案的好处是:

  • 无需服务器:OSS 按量付费,存储费用几乎为零
  • 全球加速:CDN 节点覆盖广,国内外访问速度都不错
  • 高可用:OSS 本身具备 99.995% 的可用性

2. 定时任务:函数计算 FC

每日谜题需要自动更新——这个任务交给了函数计算的定时触发器

javascript

// 定时触发器配置

exports.handler = async (event, context) => {

 const today = new Date();

 const puzzle = generateDailyPuzzle(today);

 await saveToOSS('puzzle.json', JSON.stringify(puzzle));

 return { success: true };

};

每天凌晨 00:00,FC 实例被唤醒,执行以下逻辑:

  1. 根据当天日期计算种子值
  2. 从题库中选取对应的谜题
  3. 生成三级提示文本
  4. 将数据写入 OSS 的 puzzle.json 文件

前端页面每天首次加载时,直接请求这个静态 JSON 文件即可获取当日题目——不需要任何后端接口

3. 为什么没有用数据库?

这个项目的数据量极小(365 道题 × 若干字段),完全可以用 JSON 文件搞定。省去了数据库的运维成本和费用,也简化了架构。

如果未来要做用户系统(需要持久化用户数据),再考虑接入阿里云 RDS 或 Tablestore。

四、成本分析

运行三个月,实际账单如下:

服务 费用
OSS 存储 ¥0.00(免费额度内)
CDN 流量 ¥0.00(免费额度内)
函数计算 FC ¥0.00(免费额度内)

是的,三个月实际支出为 0

函数计算的免费额度对个人项目来说完全够用:每月 100 万次调用、400,000 GB-s 资源使用量——这个网站的日均 PV 才几百,连额度的零头都用不到。

五、踩坑记录

坑一:OSS 静态网站的 CORS 配置

前端直接请求 OSS 上的 JSON 文件时,遇到了跨域问题。解决方案是在 OSS 的“跨域设置”中配置允许所有 Origin 访问。

坑二:CDN 缓存导致更新延迟

每日谜题更新后,CDN 节点可能还在缓存旧数据。解决方案是在 OSS 上设置 Cache-Control: no-cache,并在 CDN 上开启“强制刷新”策略。

坑三:函数计算的冷启动

定时任务本身不要求低延迟,但如果是用户触发的 API 调用,冷启动的几百毫秒延迟还是需要考虑的。预留实例可以解决,但会增加成本——对于这个项目来说,接受冷启动是更经济的选择。

六、总结

Serverless 架构让个人开发者可以用近乎为零的成本跑起来一个线上产品。如果你也在做 side project,强烈建议试试这套方案:

  1. 静态资源 → OSS + CDN
  2. 定时任务 → 函数计算 FC
  3. 动态数据 → 先用 JSON 顶住,流量大了再上数据库

项目地址(欢迎体验):https://minutecryptic.online/

有架构方面的问题欢迎在评论区交流,知无不言。

本文所有架构设计均为个人实践总结,不构成任何官方建议。云产品费用以官方定价为准。


相关文章
|
1天前
|
消息中间件 人工智能 Kafka
AI 时代,实时入湖正在告别 ETL:从 Kafka 到 Iceberg 的架构减法
本文围绕“零 ETL”这一趋势,讨论流数据入湖为什么需要做架构减法,并结合 Kafka × Table Bucket 的实践,分析一种将通用入湖能力前移到消息与表存储链路中的方案,如何在降低复杂度的同时,兼顾实时性、一致性、Schema 演进、CDC 语义与开放生态兼容。
168 122
|
1天前
|
数据采集 人工智能 JavaScript
离散制造的数据困局:一家头部自动化企业的破局样本
离散制造数字化难点不在上系统,而在系统间数据孤岛。龙石顾问以某头部控制阀企业为例,通过“理、采、存、管、用”五步法,构建六层数据模型,统一主数据,打通ERP/PLM/MES/SCADA,实现订单实时跟踪、质量分钟级追溯、OEE精准分析,准交率提升16%,数据真正驱动决策。
|
3月前
|
人工智能 API 网络安全
零基础零技术闭眼入!阿里云/本地极速部署OpenClaw+免费大模型配置+iMessage接入保姆级教程
对于完全不懂代码、没接触过云服务器的纯新手来说,搭建AI智能体一直被认为是技术门槛极高的事,但OpenClaw(曾用名Clawdbot)彻底打破了这个壁垒。这款开源轻量化AI智能体,无需复杂编程,就能通过自然语言完成文件管理、办公辅助、信息查询、定时提醒等各类任务,搭配阿里云部署,可实现7×24小时不间断稳定运行,再对接阿里云百炼Coding Plan免费大模型,零成本解锁AI核心推理能力,最后快速接入iMessage,用苹果自带短信就能随时随地和AI对话,日常使用极度便捷。
463 2
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,支持按小时计费及年付优惠,实际购买可享折扣,热门CPU含Intel Xeon、AMD EPYC等。
524 10
|
存储 JSON 安全
JWT令牌详解
JWT令牌详解
785 3
|
人工智能 数据安全/隐私保护
图灵测试
图灵测试 “【5月更文挑战第20天】”
3144 1
容器镜像服务个人版找不到镜像
容器镜像服务个人版找不到镜像
|
SQL 关系型数据库 MySQL
边锋 x AnalyticDB MySQL:打造一站式游戏数据分析平台
杭州边锋网络技术有限公司是国内领先的休闲游戏开发商、运营商、发行商。20余年来,边锋网络一直是中国棋牌游戏的开拓者和变革者。  边锋网络市场覆盖20余个省份,注册用户过亿,月活跃用户上千万,是国家级重点软件企业(一类)。公司大数据分析系统"反应堆"目前支持着包括雀神广东麻将、边锋斗地主、蜀山四川麻将、功夫川麻等10余款休闲游戏产品;
带你读《5G大规模天线增强技术》——2.4.4 路径损耗计算
带你读《5G大规模天线增强技术》——2.4.4 路径损耗计算
|
存储 搜索推荐 索引
排序算法 - 快速排序(4种方法实现)
排序算法 - 快速排序(4种方法实现)
497 0