更加开放
由于使用了多语言 API,所以开发人员可以根据需要实现的功能,自由选用最适合的语言和技术。
所面临的挑战
如果您的企业正在考虑迁移到微服务架构,那么不仅是应用要变,相关人员的工作方式也会随之而变。在某种意义上,改变企业和文化并不容易,因为每个团队都有自己的部署节奏和所负责的服务,而且这些服务都拥有自己的客户群。这些可能并不是开发人员通常要担心的问题,但是这些问题却决定了微服务架构能否取得成功。
除了文化和流程之外,复杂性和效率问题是基于微服务的架构所面临的另外两大挑战。以下八类挑战:
- 构建:您必须花时间明确各个服务间的依赖关系。要知道,由于存在这些依赖关系,当您完成一个构建时,可能会触发多个其他构建。您还需要考虑微服务对于数据的影响。
- 测试:集成测试和端到端测试可能会前所未有的难以实施,但却更加重要。根据您在架构相互支撑的服务时所采用的不同方式,架构中的一个部分出现故障,很可能会导致其他部分也随之出现故障。
- 版本管理:在更新到新版本时,请记住:向后兼容性可能会因更新操作而失效。要解决这一问题,您可以利用条件逻辑来进行构建,但是构建会变得繁复、难以控制且快速。或者,您也可以为不同的客户端维护多个活跃版本,但是相关的维护和管理工作会变得更加庞杂。
- 部署:没错,这也是一大挑战,至少是首次设置时所要面临的一大挑战。为了简化部署,您必须先大量投资自动化,因为人工部署无法应对微服务的复杂性。请好好思考您要以何种方式以及怎样的顺序来部署各项服务。
- 日志记录:使用分布式系统时,您需要利用集中式日志将所有相关信息集中到一处。否则,积累的日志数量将让您难以招架。
- 监控:您必须通过一个集中式视图来了解整个系统的情况,以便找出问题的根源。
- 调试:无法进行远程调试,因为这种方式无法涵盖数十个或数百个服务。不幸的是,关于应该如何进行调试,目前还没有标准答案。
- 连接:请考虑使用服务探索功能,无论是集中式的还是集成式。