云原生架构原则

云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
传统单体应用中,开发人员的代码包含3部分:业务代码、三方软件、处理非功能特性的代码,其中只有业务代码是核心,是对业务真正带来价值的。云原生架构从业务代码中剥离了大量非功能性特性到 IaaS 和 PaaS 中,从而减少业务代码开发人员的技术关注范围。
云原生架构的应用可以最大程度利用云服务和提升软件交付能力,加快软件开发,表现在以下3个方面:

  1. 代码结构发生巨大变化。 云把三方软硬件的能力升级成了服务,开发人员的开发复杂度和运维人员的运维工作量都得到极大降低。
  2. 非功能性特性的大量委托。 非功能性特性是没有给业务带来直接业务价值,但通常又是必不可少的特性,比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等等。大量非功能性特性,特别是分布式环境下复杂非功能性问题,被云产品处理掉了。以高可用为例:
    虚机:当虚机检测到底层硬件异常时,自动帮助应用做热迁移,应用对整个迁移过程都不会有任何感知;
    容器:容器通过监控检查探测到进程状态异常,从而实施异常节点的下线、新节点上线和生产流量的切换等操作,整个过程自动完成而无需运维人员干预;
    云服务:应用可以把“有状态”部分都交给了云服务(如缓存、数据库、对象存储等),由于云服务本身具备极强的高可用能力,那么应用本身会变成更薄的“无状态”应用,因为高可用故障带来的业务中断会降至分钟级。
  3. 高度自动化的软件交付。

云原生架构原则

  1. 服务化原则
  2. 弹性原则
  3. 可观测原则
  4. 韧性原则
  5. 所有过程自动化原则
  6. 零信任原则
  7. 架构持续演进原则