微服务集成与单体应用拆分策略
1. 按自身条件集成第三方软件
在实际开发中,很多时候我们会使用 COTS(Commercial Off - The - Shelf,商用现货)和 SAAS(Software as a Service,软件即服务)产品,因为从头构建所有东西既不可行也不明智。但使用这些产品会带来耦合问题,解决的关键在于按自身条件来处理。
1.1 CMS 作为服务的示例
CMS(Content Management System,内容管理系统)是常见的需要定制或集成的产品。企业通常希望用动态内容丰富网站功能,而这些动态内容的来源往往是企业内部的其他服务。
CMS 的开发环境通常较差,它主要擅长内容创建和管理,在页面布局方面表现不佳,往往需要懂 HTML 和 CSS 的人来微调模板,也不是构建自定义代码的理想平台。
解决方案是用自己的服务前置 CMS,将其视为仅用于内容创建和检索的服务。在自己的服务中编写代码并按需集成其他服务,还能控制网站的扩展,选择合适的模板系统。大多数 CMS 提供内容创建的 API,也可以用自己的服务门面来封装这些 API。
例如,曾有客户想为产品推出新网站,最初想在 CMS 上构建整个解决方案,但还未选定 CMS。我们建议采用前置服务的方法,在等待选择 CMS 工具时,用一个只展示静态内容的 Web 服务模拟。最终在 CMS 选定之前就上线了网站,之后直接接入选定的 CMS 工具,无需更改前置应用。
1.2 多角色 CRM 系统示例
CRM(Customer Relationship Management,客户关系管理)工具功能繁多,可能成