1.3.4 从微服务应用到云原生应用

不可否认,云原生是目前云计算的发展方向,但想要构建一个云原生应用,或者从传统微服务应用迁移到云原生应用,完成开发、测试、部署、运维的全生命周期管理,依然要实现或整合很多技术。图1-5展示了一个微服务应用与云原生应用在形态上的不同。

图1-5

微服务应用基于业务进行服务拆分,通过服务间的交互实现应用的整体功能。开发应用时,除了要考虑实现功能性需求,还要考虑实现非功能性需求。而在云原生架构中,非功能性需求通常交由基础设施负责。下沉非功能性需求可让开发人员只关注业务,这就是我们在前面提到的云原生技术的愿景。因此,从这一宏观层面上来看,开发人员要有思想上的转变,在架构设计、技术选型等方面从云原生的理念出发,构建出面向未来的云原生应用。

在具体的技术实现层面上,我们建议读者深入理解云原生的定义,特别是CNCF所强调的几项核心技术。

完成从传统的微服务应用到云原生应用的转变,第一步就是容器化并迁移到云环境,使得应用具有最基本的统一运维能力,并获得云平台提供的可扩展能力。接下来就是利用Kubernetes这一类基础设施完成应用的编排和调度管理,使大量的非功能性需求被剥离出来,交由Kubernetes实现。完成这一步之后,应用就具有了云原生的基本雏形,以及围绕其生态进一步演进的基础。然后就是逐步深化,比如使用服务网格技术负责流量管理,通过DevOps方式完成持续交付等,逐渐让应用的云原生属性更加明显。

简而言之,从微服务到云原生的过程,就是一个逐步剥离应用的非功能性需求并将其下沉到基础设施的过程。在这个过程中,应该逐步增强应用的云原生特性,利用云原生的技术、工具和方法完成应用的生命周期管理。