首页 > 解决方案 > AWS 中的生产级微服务架构

问题描述

我有一个新的 Web 应用程序,在我们公司,我们决定如下所示,我是第一次创建架构,因此需要一些输入。

1) 前端 - React.js

2)后端 - Java(春季启动)

3) 架构——微服务

4) 基础设施 - AWS

5) CI - 詹金斯

我们将开发分为三个阶段

第 1 阶段 -使用 Spring Boot 和 Spring Cloud 创建 AWS 基础设施、前端服务和少量后端服务。尽可能少地使用 AWS 服务

第 2 阶段 -创建更多后端服务并将所有内容 docker 化

第 3 阶段 -使用 Kubernetes 编排前一个阶段,并在需要时使用更多 AWS 服务

我处于第 1 阶段,经过大量资源和学习材料后,在创建生产级架构和 AWS 环境方面需要帮助。有很多单独的资源,但没有找到太多关于真实系统在运行时应该是什么样子的信息。

1)如何隔离环境?

我的理解 -创建将有 5 个帐户的组织 - 根、安全、共享服务、产品和非产品 aws 帐户。如果需要,非产品可以有多个环境,例如测试、阶段。

Something like this

隔离环境

2)如何创建安全/网络层?

我的理解 -创建私有和公共子网,并在共享服务和非产品环境之间创建 vpc 对等,并使用 iam 角色。

3) 设计微服务的最佳方式?

我的理解 -在后端有一个微前端和微服务。客户端将在浏览器中请求网页,请求将到达 UI 服务。

选项 A 选项 A

选项 B 选项 B

4) 在私有子网和公共子网中保留哪些资源?

我的理解 -在第 1 阶段,每个服务模型遵循一个实例,因此每个服务都将具有 ec2 实例。在以后的阶段,我们将转向容器化。很少有事情很清楚,后端服务和持久性(如 DB)将位于私有子网中,并且只保留非常少的公共资源,如仅堡垒主机等

- Question is depending on answer for question #3, what others should be public? 

- ELB, api gateway, service discovery? 

- do i need to keep NAT gateway always so as to allow private ones to access internet?

5) 完整的发布部署工作流程应该是什么?

我的理解 -开发人员提交代码,詹金斯应该触发构建、存储工件和部署。- jenkins server 应该如何与其他机器通信来部署服务?

- how credentials are managed for communication between jenkins and ec2 instances?

- what is the production grade structure for jenkins project? like does build, deploy and test should be separate items?

如果您在您的企业/组织中配置了相同的配置,如果一些经验丰富的架构师可以帮助我,我将非常感激,并且如果有任何可用的在线参考资料我无法找到用于构建此类生产级系统,请告诉我

注意 - 阶段 1 的设计应尽可能平稳过渡到阶段 2 和 3

标签: javaamazon-web-servicesspring-bootjenkinsmicroservices

解决方案


这是一个复杂的问题,我们无法在 Stack Overflow 上解决这个问题。

我建议花一些时间阅读:

您还可以研究来自AWS 无服务器英雄的内容。


推荐阅读