我是否将前端 (HTML/Javascript) 作为单独的微服务包含在内
Do I include Front-end (HTML/Javascript) as a separate Microservice
我将在微服务架构中使用 Angular 和 Spring Bootstrap:
1) 我是否将 Angular 模块作为其自己的微服务放置?
2) 如果第一个问题是正确的,那么所有前端微服务运行在同一个AWS实例上还是分开?
Do I place the Angular module as its own microservice?
您的 Angular 模块是前端,需要单独的应用程序服务器 node
因此您需要单独 运行 它。
If the first question is true, do all front-end microservices run on
the same AWS instance or separately?
对于这两种服务 (angular + spring-boot),您需要不同的应用程序服务器而不是不同的实例,因此您可以将这两种服务部署在一个侦听不同端口的 AWS 实例上.
例如angular-app on 3000 and spring-boot on 8080(由您选择)
希望这些信息能满足您的需求。
回答
1) Do I place the Angular module as its own microservice?
是,如果Angular模块由"static"内容组成and/or呢不需要应用程序服务器。 "static" 我的意思是,例如,纯 HTML/javascript 而不是对另一个服务或后端的单个 AJAX/SOAP/REST 调用。
是,如果angular应用程序是轻量级独立部署的网络应用程序(HTML+ JS+网络服务)。
否,如果您决定"to turn" Angular+Spring启动组合取而代之的是微服务。比照。下面的解释。
2) If the first question is true, do all front-end microservices run
on the same AWS instance or separately?
这取决于。比照。下面的解释。
为什么
我认为重要的是要记住微服务架构中微服务的真正特征。为此,我将从维基百科中引用一些有趣的部分(以及其他部分):
- 微服务架构中的服务可独立部署
- 服务是围绕业务能力组织的
- 微服务不是单体应用程序中的一个层。相反,它是一个独立的业务功能,具有清晰的接口,并且可以通过其自己的内部组件实现分层架构
- 主要好处是:模块化、可扩展性(尤其是横向)、集成和交付(CI、CD)
因此,严格定义微服务的不是技术(Angular、Spring引导),也不是层(后端、前端)。
相反,你必须问问自己:
- 你想达到什么程度的 g运行通用性
- 我想让什么可以独立部署(或容器化)
- 我打算如何扩展?
我想如何传送更新?
(非详尽列表...)
最后,你可能会想出至少两种可能:
(1) 说你的整个 Angular + Spring Boot (app) 形成一个可独立部署的微服务,这样它就可以容器化并 运行 在负载均衡器后面的多个 AWS 实例上,最终从集群功能中获益。
(2) 假设您的 Angular 应用程序 (JS) 及其服务(即 REST)形成一个微服务,您可以将其部署在任何Web/Application 服务器以及其他微服务。
案例 (1) 可能类似于:
AWS Instance1
Docker container
SpringBoot + Angular app (JS+WS)
AWS Instance2
Docker container
SpringBoot + Angular app (JS+WS)
而案例 (2) 类似于:
AWS Instance1
SpringBoot
Angular app1 (JS+WS)
Angular app2 (JS+WS)
AWS Instance2
SpringBoot
Angular app1 (JS+WS)
Angular app2 (JS+WS)
在最新的示例中,我将两个类似的微服务(app1 和 app2)放在一起来说明共存的可独立部署的业务单元。
其他技术组合(也有实际依赖性!)也是可能的。一个例子:
AWS.Instance1 (Front-End)
ApplicationServer
MicroService1 (facing REST-API)
MicroService2 (AngularJS app + REST)
AWS.Instance2 (Back-end)
ApplicationServer
MicroService3 (business/core REST-API)
...
这里的前端(MS2)使用可以调用后端函数(MS3)的 REST facade(MS1)。单独更新每个组件并进行扩展很容易,您必须创建两个具有相似布局的新 AWS 实例。尝一尝...
你会注意到独立部署并不意味着任何依赖。 (微)服务之间会(并且经常)存在 logical/functional 依赖关系,所以这里的关键字是独立的-deployable.
希望对您有所帮助!
我将在微服务架构中使用 Angular 和 Spring Bootstrap:
1) 我是否将 Angular 模块作为其自己的微服务放置?
2) 如果第一个问题是正确的,那么所有前端微服务运行在同一个AWS实例上还是分开?
Do I place the Angular module as its own microservice?
您的 Angular 模块是前端,需要单独的应用程序服务器 node
因此您需要单独 运行 它。
If the first question is true, do all front-end microservices run on the same AWS instance or separately?
对于这两种服务 (angular + spring-boot),您需要不同的应用程序服务器而不是不同的实例,因此您可以将这两种服务部署在一个侦听不同端口的 AWS 实例上.
例如angular-app on 3000 and spring-boot on 8080(由您选择)
希望这些信息能满足您的需求。
回答
1) Do I place the Angular module as its own microservice?
是,如果Angular模块由"static"内容组成and/or呢不需要应用程序服务器。 "static" 我的意思是,例如,纯 HTML/javascript 而不是对另一个服务或后端的单个 AJAX/SOAP/REST 调用。
是,如果angular应用程序是轻量级独立部署的网络应用程序(HTML+ JS+网络服务)。
否,如果您决定"to turn" Angular+Spring启动组合取而代之的是微服务。比照。下面的解释。
2) If the first question is true, do all front-end microservices run on the same AWS instance or separately?
这取决于。比照。下面的解释。
为什么
我认为重要的是要记住微服务架构中微服务的真正特征。为此,我将从维基百科中引用一些有趣的部分(以及其他部分):
- 微服务架构中的服务可独立部署
- 服务是围绕业务能力组织的
- 微服务不是单体应用程序中的一个层。相反,它是一个独立的业务功能,具有清晰的接口,并且可以通过其自己的内部组件实现分层架构
- 主要好处是:模块化、可扩展性(尤其是横向)、集成和交付(CI、CD)
因此,严格定义微服务的不是技术(Angular、Spring引导),也不是层(后端、前端)。
相反,你必须问问自己:
- 你想达到什么程度的 g运行通用性
- 我想让什么可以独立部署(或容器化)
- 我打算如何扩展?
我想如何传送更新?
(非详尽列表...)
最后,你可能会想出至少两种可能:
(1) 说你的整个 Angular + Spring Boot (app) 形成一个可独立部署的微服务,这样它就可以容器化并 运行 在负载均衡器后面的多个 AWS 实例上,最终从集群功能中获益。
(2) 假设您的 Angular 应用程序 (JS) 及其服务(即 REST)形成一个微服务,您可以将其部署在任何Web/Application 服务器以及其他微服务。
案例 (1) 可能类似于:
AWS Instance1
Docker container
SpringBoot + Angular app (JS+WS)
AWS Instance2
Docker container
SpringBoot + Angular app (JS+WS)
而案例 (2) 类似于:
AWS Instance1
SpringBoot
Angular app1 (JS+WS)
Angular app2 (JS+WS)
AWS Instance2
SpringBoot
Angular app1 (JS+WS)
Angular app2 (JS+WS)
在最新的示例中,我将两个类似的微服务(app1 和 app2)放在一起来说明共存的可独立部署的业务单元。
其他技术组合(也有实际依赖性!)也是可能的。一个例子:
AWS.Instance1 (Front-End)
ApplicationServer
MicroService1 (facing REST-API)
MicroService2 (AngularJS app + REST)
AWS.Instance2 (Back-end)
ApplicationServer
MicroService3 (business/core REST-API)
...
这里的前端(MS2)使用可以调用后端函数(MS3)的 REST facade(MS1)。单独更新每个组件并进行扩展很容易,您必须创建两个具有相似布局的新 AWS 实例。尝一尝...
你会注意到独立部署并不意味着任何依赖。 (微)服务之间会(并且经常)存在 logical/functional 依赖关系,所以这里的关键字是独立的-deployable.
希望对您有所帮助!