观点:解决复杂问题的终极范式
李云
讲述:子阳大小:1.42M时长:03:06
技术最终是服务于商业和社会的,但在“条条大路通罗马”的情形下,如何判定一个技术比另一个技术更优呢?或者说,在技术向前演进的过程中,有没有固定的范式可被我们掌握,从而将之运用于理解新技术的优势呢?这个终极范式在我看来就是“抽象后分而治之”。
探索复杂规模问题的解决方法从来都是动态、渐进的,会经历不断认识问题和寻找更优解的持续迭代过程,期间伴随着部分“旧概念”被打破和“新概念”被重塑的双重行为。
比如,在实践微服务软件架构之初,一开始大家所关注的焦点是“如何拆”“拆多大”以及技术与组织架构的配称(康威定律),核心思路是通过将单体应用通过分拆去变成更小的软件发布单元,以解决单体应用的软件迭代速度慢的问题(背后导致了商业价值创造慢的后果)。
然而,当微服务改造工作完成,且微服务的个数达到一定的规模时,各服务之间的连接、排错、安全保障、监控等问题就逐渐地浮出了水面,那时行业深刻地体会并认识到微服务软件架构其实是将复杂度从单体应用内转移到了微服务之间。随着分布式应用规模的进一步增大,所涉开发和运维人员增长到一定数据时,效率问题再一次变得像单体应用时代那样不可小视。
不过,这一次所面临的问题域和规模比那时大了很多。要解决微服务软件架构所带来的新问题,需要探索更加体系化、规范化和全局一致的解决方案,那就不可避免地会采用新的概念切分手法去构建新的解决方案,期间不可并避免地会打破旧概念并创造出新概念。
新旧概念相比之下,存在如下差异。
其一,旧概念更侧重于局部最优,不同旧概念之间的衔接存在生硬的现象。对复杂问题的探索从来都是渐进式的,因而对问题的理解是一个从局部走向全局的过程,出现这样的现状是非常正常的现象。对于软件系统来说,其软件设计质量可从概念是否优雅、流畅去体现。子系统之间的概念衔接生硬往往意味着软件设计缺乏全局观,以致衔接处埋藏了不少丑陋的代码,因维护成本高而影响了整个系统的演进效率和解决问题的有效性。
其二,新概念更加抽象,塑造的目标是为了实现全局最优(体系化),并满足更多利益相关者的不同诉求。由于设计时的问题域更大、格局更高,所以子概念之间的衔接相当流畅,体现出了软件设计的整体感和一致性。
“抽象后分而治之”为技术人提供了一种单纯从技术视角去分析一种技术是否优于另一种技术的方法,能一定程度避免被“老酒换新瓶”那样的新概念所蛊惑。
以上就是今天的内容,希望对你有所启发。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论