什么是 微服务( 四 )


你怎么知道你是否在做正确的微服务设计?如果您的团队可以在不与其他团队协调的情况下随时部署更新,并且如果其他团队可以类似地部署他们的更改而不影响您,那么恭喜您,您掌握了微服务的诀窍 。
失去微服务提供的好处的最可靠方法是不遵守解耦规则 。如果我们仔细观察,我们会发现微服务都是关于自治的 。当这种自主权丧失时,团队必须在开发和部署期间进行协调 。需要完美的集成测试来确保所有微服务协同工作 。
即便如此,详尽的测试也无法捕捉到所有问题 。当出现问题时,耦合服务是很难调试的 。当问题被发现时,修复它并不总是像回滚更新那么容易 。
紧密的服务依赖关系创建团队依赖关系 。
这些都是分布式计算带来的问题 。如果您曾经使用过云服务,您就会知道将服务或机器分布在多个地理位置与在同一站点上运行所有内容不同 。分布式系统具有更高的延迟,可能存在同步问题,并且更难管理和调试 。这种高度耦合的服务架构实际上是一个分布式单体架构,具有两全其美的优点,也没有微服务应该带来的任何好处 。
如果您在不与其他团队协调或依赖其他微服务的特定版本来部署您的微服务的情况下无法进行部署,那么您只是在分发您的单体应用 。
微服务并没有取代单体 。两者都是有效的方法 。事实上,当团队仍在 探索 他们正在构建的东西时,单体应用可能是最佳选择 。
单体应用就像是项目的自然起点,因为它易于开发、快速迭代、快速部署、易于调试,并且更能容忍设计错误 。在可扩展性成为问题之前,单体应用可以让您走得更远 。
微服务是我们开发软件的最具可扩展性的方式 。但它们不是免费的午餐 。如果您不小心,它们会带来一些很容易发生冲突的风险 。当团队正在成长并且您需要保持快速和敏捷时,它们非常有用 。但是你需要对要解决的问题有一个很好的理解,否则你最终会得到一个分布式的单体 。

推荐阅读