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