我正在创建一个MVP(最小可行产品),该MVP具有一个nodejs服务器,该服务器使用express用于其余api,并使用socket.io连接用于聊天功能。
我关心的不是成本或可伸缩性,而是设置时间/维护,因为这是MVP。无服务器或无服务器是否会花费更少的时间在AWS上进行设置/维护?
答案 0 :(得分:1)
无服务器是一个不错的选择,如果您想设置一个简单的REST API应用程序。使用Express也将是一个不错的选择。
API网关和无服务器现在也支持websocket,因此创建websocket应用程序应该非常容易。但是,当涉及到socket.io时,您需要做一些研究才能深入研究。 API Gateway上的Websocket支持是一个相对较新的概念,并且在线上没有太多资源。起初与Lambda的组合可能有点难以掌握。至于socket.io甚至更少。
我个人建议为您的MVP运行一个运行socket.io的EC2实例。我认为这会更容易。
答案 1 :(得分:1)
选择非无服务器基础架构的原因有很多。在许多情况下,它们与AWS架构完善的框架的5个支柱非常一致。无服务器架构提供了出色的功能:
尽管您提出的项目确实很适合FaaS框架(很少且不可预测的工作量,且资源需求低),但无服务器的缺点尤其是测试架构更复杂,更困难,供应商锁定也使其变得具有挑战性快速制作原型并部署MVP。
由于您的产品倾向于在工程设计上进行权衡,以达到上市时间,因此非服务器化方法最有可能使您以最小的麻烦迅速发布MVP
答案 2 :(得分:0)
有一些可用于AWS lambda函数的无服务器框架。根据我的实际经验,每一个都有一些注意事项:
AWS Amplify(https://docs.amplify.aws)针对开发人员的全栈无服务器解决方案。一开始很容易使用。缺点是随着时间的流逝,您在部署部分的维护成本会更高。当您只需要更改一段代码时,在AWS上部署堆栈的速度非常慢。它将所有堆栈文件下载到本地,然后再次上传...
无服务器框架(https://www.serverless.com)不太复杂,具有丰富的插件和面向nano功能。该框架的缺点是,每个代码函数在lambda之间的用法相同。当项目更大时,代码大小也会更大,因此您的lambda的冷启动会变慢。
简化框架(https://github.com/simplify-framework/codegen)听起来很轻便,但是功能丰富。它允许您在项目中构建CI / CD。这个概念类似于AWS CDK在5月发布了几天。您可以使用OpenAPI规范(大型规范)来设计API,这些规范将在各种工具和流程中重复使用并标准化您的API。没有自动锁定供应商锁定。今天您在AWS中,但是明天它将在您的本地服务器上。
您选择适合您解决方案的内容。没有一个适合所有人。