写点什么

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

  • 2015-08-07
  • 本文字数:1136 字

    阅读完需:约 4 分钟

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”。
  • 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 读者交流群)。

2015-08-07 08:002507
用户头像

发布了 1008 篇内容, 共 397.0 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

大事情!中国限制 AI 算法出口。网友:这是要阻止XX“下跪”

程序员生活志

架构师训练营第十二周作业

张明森

麦叔告诉你,Linux下安装nginx都踩了那些坑

麦洛

nginx Linux

面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》

小傅哥

Java 数据结构 面试 小傅哥 linkedlist

你真的懂 Java 的 main 方法吗

Rayjun

Java

oeasy教您玩转linux010108到底哪个which

o

30年技术积累,技术流RTC如何成为视频直播领域的黑马?

华为云开发者联盟

云计算 AI 5G RTC 华为云

央行数字货币钱包上线后又秒关 兑换了的 DCEP 别担心

CECBC

数字货币 央行

架构师第十二周学习总结

傻傻的帅

基于区块链的社会治理探索

CECBC

区块链 大数据 信息技术

【读书笔记一】《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 阿里 中台战略

雪花算法把玩

ElvinYang

高并发系统三大利器之降级

root

oeasy教您玩转linux010109clear清屏

o

【持续更新~】常遗忘却可以变更好的心态

01Running

个人成长

程序的机器级表示-控制

引花眠

计算机基础

pandas ~基础pandas

南辞

Python

JVM的早期优化与晚期优化

Edison

JVM JVM虚拟机原理

小小的分页引发的加班血案

架构师修行之路

架构

k8s-client-go源码剖析(二)

远鹏

Kubernetes 源码剖析 Go 语言

翻转链表算法、自动化测试框架robot-framework、两款iOS 在手机端debugging 工具Flex、啄木鸟、加密技术 高可用系统的度量 高可用系统的架构 高可用系统的运维 John 易筋 ARTS 打卡 Week 15

John(易筋)

ARTS 打卡计划 高可用系统的架构 翻转链表 自动化测试Robot 手机调试工具Flex

比特币挖矿到底挖的是什么?

CECBC

比特币 区块链 数字货币

Ray 分布式计算框架详解

lipi

分布式 数据湖 pandas Apache Arrow

LeetCode 5. Longest Palindromic Substring

liu_liu

算法 LeetCode

架构师训练营第十二周总结

张明森

图解Node(上)——直击灵魂的十条拷问

执鸢者

大前端 原理 Node

ARTS打卡 第14周

引花眠

微服务 ARTS 打卡计划

ARTS Week14

时之虫

ARTS 打卡计划

SpringBoot+Tess4j实现牛逼的OCR识别工具

小隐乐乐

软件产品的创新与宇宙奇点大爆炸

常平

方法论 产品思维 架构思维

Flink检查点、保存点及状态恢复-13

小知识点

scala 大数据 flink

利用JS在AWS上构建大规模弹性Web应用_JavaScript_谢丽_InfoQ精选文章