如何将微服务架构应用于投票应用程序?

时间:2018-02-11 11:50:05

标签: node.js microservices

我正在开发FreeCodeCamp全栈投票应用程序,并希望应用微服务架构。投票申请的用户故事如下:

  • 作为经过身份验证的用户,我可以保留我的民意调查,稍后再回来访问它们。
  • 作为经过身份验证的用户,我可以与朋友分享我的民意调查。
  • 作为经过身份验证的用户,我可以看到我的民意调查的汇总结果。
  • 作为经过身份验证的用户,我可以删除我认为不再需要的民意调查。
  • 作为经过身份验证的用户,我可以使用任意数量的项目创建投票。
  • 作为未经身份验证或经过身份验证的用户,我可以查看并投票支持所有人的民意调查。

我正在构思一个架构并提出这个:

Concept Architecture Voting App

该应用程序由6个微服务组成: 1.用户界面 2.聚合器 3.授权(登录,注销) 4.社交媒体(分享) 5.民意调查(有db) 6.用户(使用db)

好奇开发人员如何构建微服务将这些用户故事分解为微服务。谢谢!

2 个答案:

答案 0 :(得分:1)

看起来你已经在微服务中分割应用程序做得很好。每个人都有自己的持久性,他们应该与技术无关的协议或异步事件进行通信。

我会像你那样做。也许Auth应该分为Authentication(即使用无状态jwt)和Authorization(+自己的数据库)。

Authentication将确保用户是他所说的人。

Authorization将验证用户是否只能修改自己的民意调查。

答案 1 :(得分:1)

民意调查模块目前似乎负责创建民意调查,进行民意测验,管理民意调查会议(假设您的民意调查可能有多个问题需要回答)并跟踪结果。

好吧,你可能只有一个数据库可以保留所有这些东西,但它们有不同的问题,并且(如果你扩展它)不同的业务团队管理它。所以我建议你可以在这些行上拆分民意调查。 (当你开始扩大规模时,它们可能会有所帮助)