【发布时间】:2019-02-26 19:05:57
【问题描述】:
我要在 AWS 上构建微服务架构,我想请你澄清我的疑惑。
我目前的一般概念
我想使用 API Gateway,它公开了在 Elastic Beanstalk 中运行的微服务 API。我想将 Elastic Beanstalk 放置在 VPC 中,而无需从 Internet 直接访问其实例。
问题和疑问:
- Elastic Beanstalk 在应用程序创建时获取子域。这个子域应该由 API Gateway 使用,集成类型:AWS 服务,在操作配置中 - 我说的对吗?
- 单个微服务代表什么? Elastic Beanstalk 的应用程序是特定的可扩展微服务吗?
- 微服务应该如何相互通信?我将在某些任务中使用 SQS(简单队列服务)。但在其他情况下,两个微服务通过 API 网关而不是直接进行通信会更好吗?对吗?
- 测试环境:我应该在测试环境(或暂存环境)中使用什么结构?我考虑使用另一个 Elastic Beanstalk 和其他 Amazon 服务创建单独的 VPC。
- 测试环境和API网关:我应该如何设置API网关?如果请求具有特定的子域,它应该允许客户端访问测试环境中的微服务,例如:test.mydomain.com/hello_world/say_hello。我不确定如何在 CI/CD 中使用 API Gateway 使其快速简单,无需手动将一些配置从测试阶段复制到生产阶段。 (我不期待任何复杂的解决方案,只是一些关于我可以使用哪些组件、部件、概念的提示。更多细节我会自己找到)。
- 您有使用 Codep Deploy 和/或 Jenkins 将应用程序部署到 Elastic Beanstalk 的经验吗?我很感兴趣哪种方式会更好:Jenkins、AWS Code Deploy 或 Jenkins+CodeDeploy。
【问题讨论】:
-
一般来说,当人们提到微服务时,他们指的是 AWS Lambda 或 Azure Functions。对于 Lambda,可以直接从 API 网关外部调用函数,然后执行 SQS 任务或直接启动其他 lambda 函数。此外,除非您将 VPC 连接到一些本地基础设施并让 Lambda 函数访问这些资产,否则我认为不需要 VPC。
-
我认为您将“微服务”与“无服务器”混淆了。
标签: amazon-web-services amazon-elastic-beanstalk microservices aws-api-gateway