微服务重构
在重构应用中,可以通过以下几个方法梳理:
- 每个 Rest 服务都是一个潜在的微服务
- 每个 SOAP web 服务或 EJB 都是一个潜在的微服务
- 使用领域驱动设计(domain-driven design)发现企业资产,这些资产可能是微服务。
在重构数据方面,需要考虑以下几个方面:(1)寻找与其他数据关联不大的数据孤岛,检查系统的实体-关系图;如果有与其他数据断开的数据,就是一个潜在的数据重构点;(2)数据表非规范化,对高规范化数据库中非规范化一些数据表以将数据重组为更大的逻辑块,其目的是增加数据冗余度使其更容易被打破;(3)反向批数据更新,对数据重构时需要考虑数据重构失败时可批量地将新数据反向导回旧的数据模式;(4)使用主数据管理,对被广泛使用的数据实体组成一个单一的一致性视图,并开发相应的微服务与主数据一起工作;(5)在 SQL 数据库中寻找存储在 BLOB(二进制大对象)字段类型中的代码,转而将这些对象存储在 NoSQL 数据库中,例如以键值(Key-value)存储方式存储;(6)寻找活跃的记录模式,与其他无关的 Flat 对象,使用文档模式数据库进行存储,例如 Cloudant 或 Mongo 等。
微服务重构后还需要重新打包应用,包括:(1)分割应用的 EAR 文件并打包成独立的 WAR 文件;(2)应用“一个容器一个服务”,分别部署每个 WAR 文件至其自有的 WebSphereLiberty 实例运行时或 Docker 容器中;(3)分别构建、部署和管理,为每个 WAR 文件使用独立的 DevOps 管线,每个 WAR 文件独立伸缩和管理。