我有一个新的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服务。
我很困惑组件的顺序是什么。
它应该首先响应应用程序,然后再去api网关或ELB吗?
我们需要ELB吗?
请求将到达ELB,然后将到达API网关,进一步?
所有这些问题的答案将决定下一个问题的答案
选项A还是B?还是两者都不对?或者从客户到后端服务的箭头应该在哪里?
选项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应该触发构建,存储工件并进行部署。-jenkins服务器应如何与其他计算机通信以部署服务?
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。