2016-11-20 110 views
2

我正在開發一個使用微服務體系結構的AWS雲服務進行圖像上載和檢索的Web應用程序。 我是AWS和微服務體系結構的新手,請幫助我將體系結構的組件映射到AWS組件。AWS的微服務Web應用程序

我是否認爲每個微服務都在一個EC2實例上運行,並具有自動擴展和負載平衡功能? 或者我在一個EC2羣集上運行每個微服務?

如果我把我的靜態HTML文件在S3中,我怎麼能調用數據庫方法來加載HTML頁面的內容? 它是通過從客戶端調用API網關嗎?

我已經搜索了網頁,但無法找到使用AWS EC2/ECS實現多項服務作爲微服務的教程。

請幫我弄清楚如何映射我的需求,以及是否有任何關於實現類似應用的教程,將會非常有幫助。

預先感謝您! :)

回答

2

簡而言之,您可以使用無服務器架構(即AWS的APIGateway和Lambda服務)來構建強大的基於微服務的Web應用程序。 既然你說過你是微型服務架構的新手,我會列出最好的方法。

前端/客戶端

單頁應用(SPA)在前端運作良好,因爲他們是一個靜態的網站,他們可以很容易地部署到S3。這是SPA最具成本效益的方法。這是部署SPA on S3的視頻。該視頻將引導您逐步部署SPA。

在例子中,使用反應並Redux的在前端,用於部署反應程式S3檢查出這些steps

後端

AWS EC2是一個不錯的選擇。但有更多的替代品可供選擇。正如你所說,你是後端新手,設立EC2,VPC和Elastic-ip是一個有點困難的過程。

時下,SPA的覆蓋了很多業務邏輯,路由等,我們只需要我們的後臺作爲用於執行數據庫的CRUD操作的API。我想建議一種叫做serverless的尖端技術。這是在5分鐘內啓動後端的tutorial。 AWS lambda是一種稱爲的服務,其功能如服務。您可以使用AWS lambda + API網關+ DynamoDB構建後端。

對於如:說你要登記在後端的一些細節,你會POST一切從客戶端與URL和正確的路徑後端數據。在AWS lambda中,您將POST作爲函數編寫邏輯,其中包含解析來自請求的數據併發送到dynamoDB的邏輯。現在,通過將此函數與API網關(AWS中的另一項服務)相連,可以將此功能暴露給世界。最後我們得到一個API,可以在你的angular 2 APP中使用。 SO,在調用POST時,角2 - > API網關 - > Lambda(提取請求併發送到數據庫) - > dynamoDB

使用無服務器與EC2相比的好處。

  1. 您不需要管理您的服務器(EC2)將新安全補丁更新爲自動縮放,所有內容都由lambda保管。無服務器是一項完全託管服務。
  2. 只有在調用lambda函數時才支付。相比之下,即使您的網絡應用程序在某一天沒有收到流量,您也必須支付特定日期的日期關稅。

這是我的github repo這可能是用於reactJS + Serverless + graphQL web應用程序的鍋爐板。

話雖如此,與傳統的後端方法相比,嘗試無服務器。任何有關此問題都會受到歡迎。

+0

非常感謝你的詳細答案:)我會通過教程並嘗試它。還有什麼關於編寫Lambda函數的簡化指南?最好在Java或PHP是可能的? – Dee

+0

Ya Lambda函數可以用java編寫,但暫時不能用php編寫。開始研究無服務器框架。 –