Nimbus是一个旨在简化 FaaS 应用程序开发、测试和部署的 Java 框架。Nimbus 提供了一组与云平台无关的公共接口,用于与云提供商的无服务器功能发生交互。
框架作者 Thomas Allerton 在最近的一篇 Medium 博文中写道:“对于那些想要开发简单的应用程序的新手们来说,他们需要面临非常陡峭的学习曲线。他们可能只想要部署一些 HTTP 端点用来保存数据,但仍然要学习很多与云相关的概念”。Nimbus 提供了一些注解,支持一些常见的后端操作,这些操作可用于构建基于函数的应用程序,这样,开发者就不需要去学习云配置语法和 FaaS API 了。
Allerton 在博文中表示,Nimbus 的主要优势是不需要通过创建配置文件来声明云资源(如 AWS SAM 或者 Serverless 框架),这样开发人员“就不会因为忘记了某些参数而犯错”。另外,Nimbus 会对部署参数进行编译时检查,以便尽早检测出错误。
为了可以更好地体验如何使用这个框架,可以参看下面这个示例。它使用了 @HttpServerlessFunction 注解来创建一个简单的 REST API。
Nimbus 还支持其他的操作:
WebSocket Function:用于处理 websocket 请求;
Document Store Function:用于执行因文档存储变更而触发的代码;
Key Value Store Function:用于执行因键值存储变更而触发的代码;
Notification Function:用于执行由通知触发的代码;
Queue Function:用于执行因队列变化而触发的代码;
Basic Function:用于执行不需要触发器的代码;
File Storage Function:用于执行基于文件存储事件(文件创建和删除)的代码;
After Deployment Function:用于执行部署之后需要立即执行的操作。
除了支持各种不同的操作之外,Nimbus 还支持几种数据存储类型。下面的示例演示了如何使用 @DocumentStore 注解来创建一个文档存储。
在创建好文档存储后,可以使用 DocumentStoreClient 来持久化数据。
其他支持的数据存储(和客户端)包括:用于存储关系型数据的关系型存储、用于存储键值数据的键值存储和用于存储对象的文件存储(支持静态网站托管和文件上传)。
测试也是构建无服务器应用程序的另一个常见难点。Nimbus 提供了单元测试和集成测试支持。在进行单元测试时,可以为上述列表中的任何一个操作创建本地部署,可以接受请求,并验证函数是否被正确调用,或者数据是否被正确保存。Nimbus 对集成测试的支持相对有限,只支持基于 HTTP 的测试。在进行集成测试时,会启动一个本地 Web 服务器,用于验证请求调用了正确的函数。
目前,Nimbus 初始版本只支持 AWS,对其他平台的支持已经被纳入计划中。
要想了解更多有关 Nimbus 的细节,可以阅读入门指南、访问参考文档,或者克隆它的 GitHub 仓库代码。
查看英文原文:Nimbus: New Framework for Building Java Serverless Applications
评论