从生命周期看应用的标准化?

谈到生命周期,我们首先就会联想到自己的生命周期,作为一个人类,我们都会经历从出生到死亡这么一个周期。在一个完整的生命周期中,我们又会经历不同的人生阶段,而在不同的人生阶段上,我们又会拥有不同的属性和关系,因而所要解决的人生课题也会不同。

类似的,作为运维的核心:应用,也会拥有其独特的生命周期。接下来,我们就来了解一下应用的“人生阶段”。

一、应用的生命周期

大体上,我们可以将应用的生命周期划分为五个阶段:

1.1、创建阶段

在这个阶段,最重要的工作,是确认应用的基础信息以及与基础组件的关系,要将这些信息固化下来。同时,另外一个很重要的工作,是要开启与应用相关的各类基础组件的生命周期。比如,应用需要用到的缓存、消息队列和DB等。

当然一个应用会使用到哪些基础组件,应该是在架构设计和编码阶段就确定下来的。而这里要做的事情,就是把这些信息通过应用关联起来,与应用的生命周期进行挂钩。

1.2、研发阶段

在这个阶段,主要是业务逻辑的实现和验证。对于业务逻辑层面的场景来说就是:

  • 代码开发。在这个过程就会涉及到代码的提交合并、编译打包以及不同环境下的部署发布。

  • 质量保障。在这个过程中开发和测试会在不同的环境下进行各种类型的测试,比如,单元测试、集成测试以及系统测试等,而这也就是我们常说的持续集成。

因此,在这个阶段,我们要做的最重要的一个事情就是:为研发团队打造完善的持续集成体系和工具链支持。

1.3、上线阶段

这是一个过渡阶段,从创建应用过渡到线上运行。在创建阶段,应用的基础信息和基础组件等信息都已经准备到位,之后,当应用开发完成后,我们会申请到应用运行的服务器资源,最后会将应用发布到线上运行。

1.4、运行阶段

这是应用生命周期中最重要、最核心的阶段。会涉及许多复杂的场景:

  • 从运维角度来看,应用在线上运行起来之后就已经变成了一个线上运行的进程。这个时候我们就需要获取到应用以及相关基础组件的各种运行指标。也就是说,我们要制定每个运维对象的SLI、SLO和SLA,同时要建设能够对这些指标进行监控和报警的监控体系。
  • 从业务角度来看,应用是业务逻辑的执行载体,而业务需求会不断地变化和迭代,此时就会不断的迭代更新线上应用。因此,在这里我们要融合研发过程的持续集成体系,打造出一个完整的持续交付体系。
  • 从运行阶段应用的关系来看,除了应用跟基础组件的关系外,应用跟应用、以及应用本身所包含的服务之间都会存在着调用关系,而且这些关系可能随时都在变化。此时我们就要对应用进行依赖管理和链路跟踪了。
  • 从运行阶段应用的环境来看,应用会面临外部业务量的各种异常变化,以及应用自身所依赖的基础设施、基础组件和应用服务的各种异常状况。此时就出现了线上稳定性保障的场景。

1.5、销毁阶段

当应用的业务能力不在被需求时,应用也就可以下线销毁了。但是这里不仅仅是应用自身的销毁,围绕应用所产生出来的基础设施、基础组件以及关联关系都要一并清理,否则会给系统带来许多无源资源的浪费。

二、小结

可以看到,应用作为一个完整的“个体”,会拥有自己独特的“人生阶段”,每个阶段上也会面临不同的“人生课题”:

  • 在创建阶段,主要是应用和基础组件的各种关联关系的梳理;
  • 在研发阶段,主要是持续集成体系的建立;
  • 在上线阶段,主要是基础设施资源的准备;
  • 在运行阶段,主要是监控体系、持续交付体系、链路跟踪体系和稳定性保障等工作;
  • 在销毁阶段,主要是应用及其关联资源的清理;

三、参考


从生命周期看应用的标准化?
https://kuberxy.github.io/2021/01/24/从生命周期看应用的标准化/
作者
Mr.x
发布于
2021年1月24日
许可协议