2017-08-11 87 views
2

背景如何反复更改后端技术?

我们的后端目前正在写在Grails的。我们希望将后端更改为NodeJs。我们希望在小迭代中执行更改。我们在AWS上部署所有内容。

问题

如何将技术从Grails的到反复的NodeJS改变?

我的意见

虽然我们不使用微服务架构(和我们没有人有任何经验)我个人:我们的Grails服务器之前

  1. 建立一个服务器的NodeJS(如Gateway API也许?)
  2. 首先NodeJs只会传递请求/响应/从Grails
  3. 然后我们将其他功能从Grails (请求日志记录,验证......),直到我们移动所需的所有东西。 (也许我们保留一些关于Grails的内容,但是大部分逻辑应该以NodeJs结尾)。

回答

4

我们已经成功从Ruby迁移& Rails到API Gateway &基于Lambda的以NodeJS编写的微服务。如果您更喜欢NodeJS服务器(不使用微服务)或将Docker Containers Cluster与ECS结合使用,则可以使用相同的体系结构。

  • 设置CloudFront的作为将会让所有的HTTP流量到你的应用领域代理(您可以映射DNS到CloudFront的CNAME)
  • 在CloudFront的,你可以添加当前Grails应用程序为默认的起源和行为,这会使您的应用程序像今天一样运行。
  • 然后,您可以分别使用ECS来设置您的微服务架构,包括API网关和Lambda或NodeJS Web服务器或Docker容器群集。 (请注意,如果您使用像MySQL这样的关系数据库,它还需要在Lambda,WebServer或Containers中正确放置新的服务器代码,以便它可以访问数据库)
  • 之后,您可以编写新的功能逻辑和从CloudFront指向新应用程序一次覆盖一个http子路径。

下图显示了高层架构。 enter image description here

注意:在该图中,它使用DynamoDB用于新的微服务,并且在迁移阶段,您还可以使用适当的VPC,子网和服务器布局连接到当前数据库。

此外,您还可以从缓存静态资产中获得CloudFront CDN的好处以提高应用程序性能,并且您还可以使用Amazon发布的免费SSL证书终止CloudFront中的SSL handhshake。

+0

Ashan,我会接受你的解决方案,因为它基本上可以帮助我离开应用程序,从字面上使反复改变成为可能。还有一个问题,您是绘制图表还是AWS图表? – zatziky

+0

我在几天前为我进行的无服务器培训课程绘制图表。 – Ashan

+0

我在想,如果我们想首先在NodeJs中做**请求验证**,你会推荐我们什么。验证之后,我们会将请求传递给Grails。你会推荐与你的答案相同的方法吗? – zatziky

2

您的方法绝对有可能。但是我想再试一次,并尝试使用微服务。然后,你将把你的代码的一部分一个一个地移动到可爱的微服务中,并最终拥有微服务架构。我喜欢这种方法,因为它允许非常快速的切换......一切。你可以用Java,Node,Go来构建你的微服务 - 你想要的一切。如果您突然发现node.js不符合您的期望(例如,如果您拥有硬核数学模块) - 只需将此微服务抛出并快速将其用于任何其他语言和框架即可。最重要的部分是定义通信架构。 REST API已经成为过去,你可能会想使用一些消息代理,如RabbitMQ。

+0

有趣的意见Jehy,谢谢。您是否建议我们的Grails服务器成为API网关并将逻辑转发给其他服务?通过说REST结束了它的日子,你的意思只是为了微服务之间的沟通? – zatziky

+0

对,就是这个。这样你可以进行无痛的迭代迁移。 – Jehy