2017-08-11 132 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