scala - 如何将我的Spray API部署到生产中?

标签 scala akka spray

我正在考虑将经过本地测试的其余api部署到云的过程应该如何,可以说像亚马逊这样的基础设施即服务(而不是像Heroku这样的平台即服务)。

我已经设置并运行了sbt本地本地环境,但是我的问题是我应该如何在生产环境中部署它呢?

定义devops从git repo中提取最新更改然后简单执行sbt run的过程是否明智?

我想知道使用scala + spray + sbt的团队如何将其api部署到生产环境。

最佳答案

我们的服务核心是scala + akka + spray + mongo。因此,我们使用GitHub进行版本控制。将已检查的PR合并到master分支后,Jenkins自动测试“n”构建项目。如果所有测试都成功,那么詹金将运行几个脚本:

  • 递增项目版本(当前用shell编写,但将更改为sbt)
  • sbt-assembly一起运行汇编任务
  • 运行部署脚本(使用Fabric与Python一起编写),将我们的jar部署到EC2

  • 基本上,在第三步中,您有两种选择:

    使用IO / Spray引导文件制作一个可运行的jar:
    object Boot extends App {
      implicit val system = ActorSystem("ServiceName")
      val log = system.log
      val service = system.actorOf(Props[Service], name="serviceActor")
      IO(Http) ! Http.Bind(service, interface = host, port = port)
    }
    

    制作一个可运行的jar作为Akka的微内核:

    在这种情况下,您应该扩展Bootable trait并覆盖startupshutdown方法:
    class Kernel extends Bootable {
      // many lines of code
      def startup() {
        scheduler.start()
        SomeActorSystem.startup()
      }
    
      def shutdown() {
        scheduler.shutdown()
        SomeActorSystem.shutdown()
        system.shutdown()
      }
    }
    

    使用TypeSafe起始脚本:

    无法显示示例,但是它对github =有很好的介绍

    我们在不同情况下都使用了所有这种方式。

    关于scala - 如何将我的Spray API部署到生产中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396796/

    相关文章:

    scala - 如何使用 play2 + scala 在 cloudbees 上运行我的 webapp?

    datetime - 在 Scala 中处理日期和时间的标准方法是什么?我应该使用 Java 类型还是有原生的 Scala 替代品?

    scala - 循环遍历嵌套列表的功能方法

    json - 在 akka-http 中处理(序列化,实际上..)DeserializationException

    scala - 适合使用 Futures 和 Promises 进行延迟初始化吗?

    scala - Op-Rabbit 在 Akka Http 中使用 Spray-Json

    scala - 如何编写通用隐式转换?

    sql - 如何使用ScalaQuery插入BLOB字段?

    scala - 如何解析喷雾路由中的获取请求参数?

    scala - 使用 spray 和 futures 超时检索 http 响应