AAA原则:
可考核(Accountable):好的软件架构让每个团队都有自己负责的业务目标
可自主(Autonomous):好的软件架构让每个团队都一定的自主性可以独立往前跑,而不总是被其他团队阻塞
可复用(Amortized):好的软件架构鼓励对未来投资,使得基础设施的成本可以被摊销
可考核>>可自主>可复用
“可考核性”是一切的关键,是实时软件管理的前提。
技术团队必须名确业务目标,并对业务目标负责,这样软件工程的可考核性才得以体现。。
Bounded Context
在大的尺度上,架构就是分解Bounded Contexts(参见领域驱动开发,DDD)。这就是把业务的组织架构图体现到软件的世界里:
以电商领域为例,业务被分解为上面这些Bounded Contexts。没有一个技术团队可以覆盖横跨这些Bounded Contexts的业务流程的。这并不是啥坏事情,大的问题被分解为了小问题,业务和技术在一个Bounded Context的范围内,携手朝着共同的目标去努力。
协作单元
解决方案应该是把软件作为一个整体来思考,而不是被狭隘的“操作系统进程”的视角给限制了。构建新的微服务的成本,应该和后台用function启动一个线程没有多大区别。理想的编程语言里,我们有各种各样的function,但是执行机制不同。