虽然微服务是下降总体结构的最佳方式。然而,它有其自身的一些缺点。但在得出任何结论以前,让咱们来看看其中的一些。python
1.开发环境超载数据库
随着应用程序及其数据库的增加,代码库也在不断扩展。随着针对每一个微服务的代码扩展,它会使每一个加载的应用程序的开发环境过载。这可能致使生产力的重大延迟。安全
2. DevOps复杂性网络
单功能微服务的开发和部署并不是易事。使用多种技术并建立API来集中系统是一项挑战。这须要一个经验丰富的DevOps团队。采购这样一个经验丰富的DevOps团队对于维护基于微服务的应用程序的复杂性相当重要。机器学习
3.增长资源和网络使用微服务
因为多个组件协同工做,所以在某种程度上彼此进行通讯很是重要。此通讯将致使网络使用量增长。这须要高速可靠的网络链接。此外,运行这些应用程序的费用也会增长。全部服务都单独运行,增长了运营成本。学习
4.测试测试
测试应用程序可能具备挑战性,由于有单独的组件。与单片应用程序相比,微服务须要更长的时间进行测试,而且在出现任何错误时更加复杂。有时,因为测试最终会影响整个应用程序,可能会致使延迟。资源
5.安全开发
在Web应用程序方面,安全性相当重要。使用微服务,实现这一点很困难。当存在独立模块的集群时,每一个模块都须要遵照为整个系统定义的认证和受权规范。
除此以外,每一个模块可能与其余模块通讯,跟踪数据流变得很是困难。须要其余措施,例如具备负载平衡的API网关,以确保行为一致。这些额外的步骤致使每一个微服务的开销。
6.应用程序的复杂性
因为微服务是独立组件,所以每一个微服务一般都有一个最适合其需求的技术堆栈。例如,机器学习模块可能使用python堆栈,而计量服务可能使用Java堆栈,UI服务可能使用MEAN堆栈。这会致使复杂性,由于资源池和管理和构建新功能所需的技能将很是高。
7.高初始投资
微服务独立运行,它们须要独立的容器或资源来运行它们。每一个项目可能有不少微服务一块儿工做,须要更高的投资来设置包括微服务,安全容器,负载平衡器,API网关等的全部集群。