迁移Node.js项目到阿里云函数计算 – 以Parse为例

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
函数计算FC,每月15万CU 3个月
简介: Parse是一款优秀的开源BAAS框架,可以快速支持初创项目迭代。本文将介绍如何结合阿里云函数计算快速部署一个私有的Parse服务。本文需要阅读者有基本的Serverless平台使用经验。

Parse Platform是一个开源的BAAS框架,可以大幅加速各类应用快速迭代。官方提供了各位常见SDK,对于开发者也可以缩短了应用的开发周期,实在没有的,还可以用Rest API。


之前Parse.Inc提供托管服务,但是由于各类原因关闭了,国内也有一些托管服务商。


Parse Platform基于Node.js,背后的数据库可以选择MongoDB或者PG,文件和PUSH服务可选很多。


自己搭建一个Parse是相当容易了,官方提供了命令行工具,也有Docker镜像,但是这种模式需要至少一台云主机和一个MongoDB数据库,相对来说有一定成本,特别是对于一些探索性的APP,流量低,访问需求不稳定,后期可能有突发流量。


综合来看Serverless平台是一个不错的选择,本文以阿里云为例,介绍如何快速基于阿里云函数计算和阿里云Serverless DB搭建一个Parse。


本文需要基本的Serverless平台使用经验。由于篇幅所限,本文只涉及最基本的跑起来,包括发布和数据库存储,文件存储和其他优化不涉及。


阿里云函数计算

阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,用户无需管理服务器等基础设施,只需编写代码并上传。函数计算会准备好计算资源,以弹性、可靠的方式运行代码,另外还提供日志查询、性能监控、报警等功能。


使用函数计算可以获得一个较大的成本收益,也可以简化维护与运维成本。


函数计算的费用由调用次数+函数实例资源使用量+公网出流量组成,另外如果长期使用,

还可以购买资源包,相对价格更低。


阿里云每月为每个账号提供一定的免费资源,对于少量使用可以完全覆盖。


如何迁移


迁移一个既有系统到Serverless平台主要有以下几个步骤


  • 识别系统的外部依赖
  • 创建适用于Serverless平台的部署工程
  • 修改即有系统代码
  • 部署


识别外部依赖


Parse的外部比较简单,从官方文档的说明和配置示例可见


  • Node 8 or newer
  • MongoDB version 3.6
  • Python 2.x (For Windows users, 2.7.1 is the required version)


这些Serverless平台都可以提供。

但是对于数据库,特别是MongoDB在各大云厂商价格相对较高,好在阿里云额外提供了Serverless版本,价格相对优惠,新用户9.9元3个月试用。


aliyun-serverless-mongoDB.png


开通后可以在数据库连接中查到连接字符串,但是这里的连接字符串是不能直接用,因为它使用的是admin库,需要改成 /自定义库名?authSource=admin。


mongodb-connection-string_mosaic.png


创建Serverless工程


为了方便调试和开发这里使用Serverless Devs工具。


它是一个开源开放的Serverless开发者平台,开发者无需关心底层资源。通过Serverless Devs,不仅可以可插拔式地使用Serverless的服务和框架,也可以参与组件和插件的开发,提高运维效率。同时,您也可以更简单、快速地开发、创建、测试和部署项目,实现项目全生命周期的管理。


安装和创建项目如下:

npm install @serverless-devs/s -gs config
s init

这里我们选择express模版,最后会获取一个如下的项目

start-project.png


其中s.yaml是配置文件,定义了部署需要的一切信息,包括需要的内存大小、超时时间、触发器等等。由于Parse本身就是通告HTTP提供服务的,所以使用默认的HTTP触发器就可以了。其他信息可以按照需要修改。


适配项目

由于这里只展示最小应用,所以仅做最简单的配置

varexpress=require('express');
varapp=express();
varParseServer=require('parse-server').ParseServer;
varapi=newParseServer({
databaseURI: 'mongodb://xxxx/xxx',
appId: 'demo',
masterKey: 'demoKey',
});
app.use('/', api);
app.listen(9000, () => {
console.log('start success.');
}).on('error', (e) => {
console.error(e.code, e.message)
})


这个和普通的nodejs服务没有什么区别,其中的端口9000需要和s.yaml的CAPort配置一致就行了。


由于Rest API语义设计,需要支持GET、POST、DELETE等,阿里云函数计算这里存在一个转发问题,需要在配置文件中变更触发器


triggers:
-name: httpTriggertype: httpconfig:
authType: anonymousmethods:
-GET-POST-PUT-DELETE


阿里云函数计算默认的Nodejs版本有点低,也考虑到其他风险,这里最好也自定义Nodejs环境。直接下载linux版本的到code目录,修改bootstrap脚本内容为


#!/bin/bash./node-v12.13.0-linux-x64/bin/node index.js

这样就会使用我们指定的Node.js启动Parse了。


部署


部署可以直接使用

s deploy -y

会将相关资源打包以后上传到阿里云函数计算,也会包含node_module中的内容,这里的大小大概40M。

部署以后在函数计算管理界面可以看到。

fcnext.png


这里直接使用自带的测试URL测试,可以看到Parse工作正常。


serverless-parse-result_mosaic.png


结语


由于阿里云函数计算提供的便利支持,迁移此类项目的难度并不大。本文演示的是Custom Runtime的模式,但是对于更复杂的项目,Custom Container是一个更好的选择。


Serverless还有一个潜在问题就是冷启动时间,对于大部分项目都需要专门处理,本文并没有涉及到。简单粗暴的方式就是使用预留实例的方式保持有已经启动的实例在服务,可以极大优化用户体验。


参考

https://parseplatform.org/

https://help.aliyun.com/product/50980.html


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
155 13
|
2月前
|
存储 人工智能 运维
正式收官!阿里云函数计算携手优酷,用 AI 重塑影视 IP 创新边界
近日,阿里云联合优酷发起的 Create@影视 IP x AI 应用创新大赛,将网剧《少年白马醉春风》这一热门影视 IP 与阿里云 AI 技术相结合,由阿里云函数计算提供 AIGC 技术支持参赛者基于网剧《少年白马醉春风》IP 或“少年江湖”精神内核,用 AI 生成角色场景设计、手办设计、破次元合照、数字人等多样化的作品。
120 10
|
3月前
|
JavaScript Java Serverless
函数计算产品使用问题之如何使用Node.js编写程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
消息中间件 JavaScript 中间件
函数计算产品使用问题之WebIDE编写的Node.js代码是否会自动进行打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1月前
|
人工智能 弹性计算 运维
触手可及:阿里云函数计算助力AI大模型的评测
阿里云推出的面向AI服务器的功能计算(Functional Computing, FC),专为AI应用提供弹性计算资源。该服务支持无服务器部署、自动资源管理和多语言支持,极大简化了AI应用的开发和维护。本文全面评测了FC for AI Server的功能特性、使用体验和成本效益,展示了其在高效部署、成本控制和安全性方面的优势,并通过具体应用案例和改进建议,展望了其未来发展方向。
133 4
|
2月前
|
SQL 分布式计算 Serverless
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
151 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
2月前
|
人工智能 运维 大数据
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
98 2
|
2月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
426 16
|
3月前
|
前端开发 小程序 Serverless
异步任务处理系统问题之阿里云函数计算FC的应用场景有哪些
异步任务处理系统问题之阿里云函数计算FC的应用场景有哪些
|
3月前
|
存储 运维 安全
函数计算产品使用问题之如何获取到访问其他阿里云服务所需的AccessKey、SecretKey或STS Token
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
下一篇
无影云桌面