2017-07-19 20 views
0

我有幾個與MicroServices架構有關的問題。MicroServices架構

  • 什麼應該是MicroServices的粒度?我們在Relational和NoSQL數據庫中都有表格。每桌應該有一項服務?我認爲每個數據源的服務會更有意義,但那會是SOA。

  • 如果我們創建了一堆MicroServices,我們是否也應該提供客戶端庫以方便服務的消費?或者讓調用者使用任何REST庫進行調用。無論如何,這聽起來很多工作。

  • 對於每個MicroService,三個應該是一個GIT回購?

  • 可以在同一個EC2實例中部署多個MicroServices嗎?

  • 我會想象在AWS Lambda上部署MicroServices將是完美的,但整個應用程序將只是一堆Lambda函數。更不用說與AWS Lambdas緊密耦合了。有沒有人在Lambdas上實施過MicroServices?我會很感激這方面的任何反饋。

回答

2

微服務的實現往往不同,從系統到系統或開發人員。然而有些微服務是本質特徵,

  • 小焦點(做一兩件事,做一件事)
  • 鬆耦合
  • 不確定語言
  • (彼此獨立運作)有界的上下文(不需要知道其他微服務的實現)

我們可以利用AWS lambda來實現上述特性。但是維護和管理Lambda端點可能會非常棘手,而且往往是一件麻煩事。您可以使用Serverless Framework輕鬆管理lambda函數。您可以使用簡單的YAML格式定義服務配置,並且該框架將創建CloudFromation堆棧並進行部署。

使用無服務器框架,您可以定義多個服務。每項服務都可以是小焦點,鬆散耦合,語言中立和有界的環境。例如:用戶CRUD,電子郵件通知,計劃任務等......當您使用無服務器框架部署服務時,它會創建與各自的lambda表單鏈接的不同API網關。您可以使用API​​網關端點與每個服務進行交互。

正如您所提到的,一個lambda可以與其他AWS服務鏈接。但我認爲,只要它不依賴於其他微服務,並且有明確定義的集成點指向Dynamodb表或S3存儲桶等服務,我們就可以利用Lambda開發微服務。