内容


重构到微服务,第 3 部分

微服务采用路线图

一步一步地将您的应用程序从一个整体式服务迁移到一组微服务

Comments

系列内容:

此内容是该系列 3 部分中的第 # 部分: 重构到微服务,第 3 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:重构到微服务,第 3 部分

敬请期待该系列的后续内容。

在本系列的第 1 部分中,我介绍了为获得一个基于微服务的方法而重构您的代码的一些关键原因和建议。在第 2 部分中,我介绍了可以通过对数据执行基于微服务的重构来解决的各种问题。

现在,在本系列的结尾部分,我会将该建议绘制成一幅将您的应用程序从一个整体式服务转换成一组微服务的路线图,该路线图包含 4 个阶段。

在我帮助客户采用微服务时,很少看到客户一次性直接采用完全由微服务组成的战略。相反,大多数客户都采用循序渐进的方法,成功地迁移到了微服务。

针对微服务而重构

针对微服务而重构
针对微服务而重构
1

宏服务

宏服务是您旅程的第一步。宏服务是大多数客户查看他们现有的“SOA 服务”时可以看到的服务。可以实现 Web 服务来使用 RESTful 协议,这就像在 SOAP 中发现服务实现一样非常常见。

您的起始点是采用一种通用的服务访问协议:REST。(使用了消息传递系统的异步服务是一个特例,为保持本文简单,我不打算在此处介绍它)。因此,一旦您同意在 REST 上实现规范化,如果您现有的 Web 服务支持 REST,那么您已经迈出了这一步 — 非常不错!

但是,如果您有一个根本没有任何 Web 服务的整体,那么就从这里开始,看看您是否能够将您的业务逻辑与 RESTful Web 服务分离。

或者您有一些 Web 服务,但它们都基于 SOAP,您需要将基于功能的 SOAP 接口重构为基于实体的 REST 接口。

一旦重构到 REST,您可能想确保自己能够记录和编目 REST 服务。此处描述了一些格式,比如 Swagger,它们可能很有帮助,特别是与 IBM Cloud® 中的一些工具(比如 API Management)联合使用时,API Management 可在 Swagger 文档中使用,生成个别的 IBM Cloud 服务磁贴,用于绑定和调用那些 RESTful 服务。

2

迷你服务

在同意使用 REST 并记录您的接口后,下一步就是开始拆分这些服务。请确保您已尽最大努力按照功能来分解服务,并为每项服务实现了一个容器。请记住,按照本系列第 1 部分中的分解准则进行操作。

可能需要花费一段时间才能完成服务分解。该微服务架构需要一定水平的操作准则,许多团队都不准备采用操作准则。如果采用了“每项服务一个容器”的策略,您可能需要采用一些支持技术,比如 IBM Cloud 中的 Cloud Foundry 或 Docker。许多团队可能想暂缓迈出这一步。

同样,“每项服务一个容器”的策略可能要求您从传统的中间件(比如 WebSphere® ND)迁移到 WebSphere Liberty。花费一些时间,确保设置了正确的基础架构来进行监控和记录,以便能够支持此方法。在 IBM Cloud 中,可以使用 Monitoring and Analytics 服务或第三方服务,比如 New Relic。在任何情况下,您可能都想采用一种标准化方法来跟踪服务的使用情况和执行服务的方式。

3

微服务

除非您在了解部署服务的方式的同时,还了解构建它们的方式,否则无法实现一个完整的微服务架构。在这一步中,您要为每项服务实现一个完全独立的持续集成/持续交付 (CI/CD) 管道。IBM Continuous Delivery Pipeline 等工具可帮助您实现此目标。

在前进到旅程中的这一点时,您可以开始考虑独立扩展您的微服务。IBM Cloud Container 服务中的 Container Groups 或针对 IBM Cloud 服务的 Auto-Scaling 等特性会给您提供帮助。借助 Auto-Scaling,可以根据您定义的扩展策略来动态调整应用程序实例的数量。

4

大规模的微服务

最后一步是移动到一个完全向外扩展的微服务方法。许多团队永远无需走这一步!根据我的经验,多数项目最终只有几个(通常少于10 个)微服务。

在此步骤中,必须考虑服务发现的问题:如何发现服务,以及如何设置路由规则?IBM Cloud 中的 Service Discovery 可为您提供帮助。Service Discovery 可以通过逻辑名称而不是硬编码网络地址来定位微服务,它还可以自动删除不健康的微服务。

您还需要考虑一些更高级的配置和部署选项,比如那些受 IBM Cloud 上的 Active Deploy 支持的选项。

最后,您可能要考虑在下游服务失败时会发生什么。在这种情况下,类似 Netflix Hystrix 之类的库可以在 IBM Cloud 上的 IBM Container 中运行。

结束语

现在,您已经查看了一个路线图,您的应用程序现在将依照该路线图完成微服务的最终“涅槃”,您可以开始您的学习之旅了!此外,您可以了解每一步的构建方式,老实说,如果您需要的话,停止实现最终目标也没什么关系。

只是您一定要记住我在前面文章中的警告 — 不要只是为了玩酷而采用微服务。请确保您正在解决哪个微服务架构非常适合您的问题,而且采用微服务只是增加应用程序业务价值的总进程的一部分。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Java technology
ArticleID=1039922
ArticleTitle=重构到微服务,第 3 部分: 微服务采用路线图
publish-date=12062017