BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 谢丽 关注 11 他的粉丝 发布于 2015年8月8日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

JAWS是一个高度可扩展的Web应用程序模板,由个人数据库提供商Servant开源。它使用Amazon Web Services提供的新工具(DynamoDBLambdaAPI GatewayAWS 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”。
  • 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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT