主要观点:软件系统构建方式在不断演进,当前大家都在谈论微服务,但其背后的“模块化单体”值得关注。微服务虽因云计算等技术流行,但技术界似乎过快地跟风,未深入思考决策背后原因,微服务虽解决一些问题但也带来新问题。
关键信息:
- 单体应用像由整块石头雕刻的雕像,是一个整体运行的代码,不同功能混合在一起。
- 模块化指由相互配合的独立部分组成,编程中模块化是将程序分为可互换的模块,各负责特定任务,模块要有清晰接口。
- 独立可互换性要避免紧耦合,如通过接口使模块依赖减少;模块需包含完成工作所需的一切,即垂直切片;还需有定义良好的接口,如通过接口定义模块合同。
重要细节:
- 以
OrderProcessor
代码为例说明紧耦合和松耦合的区别,松耦合通过接口使模块更独立易测试和更改。 - 以在线商店的模块如
OrderManagement
等说明模块应包含完成特定工作的所有逻辑和部分。 - 以
IOrderService
接口说明模块合同应清晰简单、只包含客户需知内容、保持稳定并隐藏其他细节。
结论:构建单体系统不一定设计差或不模块化,模块化单体是用模块化原则构建的单应用系统,各模块应独立可互换、包含所需部分、有良好定义的接口或合同,这样可兼具单应用的简单性和模块化设计的灵活性,尤其适用于微服务使事情变复杂的系统。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。