识别膳食计划应用程序的限界上下文
Identifying bounded contexts for meal planning app
我正在设计膳食计划应用程序。我希望它有:
- 带有食谱的典型食谱(食谱可以由用户添加到食谱中,它包含配料列表及其数量、份量、根据配料计算的卡路里量,配料可以添加到购物清单,食谱本身可以是添加到膳食计划)。食谱可以通过一些过滤器搜索,如菜系类型等
- 膳食计划器 - 每个工作日的可修改食谱列表
- 成分目录 - 可以通过过滤器搜索成分,每种成分都有一些值,例如卡路里。也许它会有测量计算器(比如一勺面粉有多少克)
- 购物清单 - 从食谱或用户手动添加的成分列表,可以删除它们并可以修改它们的数量
至于架构,我希望它是基于微服务的应用程序。我读过一些书,例如 Building microservices、Domain-driven-design quickly 以及大量文章和教程。但是我无法弄清楚如何对域进行切片以识别将是微服务的有界上下文。
我想到的都是像我指出的那样的划分 cookbook, planner, ingredient catalogue, 购物清单,但我不确定这是否适合在我的应用程序中设计模型。我是新手,我想从设计此类东西的人那里得到一些建议或想法。
I'm designing meal planner app.
As for architecture I want it to be microservices based app.
服务往往侧重于做而不是存在。出版食谱是一个工作流程,膳食计划是另一个工作流程,依此类推。
服务中的一个重要思想是它们应该是 autonomous。有许多不同的方式来理解自治,但我发现有帮助的一种是考虑我们将数据从生产者复制到消费者,这样即使生产者不可用,消费者也可以继续做有用的工作。
例如,膳食计划需要一本已出版的食谱。但它不一定需要今天的食谱——一份昨天的食谱就可以了。如果我们有一些异步消息将信息从一个服务传送到另一个服务,我们就可以实现这一点。
However I can't figure out how to slice domain to identify bounded contexts which would be microservices.
对 - 这是困难的部分,尤其是当您在该领域没有足够的经验来了解不同的进程是什么、它们共享哪些实时数据、它们共享哪些陈旧数据等等时。
好消息是,如果您还不知道该问题的答案,那可能是因为您现在需要处理的信息量很小,您可以一起完成。换句话说,首先关注在整体中部署你的领域模型,并在其中迭代自治模块的边界——特别注意哪些进程需要共享相同数据的实时副本,以及哪些进程可以使用陈旧副本数据的。
设计您的持久性模型,使功能永远不需要查看其他人的 table(信息是复制的,而不是共享的)。确保模块之间的通信满足location transparency,这样将一个组件移到其他地方就不会破坏世界。
我正在设计膳食计划应用程序。我希望它有:
- 带有食谱的典型食谱(食谱可以由用户添加到食谱中,它包含配料列表及其数量、份量、根据配料计算的卡路里量,配料可以添加到购物清单,食谱本身可以是添加到膳食计划)。食谱可以通过一些过滤器搜索,如菜系类型等
- 膳食计划器 - 每个工作日的可修改食谱列表
- 成分目录 - 可以通过过滤器搜索成分,每种成分都有一些值,例如卡路里。也许它会有测量计算器(比如一勺面粉有多少克)
- 购物清单 - 从食谱或用户手动添加的成分列表,可以删除它们并可以修改它们的数量
至于架构,我希望它是基于微服务的应用程序。我读过一些书,例如 Building microservices、Domain-driven-design quickly 以及大量文章和教程。但是我无法弄清楚如何对域进行切片以识别将是微服务的有界上下文。 我想到的都是像我指出的那样的划分 cookbook, planner, ingredient catalogue, 购物清单,但我不确定这是否适合在我的应用程序中设计模型。我是新手,我想从设计此类东西的人那里得到一些建议或想法。
I'm designing meal planner app. As for architecture I want it to be microservices based app.
服务往往侧重于做而不是存在。出版食谱是一个工作流程,膳食计划是另一个工作流程,依此类推。
服务中的一个重要思想是它们应该是 autonomous。有许多不同的方式来理解自治,但我发现有帮助的一种是考虑我们将数据从生产者复制到消费者,这样即使生产者不可用,消费者也可以继续做有用的工作。
例如,膳食计划需要一本已出版的食谱。但它不一定需要今天的食谱——一份昨天的食谱就可以了。如果我们有一些异步消息将信息从一个服务传送到另一个服务,我们就可以实现这一点。
However I can't figure out how to slice domain to identify bounded contexts which would be microservices.
对 - 这是困难的部分,尤其是当您在该领域没有足够的经验来了解不同的进程是什么、它们共享哪些实时数据、它们共享哪些陈旧数据等等时。
好消息是,如果您还不知道该问题的答案,那可能是因为您现在需要处理的信息量很小,您可以一起完成。换句话说,首先关注在整体中部署你的领域模型,并在其中迭代自治模块的边界——特别注意哪些进程需要共享相同数据的实时副本,以及哪些进程可以使用陈旧副本数据的。
设计您的持久性模型,使功能永远不需要查看其他人的 table(信息是复制的,而不是共享的)。确保模块之间的通信满足location transparency,这样将一个组件移到其他地方就不会破坏世界。