REL 3: 如何设计工作负载服务架构?
使用面向服务的架构 (SOA) 或微服务架构构建高度可扩展的可靠工作负载。面向服务的架构 (SOA) 可通过服务接口使软件组件可重复使用。微服务架构则进一步让组件变得更小、更简单。
资源
Amazon API Gateway: Configuring a REST API Using OpenAPI
Implementing Microservices on AWS
Microservices on AWS
Microservices - a definition of this new architectural term
Microservice Trade-Offs
Bounded Context (a central pattern in Domain-Driven Design)
最佳实践:
-
选择如何划分工作负载: 应避免使用整体式架构。您应该在 SOA 和微服务之中做选择。在做选择时,权衡优点和复杂性 – 适用于即将首次发布的新产品的功能有别于从一开始就构建用于扩展的工作负载的需求。使用较小分段的好处包括提高敏捷性、组织灵活性和可扩展性。复杂性则包括可能会增加延迟,调试变得更复杂,而且加重运营负担
-
构建专注于特定业务领域和功能的服务: SOA 采用由业务需求定义的划分明确的功能来构建服务。微服务则使用领域模型和有界上下文对此进行进一步限制,使每项服务都只用于一种用途。专注于特定功能让您可以区分不同服务的可靠性要求,并且更有针对性地锁定投资目标。简洁的业务问题和与每项服务关联的小型团队也简化了组织扩展。
-
根据 API 提供服务合同: 服务合同是团队之间关于服务集成的成文协议,它包括机器可读的 API 定义、速率限制和性能预期。版本控制策略让客户能够继续使用现有的 API,并在更新的 API 准备就绪时将他们的应用程序迁移到此类 API。只要遵守合同,即可随时进行部署。服务提供商团队可以使用自己选择的技术堆栈来满足 API 合同要求。同样,服务使用者可以使用自己的技术。
改进计划
选择如何划分工作负载
- SOA 和微服务分别提供较小分段,这是现代可扩展的可靠架构的首选。但是,如果您有足够的理由选择整体式架构,则必须确保它是模块化架构,而且由于您的产品随着采用用户的增加而扩展,它最终也可转变成为 SOA 或微服务架构。
- 要在实现较小分段的同时避免一些微服务复杂性,SOA 是很好的折中方案。
Microservice Trade-Offs - 如果您的工作负载适合,并且您的组织可以支持,则应使用微服务架构来实现最佳敏捷性和可靠性。
Implementing Microservices on AWS - AWS App Mesh 可用于面向服务的架构,以实现可靠的发现和服务访问。
What is AWS App Mesh?
构建专注于特定业务领域和功能的服务
- 执行领域分析,为您的工作负载制定领域驱动设计 (DDD) 方案。然后,您可以选择一个架构类型,以满足您的工作负载需求
How to break a Monolith into Microservices
Getting Started with DDD when Surrounded by Legacy Systems
Eric Evans “Domain-Driven Design: Tackling Complexity in the Heart of Software”
Implementing Microservices on AWS
- 根据工作负载及其设计目标、限制和任何其他使用注意事项来定义 API。
- 定义 API。
- API 定义应允许增加参数。
- 定义设计可用性。
- 您的 API 可以具有针对不同功能的多个设计目标。
- 设置限制
- 通过测试来确定工作负载的功能限制。
- 定义 API。
根据 API 提供服务合同
Amazon API Gateway: Configuring a REST API Using OpenAPI
- 版本控制策略让客户能够继续使用现有的 API,并在更新的 API 准备就绪时将他们的应用程序迁移到此类 API。
- Amazon API Gateway 是一种完全托管的服务,可以帮助开发人员轻松创建任意规模的 API。采用 OpenAPI 规范(OAS,以前成为 Swagger 规范),您可以定义 API 合同并将其导入到 API Gateway。然后,您便可以通过 API Gateway 对 API 进行版本控制与部署。