微型服務 - 實作 AWS 上的微型服務

微型服務

API 是微型服務的前門,這表示 API 會做為一組可程式設計介面背後的應用程式邏輯,通常是 RESTful Web 服務 API。此 API 會接受和處理來自用戶端的呼叫,也可能會建置一些功能,例如流量管理、請求篩選、路由、快取和身分驗證與授權。

微型服務實作

AWS 具備整合式建置區塊,可支援微型服務的開發。使用 AWS Lambda 和 Docker 容器搭配 AWS Fargate 是常見的兩種方法。

利用 AWS Lambda,您可上傳程式碼,然後讓 Lambda 來處理執行所需的一切作業,並調整執行的規模,以滿足您的實際需求曲線,提供高可用性。無須管理基礎設施。Lambda 支援多種程式設計語言,並且可從其他 AWS 服務呼叫,或是從任何 Web 或行動應用程式直接呼叫。AWS Lambda 的其中一項最大優點,就是移動迅速:您可以專注在自己的商業邏輯上,因為 AWS 會管理安全性和擴展。Lambda 的主導性方法促進了可擴展平台。

如果想要減少部署作業所需投注的營運心力,一個常見的方法就是使用容器來進行部署。基於下列的優點,Docker 等容器技術,在最近幾年日益受到歡迎:可攜性、生產力和效率等。容器的學習曲線可能很陡峭,而您必須思考 Docker 影像和監控的安全性修正。Amazon Elastic Container Service (Amazon ECS) 和 Amazon Elastic Kubernetes Service (Amazon EKS) 讓您無需安裝、操作及擴充自己的叢集管理基礎設施。使用 API 呼叫,您可啟動和停止啟用 Docker 的應用程式、查詢叢集的完整狀態,及使用許多孰悉的功能,例如安全群組、負載平衡器、Amazon Elastic Block Store (Amazon EBS) 磁碟區和 AWS Identity and Access Management (IAM) 角色等。

AWS Fargate 是一種無伺服器運算引擎,適用於同時使用 Amazon ECS 和 Amazon EKS 的容器。使用 Fargate,您完全不用操心,為容器應用程式佈建足夠的運算資源。Fargate 可以啟動數十萬個容器,並輕鬆擴展以執行您最關鍵任務的應用程式。

Amazon ECS 支援容器放置策略與限制,以自訂 Amazon ECS 放置和終止工作的方式。工作放置位置的限制是一項規則,在放置工作時會考量這項規則。您可將屬性 (基本上就是鍵值/值組) 與容器執行個體建立關聯,然後根據這些屬性,配合限制來放置工作。例如,您可以利用限制並根據執行個體類型或容量放置某些微型服務,例如運用 GPU 的執行個體。

Amazon EKS 會執行最新版本的開放原始碼 Kubernetes 軟體,所以您可使用 Kubernetes 社群中所有的現有外掛程式和工具。在 Amazon EKS 上執行的應用程式與在任何標準 Kubernetes 環境上執行的應用程式完全相容,不論是在現場部署的資料中心還是在公有雲端中執行。Amazon EKS 將 IAM 與 Kubernetes 整合在一起,讓您可以使用 Kubernetes 中的原生驗證系統註冊 IAM 實體。完全無須手動設定憑證,即可向 Kubernetes 控制平面進行驗證。IAM 的整合可讓您提供對 Kubernetes 控制平面公開端點的精細存取權,使用 IAM 直接向控制平面本身進行驗證。

用於 Amazon ECS 和 Amazon EKS 中的 Docker 影像可以存放於 Amazon Elastic Container Registry (Amazon ECR) 中。Amazon ECR 讓您不需運作和擴展基礎設施,來支援容器的登錄檔。

持續整合和持續交付 (CI/CD) 是最佳實務做法,也是 DevOps 計劃至關重要的一環,能實現快速軟體變更,同時維護系統穩定性和安全性。但是,這超出了本白皮書的範圍。如需詳細資訊,請參閱在 AWS 上實作持續整合與持續交付白皮書。

AWS PrivateLink 是一項具有高可用性和可擴展性的技術,可讓您將您的 Virtual Private Cloud (VPC) 私下連線至支援的 AWS 服務、由其他 AWS 帳戶託管的服務 (VPC 端點服務),以及支援的 AWS Marketplace 合作夥伴服務。您不需要網際網路閘道、網路位址轉譯裝置、公有 IP 地址、AWS Direct Connect 連線或 VPN 連線,即可與服務進行通訊。您 VPC 與 服務之間的流量都會保持在 Amazon 網路的範圍內。

私有連結是提高微型服務架構隔離性和安全性的絕佳方法。例如,微型服務可部署於完全獨立的 VPC 中,在負載平衡器前面,並透過 AWS PrivateLink 端點顯現於其他微型服務。利用此設定使用 AWS PrivateLink,進出微型服務的網路流量絕對不會周遊於公有網際網路。此種隔離的某個使用案例包括處理敏感資料 (如 PCI、HIPPA 和歐盟/美國隱私盾) 等服務的法規合規。此外,無須防火牆規則、路徑定義或路由表,AWS PrivateLink 可連線不同帳戶和 Amazon VPC 的微型服務;簡化網路管理。使用 PrivateLink,軟體即服務 (SaaS) 供應商和 ISV 也可為其微型服務型解決方案提供完整的作業隔離和安全存取。