迁移猿文档到 Severless 架构
背景
好早前就知道了 Serverless 架构,近日发现阿里云支持了函数计算,便决定将猿文档的后端服务进行迁移。
此前,猿文档的后端服务基于 Node.js,采用 egg.js
框架,运行于 docker 中,购买的是阿里云的云服务器 ECS。之所以决定此次迁移是由于以下几点原因:
- 按使用收费:目前猿文档的请求量并不大,不存在高频请求的情况,阿里云函数计算的免费额度够用。
- 功能简单:猿文档只有三个接口,方便迁移。
- 维护性:使用无服务器架构只需要部署一个个函数,简单易用。
进行
阿里云函数计算可以在这里了解函数计算文档中心。
原 3 个接口可以很方便的写成三个函数,基本格式如下:
module.exports.handler = function (request, response, context) {
const queries = request.queries;
// ...
const res = {
message: 'ok',
code: 0,
};
response.setHeader('Content-Type', 'application/json');
response.setStatusCode(200);
response.send(JSON.stringify(res));
};
部署使用 fcli
工具。进入 fcli shell
后基本操作如下:
>>> ls # 查看服务列表
>>> cd yuanwendang # 进入服务
>>> ls # 查看函数列表
>>> mkf doc-entry -h entry.handler -d ./doc-entry -t nodejs8 # 新建函数
>>> upf doc-entry -h entry.handler -d ./doc-entry -t nodejs8 # 更新函数