认识微服务认识微服务——一颗银弹一颗银弹
微服务架构是一颗银弹吗?
如今微服务架构正逐渐演变成一种主流的架构风格,那么微服务架构是一颗银弹吗?我们提倡微服务架构的目的是什么?
1987 IBM大型机之父Fred Brooks在《没有银弹:软件工程的本质性与附属性工作》中提出软件工程包括本质性工作和附属性
工作。本质性工作是创造出一种由抽象的软件实体所组成的复杂概念结构;附属性工作是用程序语言来表达抽象概念,并在空
间和时间的限制下,翻译成机器语言。《没有银弹》主张并断言在未来的十年之内(从1986年文章发表后开始计算),不会
有任何单一软件工程上的突破,能够让程序开发的生产力得到一个数量级(10倍)的提升。
我们讨论或推广一项软件实践或技术的时候,实际上是在谈如何提高生产力。本文试图利用《没有银弹》对本质性工作四个原
因的归类,去认识微服务架构的生产力。《没有银弹》认为本质性工作大部分的活动是发生在人们的脑海里,具有四大难题:
复杂性、隐匿性、配合性和易变性。
软件工程的本质性难题
1、复杂性
软件要解决的问题通常牵扯到多种元素和计算步骤,这是一种人为的、抽象的智能活动,多半是复杂的。随着“软件吞噬世
界”不断深入,软件所对应的社会活动越来越多,也越来越复杂。
单体架构系统的困境
系统往往是承载的业务越成功,越容易失败。因为系统会随着业务的发展,增加越来越多的特性和功能,使得系统复杂到没有
一个人能全面理解,没有一个人敢去修改原有的功能或代码。
微服务的救赎