归档微服务:如何组织业务功能

Archiving microservice: How to organize business functions

我正在创建一个微服务,它将负责处理 zip 和 tar 文件的归档和取消归档。

我知道微服务应该专注于一个业务功能(BF)。但是,当我想到业务功能时,我应该指归档和解压(1 个 BF)、归档和单独的解压(2 个 BF)还是压缩、taring、解压、解压缩(4 个 BF) )?

有什么理由比其他选项更喜欢其中一个选项吗?

微服务的粒度一直是个问题,没有通用的好的答案。甚至有时最终使用单体应用也是合理的。这真的取决于你想要实现什么。

对于您的问题,微服务通常旨在对域的单个部分进行分组(例如计费、运输...)。在您的示例中,我会说微服务可以负责压缩,因此归档和取消归档都可以在这个单一的微服务中进行是有道理的。

在我看来,将微服务视为单一功能(例如 untaring)过于细化。它带来的 "cons" 多于 "pros" - 通常是更多的网络流量。想象一下您的微服务通过 HTTP 相互通信的情况(当今非常常见的场景)并且您想要创建 tar.gz 存档。一个微服务可以 tar 而另一个 gzip 会产生不必要的网络流量 time/bandwith...

我认为 zip/unzip/etc 不应被视为业务功能。这些是实现特定业务功能所需的单独技术功能。

对我来说,业务功能是 "archive this data",其中可能包括对其进行压缩、将其粘贴到某种归档存储系统中以及为将来检索编制索引。