Ions

离子使您可以通过将代码部署到正在运行的Datomic集群来为云开发应用程序. 您可以专注于应用程序逻辑 ,编写普通的Clojure函数,并且离子工具和基础结构可以处理部署和执行细节. 通过对AWS Lambda的内置支持,您既可以在Datomic事务和查询中利用代码,也可以在全球范围内利用代码.

使用Datomic Ion涉及四个活动:

  • dev-在一个基于tools.deps的项目中,将您的应用程序作为一组Clojure函数编写. 将其保存在git repo中.
  • 推-捕获您当前对世界的本地视图,作为以后可以部署的修订.
  • deploy-部署在Datomic群集上运行的修订版,包括所有关联的Lambda.
  • bond-使用您已在事务和查询中部署的功能. 如果您的应用程序包含Lambda,请将这些Lambda连接到各种AWS事件或AWS API Gateway以获得Web应用程序支持.

Benefits

  • 专注于您的应用程序.
  • 利用您的Datomic Cloud群集计算资源和数据局部性.
  • Extend Datomic transactions and queries with your own logic.
  • 通过Lambda事件连接到更广泛的AWS云.
  • 使用API​​网关为网络使用者提供服务.
  • 一起缩放Datomic和您的应用程序.
  • 以高度敏捷的方式交付AWS.

ions-who-do.png

Activities

dev

Datomic Ions应用程序是一个普通的tools.deps基于Clojure项目保存在git中. 您可以具有依赖项,包括正在进行的库本地dep. 该项目必须包含datomic.ions.dev作为开发时依赖项. 此外,您必须在类路径中包含datomic / ion-config.edn文件 ,该文件指定应用程序名称和:allow绑定的名称空间限定函数的:allow列表. 您还可以配置要公开为Lambda的函数.

Datomic Cloud为您启动的每个计算组管理一个Code Deploy应用程序. ion-config.edn中的:app-name将您的代码连接到命名的Code Deploy应用程序.

push

您可以通过调用datomic.ion.dev push来捕获应用程序代码的当前状态. creates a named CodeDeploy revision in Amazon S3, which you can later deploy to one or more Datomic query groups. 在Amazon S3中创建一个名为CodeDeploy的修订版,您以后可以将其部署到一个或多个Datomic查询组. 如果您正在处理的提交代码没有本地dep,您将获得一个以提交命名的稳定版本. 否则,您将必须为您的(不可复制的)修订提供名称.

reads through your deps.edn and ensures all library dependencies and local code are moved to S3. 会读取deps.edn,并确保所有库依赖项和本地代码都已移至S3. 此外,它在Code Deploy中创建了一流的修订版 . push可以最大限度地减少向S3的代码传输.

deploy

您可以通过调用datomic.ion.dev deploy来获得先前已推动在特定Datomic查询组上运行的修订. 您将需要提供修订的名称和目标组的名称. Datomic Cloud为您启动的每个查询组管理一个代码部署部署组 ,其名称与该组的CF模板相匹配.

使用AWS Step Functions来执行以下操作:

  • 使用代码部署将代码和依赖项部署到查询组. 代码部署的工作方式是将代码从S3移到查询组的EC2实例,并以滚动方式循环使用新扩展的类路径来循环Datomic流程. 这比循环EC2实例快得多. Deploy非常聪明,可以最大程度地减少来自S3的代码传输.
  • [可选地]确保Lambda如果已配置Lambda,请部署以确保与每个启用Lambda的功能相对应的Lambda. 这些lambda实际上只是轻量级代理,可将调用转发给在Datomic集群上运行的函数(即您的代码未在AWS Lambda中运行). 这样,您的代码将在数据和缓存附近运行,而不会在Lambda执行上下文中运行时受到限制和复杂性.

您可以使用datomic.ion.dev deploy-status监视部署进度

bond

您可以使用ion-config.edn的:allow列表中列出的任何fn作为事务函数查询表达式 . 如果需要,Datomic将自动需要相应的名称空间.

如果已将某些fns配置为以lambda形式公开,则它们将被命名为$(group-name)_$(lambda-name) . 您可以:

有关更多信息,请参见教程参考 .

by  ICOPY.SITE