云原生应用开发实战:基于.NET开发框架及Kubernetes容器编排技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 云原生设计的十二原则

如何设计一个云原生应用?应用的架构应该是什么样的?有哪些特性、模式和最佳实践可以参考和遵循?哪些基础架构和运营问题是最为重要的?

十二原则[6]是用来衡量一个服务是否适合迁移到云上的原则,换言之,相比于不符合这些特征的传统应用服务,具有这些特征的应用更合适云化。

为了理解这些原则,我们需要搞清楚服务是怎样在运行平台上运行的。

以标准的K8s(Kubernetes)[7]平台为例,一个典型的容器化后端服务,从开发到上线需要经历一系列复杂的步骤,初次上线、后续迭代的流程已经比较复杂,如果单靠手工处理,单体系统还勉强可以应付,毕竟单体系统即使变成“大泥球”,也大多还处于人力可控的范围内。但随着系统复杂度的进一步提升,整个系统演化成微服务系统之后,随之而来的技术挑战是显而易见的。

为提高开发和运营效率、减少错误,在设计和开发阶段就需要考虑借助云平台以及整个生态的能力,从一开始就要做一个适合在云上运行的服务。十二原则给了我们一把衡量是否适合上云的标尺,如果不遵循这些原则,不借助于云平台提供的能力、不剥离业务无关的部分,随着服务规模不断增大、业务复杂度进一步提升,就容易引发各种问题。在理解十二原则存在的价值后,我们分析一下每个原则的深刻含义。