我的 serverless 规划

前年后有一段空闲时间,准备利用起来好好整理一下自己的 blog。

痛点

谈一谈目前我的 blog 吧。现在是在一台美西的 cn2 服务器上,wordpress 架构,docker 部署运维。目前存在的问题主要是:

  1. 服务器在美西,尽管有 cn2 加持,但是晚高峰延迟依旧不可接受;
  2. 维护困难。我只想要一个能自由写作的地方,不希望付出更大的精力做日常维护;
  3. 成本较高。目前单月价格可能要去到 150 软妹币,对于一个 blog 来说这是完全不可接受的;
  4. 性能很差。对于性能问题,网络背了一部分锅,另外一部分就是 php 的问题了。

而且,我一直是一个有洁癖的人,在 9102 年使用和维护一个 php 写的过时网站实在是不能唤起我写作的兴趣。零零总总,这些客观上都阻碍了我的自我积累。

取舍

之前部署 wordpress 的时候,我的想法是:文章、评论放在一起,便与维护。同时用一台 VPS 也可以获取更大的灵活度。但是实际上 wordpress 的生态并不尽如人意,各种各样我无法接受的“不优雅”做法实在让人恼火,因此这次终于下定决心把这一切整理一下,在维持简洁的同时把一切都抓在手上。所以,我将把稳定需求与快速迭代期的项目拆开。正巧最近在美团听了各路大佬作的 serverless 分享,所以准备先拿 blog 试手。

对于目前的 blog,我对它的定位是一个可以灵活配置的,展示文章与交流的空间。对于展示文章来说,一个静态站点就好了,比如 hexo、hugo 都符合我的预期。但是对于交流就比较难办,一般认为如果要处理用户输入,就必须有一台后端服务器。但是如果上 VPS 的话成本过高,用多说、valine 之类我又觉得太 low。而且把数据放在别人那里我又总有些不放心,所以干脆自己实现,把代码托管到阿里云的“函数计算”上。

需求分析

需求主要是两个方面:静态内容显示部分和交互部分。

静态显示

静态内容生成

整站使用 hugo 生成,对于显示部分,考虑实现一个自己的主题,这样可定制化高一点,代码指令也能得到保障。每次修改站点之后,使用 hugo 生成整站。

网站的动态部分将会在主题中采用 js 代码内置。算是一个典型的前后端分离,前端只作为后端调起的入口。

站点托管

由于是静态站点,可以直接托管于阿里云 OSS 上。套用 CDN 加速,可以实现较高的访问速度。

自动部署

考虑实现 hugo 插件/脚本,每次执行构建命令后,自动部署。

交互

评论

评论是 blog 必不可少的功能,也是这次 serverless 改造的重点。根据阿里云的文档,目前只有 Python 符合我的预期(其它的执行环境比较老)。前端的请求到来后,将会由 Flask 处理。Flask 后端对接阿里云 MySQL,对评论进行数据清洗,然后存储进数据库。

评论的接口将会采用 Restful 形式。GET 获取内容,POST 上传评论。评论支持 Markdown 渲染。

网站信息统计

实际上我没有数据汇总的需求,其实这部分直接引用别家的服务也好。但是为了给 serverless 积累经验,所以这一部分也自己实现好了。

具体的实现目前有两种想法:自己实现和依赖阿里云。我在考虑是否可以直接使用阿里云的监控数据而不是直接自己写。这一部分我要仔细想想再给大家谈。自己实现的话,阿里云有函数计算和边缘计算两种产品满足我的需求,现在还没考虑好怎么搞。

权限控制

这个需求其实代价比较高。一方面是实现起来很困难,另一方面是运维成本比较高。这个我也是想想再写吧。

未完待续

updatedupdated2020-05-292020-05-29
加载评论