jhipster 3从单片机迁移到微服务

时间:2016-08-30 10:24:52

标签: migration jhipster microservices

目前,我是一个JHipster 3.3单片应用程序,我想迁移到微服务架构。我已经创建了注册表,网关和uaa服务。现在我需要将应用程序的核心业务迁移到微服务中。有没有设施来执行它?我可以自动制作吗?

2 个答案:

答案 0 :(得分:3)

您可以将整体转换为服务,也可以从实体定义中重新生成它。

第一种方法需要对Spring Cloud有一个很好的理解,你首先要用@EnableEurekaClient注释你的应用,在你的pom.xml上添加对Spring云的遗漏缺失,为你的{添加缺少的属性{1}},创建application*.yml个文件。然后,您将客户端部分移动到您的网关。如果您不熟悉Spring云,那就不容易了。

第二种方法要求您生成一个微服务应用程序,其选项与您的整体相同,然后将包含您的实体定义的bootstrap*-yml文件夹复制到该文件夹​​,并为每个实体重新生成.jhipster最初创建它们的顺序相同,然后在网关上生成htem以生成客户端部分。

你还应该花些时间考虑一下你为什么要迁移,如果你把你的整体应用变成一个单一的服务那么这可能是一个坏主意,因为你只会增加复杂性,这只是有意义的如果您计划添加更多服务和/或将您的整体分成多个服务。 O' Reilly提供了一个很好的免费电子书和视频:"微服务AntiPatterns和陷阱"

答案 1 :(得分:1)

首先,我还想订阅Gaël答案的最后部分:

想一想你为什么要迁移?

我个人正处于迁移过程中。我从2015年开始一个JHipster monolith app(当时这是唯一的选择:))我仍在开发并添加新功能。对于我的巨石我决定迁移到微服务,因为我们增加了团队,并希望将来使用DDD。我必须承认在开始时有一些开销,学习曲线非常陡峭,但最终结果非常有益,特别是如果你相信CI(y)

这是我迁移我的巨石的方式:

  1. 确保您提交了所有来源并与VSC同步(我使用git作为DVCS)
  2. 没有任何更改只需运行jhipster生成器并覆盖所有旧源
  3. 制作一个git diff来概述从jhipster生成的文件以及您修改过的文件
    1. 如果你没有改变jhipster生成的文件的格式,它应该只是webapp文件夹和配置文件中的一些文件
    2. 如果您因格式不同而存在差异,我建议您检查代码,然后更新整体应用的基本代码
    3. 目标是在使用jhipster生成器重新生成monolith应用程序时可能存在一些差异(最好在迁移到微服务时检查更少的文件)
  4. 此时我暗示您处于干净的工作区(即所有更改都与VCS同步),如果您将运行yo jhipster,您将尽可能少地手动重新检查文件
  5. 在应用的根文件夹中有一个 .yo-rc.json 文件
    1. 在该文件中,您应该将 applicationType monolith 更改为 getaway < / em> authenticationType 来自 jwt ,例如
  6. .yo-rc.json

    "jhipsterVersion": "3.5.1",
    "serverPort": "8080",
    "applicationType": "gateway",
    "jhiPrefix": "jhi",
    
    1. 合并新生成的文件之后,您现在应该拥有微服务的网关(可能需要删除一些类,具体取决于您的monolith使用的authenticationType)
      1. 我个人现在正在努力将一些职责(旧巨石所做的所有员工)转移到网关中,以便迁移到单独的沙子微服务
      2. 6.1中提到的服务的迁移与向应用程序添加新功能并行,并且将作为新的微服务添加。
    2. 我的建议是以较小的步数/增量进行操作,如果您有CI,那么您也可以尽快获得有关迁移的反馈;)

      祝你好运。 干杯,duderoot