6.Cloud Native(云原生)

Cloud Native 这个概念首次出现在 2010 年 5 月 Paul Fremantle 撰写的一篇博文中,他使用 Cloud Native 这个词表达一种架构,这种架构可以描述应用程序和中间件在云环境中的良好运行状态。后来这个概念经过不断的实践和演化,大家普遍认同、达成共识的点是:

在单体架构向 Cloud Native 迁移的过程中,需要文化、组织、技术共同变革。

Cloud Native 是一组最佳实践,包括如下几个重要的内容:

  • 十二因子
  • 微服务
  • 自服务敏捷基础设施
  • 基于 API 的协作
  • 反脆弱性

Cloud Native 是由 3 部分组成:

  • 架构:以云和微服务架构为基础构建系统,云包括公有云、私有云、混合云,架构还需要考虑可用性、可拓展性、性能和一致性。
  • 研发流程:使用云作为基础设施从而达到自服务的要求,流程中应该尽量减少沟通人员的规模、以及测试和运维对开发的协助,使用容器保持各个环境一致。
  • 团队文化:建立*开放的环境,微服务架构要求小团队拥有自主决策的权利。

康威定律
“康威定律”(Conway's Law)包括如下 4 条:

第一定律:组织沟通方式会通过系统设计呈现。
第二定律:时间再多,一件事情也不可能做得完美,但总有时间做完一件事情。
第三定律:线型架构和线型组织架构间有潜在的异质同态性。
第四定律:大的系统组织总是比小系统更倾向于分解。

康威定律中最经典的是第一定律,也就是设计系统的组织,其产生的设计和架构等价于组织间的沟通结果,换句话说:什么样的团队结构就会设计出什么样的系统架构。

康威定律给我们的启发是:当我们设计架构的时候也应该对应的调整组织架构。当我们采用微服务架构时,应该建立全功能团队,开发、测试、产品在一个团队内。