云原生架构是企业架构当中最重要的IT架构形态,云原生架构是新一代技术架构,帮助开发者专注业务层面,减少对底层技术的依赖。因此在云原生架构在实施过程中,需要特别关注以下核心原则:
1)服务化治理原则
服务化治理的本质是基于服务流量的控制策略,比如限流降级、熔断隔仓、灰度、反压、零信任安全等。云原生架构从服务化的角度,强调服务之间的标准化流量传输、策略控制和治理,用微服务等或者 Mesh 化的服务体系进行管理,而服务治理体系是关键。通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代,避免迭代频繁模块被迭代慢速模块拖慢,从而加快整体的进度和提高稳定性。根据业务架构和应用架构抽象化模块之间的关系,标准化进行服务流量传输,从而基于服务流量进行细粒度的策略控制和治理。
2)弹性可扩展原则
弹性指系统部署规模可以随着业务量的变化进行伸缩,可以节省成本,并面对业务峰值。在弹性能力的支持下,应用能够更好地体验到云上迅捷、稳定的特性,同时可以利用各种弹性产品以节省容器等资源的成本。这种弹性是人工、半人工或自动决定弹性能力。弹性也和系统的扩展能力有关,我们可以通过可扩展架构设计,如水平扩展更多的服务节点或者垂直将业务根据职责重新进行拆分。比如在 K8s 中,Pod 中封装的其他资源需要同样具备弹性能力,建立可观测和自愈模型,并可以对问题进行诊断和恢复。
3)服务无状态原则
尽量使用云服务(比如 BaaS),减少第三方服务,让应用的设计尽量变成「无状态」的模式,把「有状态」部分保存到云服务中,特别是自己运维开源软件的情况,依据云计算、网络、大数据,有状态的数据库、文件、对象存储,以及 Serverless、FaaS 这种应用无服务器的云服务。对于有状态的应用,需要针对不同的资源定义生命周期及状态机,并对它们的生命周期进行编排和事件协调。
4)可观测监控原则
可观测性可以通过日志、链路跟踪和 APM 度量等手段,对业务点击背后的服务调用耗时、返回值和参数都清晰可见,甚至可以下钻到每次第三方软件调用、SQL 请求、节点拓扑、网络响应、系统资源等;简化开发和运维,同时对业务健康度、用户体验、业务关联等综合数字化运营管控和持续优化。可观测架构常用 Logging、Tracing、Metrics 等进行多维度度量,并指定相关框架、规范及服务 SLO,比如并发度、耗时、可用时长、容量。比如使用 API 网关或者 Sidecar 代理流量的出入和管理,统一进行可观测性信息、日志、指标和跟踪数据的收集和处理。
5)高可用稳定原则
韧性是系统对于异常的抵御能力,体现了软件持续提供业务服务的能力,核心目标是提升平均无故障时间。从架构设计上,包括高可用、容灾、异步化能力,比如消除单点、服务分级、限流降级、超时重试、容灾单元、异地多活等。企业需要秉着Design for Failure 的心态,尝试 Serverless 或者 Service Mesh 等技术,做好隔离,做好流控,做好预案和故障演练。针对资源,最终目的是快速从故障中恢复,将对系统稳定性的影响降至最低。在此有很多最佳实践,比如多实例部署、负载均衡、服务发现等,考虑重试,避免重试风暴及控制循环;通过断路器模式进行熔断,保护系统过载。
6)自动化交付原则
通过 DevOps、laC、GitOps、OAM和大量其他自动化交付工具在 CI/CD 流水线中的实践,通过标准化交付过程,通过自描述和面向终态的交付过程,让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化。
7)零信任安全原则
在任何情况下,外部的设备或者系统需要进行授权才可以获得访问权限。比如 IP 地址、主机、地理位置、所处网络等均不能作为可信的凭证。零信任对访问控制进行了范式上的颠覆,引导安全体系架构从「网络中心化」转向「身份中心化」,诉求是:以身份为中心进行访问控制,特别是云原生本身,应从应用和服务角度,对安全进行提前设计,同时做好预防,建立统一的安全防护体系。



