转载

利用JS在AWS上构建大规模弹性Web应用

JAWS 是一个高度可扩展的Web应用程序模板,由个人数据库提供商 Servant 开源。它使用Amazon Web Services提供的新工具( DynamoDB 、 Lambda 、 API Gateway 、 AWS S3 )重新定义了如何使用JS(后台 Node.js ,前端 jQuery )构建大规模弹性Web应用程序,其目标是:

  • 不使用服务器 :永远不需要处理服务器扩展、部署、维护和监控方面的问题;
  • 组件隔离 :JAWS后台完全由 AWS Lambda 函数构成。每个函数可以单独开发、更新和配置;
  • 无限扩展 :由Lambda函数构成的后台支持高并发,很容易实现跨区域冗余;
  • 成本尽可能低 :Lambda函数只有被调用时才会运行,而只有运行时才需要付费。

JAWS主要包含如下四个部分:

利用JS在AWS上构建大规模弹性Web应用

  • API :JAWS整个后台都是由Lambda函数构成,组织在 api 文件夹中。每个API URL指向一个Lambda函数。这样,每个API Route的代码都是完全隔离的,开发者可以针对特定的API URL开发、更新、配置、部署及维护代码。其作用相当于传统MVC结构中的“Controller”。
  • Liblib 是一个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读者交流群 利用JS在AWS上构建大规模弹性Web应用 )。

正文到此结束
Loading...