JAWS是一个高度可扩展的Web应用程序模板,由个人数据库提供商Servant开源。它使用Amazon Web Services提供的新工具(DynamoDB、Lambda、API Gateway、AWS S3 )重新定义了如何使用JS(后台Node.js,前端jQuery)构建大规模弹性Web应用程序,其目标是:
\\- 不使用服务器:永远不需要处理服务器扩展、部署、维护和监控方面的问题; \\
- 组件隔离:JAWS后台完全由AWS Lambda函数构成。每个函数可以单独开发、更新和配置; \\
- 无限扩展:由Lambda函数构成的后台支持高并发,很容易实现跨区域冗余; \\
- 成本尽可能低:Lambda函数只有被调用时才会运行,而只有运行时才需要付费。 \
JAWS主要包含如下四个部分:
\\ \\- API:JAWS整个后台都是由Lambda函数构成,组织在
api
文件夹中。每个API URL指向一个Lambda函数。这样,每个API Route的代码都是完全隔离的,开发者可以针对特定的API URL开发、更新、配置、部署及维护代码。其作用相当于传统MVC结构中的“Controller”。 \\ - Lib:
lib
是一个npm模块,其中包含了可以在所有Lambda函数中重用的代码,可以认为是传统MVC结构中的“Model”。按照设计,Lambda可以按需requrire
它的代码,而不是全部代码,例如,只加载User模型需要的代码:var ModelUser=require('jaws-lib').models.User;
。 \\ - CLI:JAWS提供了一个命令行接口,用于Lambda函数的测试和部署。 \\
- Site:网站或客户端应用程序文件夹。为了缩短响应时间,静态资产可以上传到AWS S3上。 \
下一步,Servant计划在JAWS中引入AWS API Gateway Swagger导入工具,为现有的API函数编写swagger.json,向CLI添加Swagger导入命令。在同Hacker News网友进行讨论的过程中,项目作者ac360指出:
\\\\\下一步,开发者可以通过Swagger在JSON中定义API,然后导入AWS API Gateway,实现API的即时创建/更新。这应该会极大地缩短开发时间,简化JAWS REST API的构建。
\\这意味着,你仍然可以进行大规模的版本化发布,而且只需要简单地更新Swagger文件中的JSON。这将使JAWS工作流有一个优美的结构,而且非常简单。
\
有许多网友都认为JAWS是一个不错的项目,ahallock就是其中之一。不过,他希望JAWS提供Lambda与RDS的集成,因为他不想使用DynamoDB。对此,ac360回复说:
\\\\\我一直计划增加RDS集成,尤其是Aurora支持。计划一直没变!只是需要一些时间。
\
另外,ac360指出:
\\\\\ \\我在AWS Pop-Up Loft上增加了一个JAWS优化章节……这个页面非常受欢迎。
\
感谢魏星对本文的审校。
\\给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群)。