以应用的生命周期来构建运维体系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以应用的生命周期来构建运维体系相关的知识,希望对你有一定的参考价值。
当一个场景下有多个对象时,就一定要找到那个核心的运维对象,这个核心对象的生命周期就会涵盖其它附属运维对象的子生命周期。结合我们前面讲过的内容,微服务架构下,一切要以应用核心。因此,我们就找到了整个运维体系,或者说软件运行阶段的核心对象,那就是应用。
对应用的生命周期阶段进行分解,大致分为五个部分,应用的创建阶段、研发阶段、上线阶段、运行阶段和销毁阶段。
1. 应用的创建阶段
这个阶段,最重要的工作,是确认应用的基础信息和与基础服务的关系,要同时固化下来,从应用创建之初,就将应用与各类基础服务的生命周期进行挂钩。
对于同一类的应用,只需要做一次标准化即可,后续完全可以形成模板固化到工具平台上。
同时,另外一个很重要的工作,就是要开启与应用相关的各类基础服务的生命周期。比如这个应用需要用到缓存、消息队列和 DB 等,也可能需要域名 DNS 服务、VIP 配置等,这些就要从应用创建这个动作延伸出去,启动这些关联基础服务的创建,比如需要缓存就去申请容量空间,需要消息队列要申请创建新的 Topic 等等。
2. 应用的研发阶段
应用的研发阶段主要是业务逻辑实现和验证的阶段。针对业务逻辑层面的场景就是开发代码和质量保证,但是这个过程中就会涉及到代码的提交合并、编译打包以及在不同环境下的发布部署过程。同时,开发和测试在不同的环境下进行各种类型的测试,比如单元测试、集成测试以及系统测试等等,这整个过程就是我们常说的持续集成。
所以,这个阶段,我们要做的最重要的一个事情,就是为研发团队打造完善的持续集成体系和工具链支持。
3. 应用的上线阶段
这是个过渡阶段,从应用创建过渡到线上运行。创建阶段,应用的基础信息和基础服务都已经到位,接下来就是申请到应用运行的服务器资源,然后将应用软件包发布上线运行,这个动作在下面的运行阶段也会持续迭代。
4. 应用的运行阶段
这是应用生命周期中最重要、最核心的阶段。
从运维角度来看,应用在线上运行起来之后就已经变成一个线上运行的进程,那这个进程形态的应用应该有什么样的属性呢?你可能已经联想到,这个时候需要应用线上运行的各种指标的输出。所以这个阶段,应用最重要的属性就是应用本身以及相关联的基础服务的各项运行指标。
从业务角度看,应用是线上业务逻辑的执行载体,但是我们的业务需求是在不断变化和迭代的,所以就需要不断地去迭代更新我们的线上应用,这里仍然会依赖到上述应用研发阶段的持续集成过程,并最终与线上发布形成持续交付这样一个闭环体系。
从运行阶段应用的关系看,除了它跟基础服务之间相对固化的关系外,应用跟应用、以及应用包含的服务之间的调用关系也非常重要,而且这个关系可能随时都在变化,这个时候,我们应用之间依赖管理和链路跟踪的场景就出现了。
同时,应用线上运行还会面临外部业务量的各种异常变化,以及应用自身所依赖的基础设施、基础服务以及应用服务的各种异常状况。比如“双 11”大促,外部流量激增;微博上热点事件带来的访问量剧增;或者服务器故障、IDC 故障,DB 故障;再或者服务层面 API 的报错等等。这时就出现了线上稳定性保障的场景,比如流量激增时的限流降级、大促前的容量规划、异常时的容灾、服务层面的熔断等等。
通过上面的这个分析过程,我们可以看到,日常接触到的各种技术解决方案,都是在解决应用生命周期不同阶段中应用自身或者应用与周边关系的问题,或者是所面对的场景问题。
5. 应用的销毁阶段
不仅仅是应用自身要销毁,我们说应用是整个运维体系的核心,所以围绕着某个应用所产生出来的基础设施、基础服务以及关联关系都要一并清理,否则将会给系统中造成许多无源(源头)的资源浪费。
执行应用的销毁这一步动作,其实是取决于最前面应用与基础服务的关系模型分析和建设是否做得足够到位。
从生命周期入手,划分阶段,提炼属性,理清关系,固化基础信息,实现运维场景。
以上是关于以应用的生命周期来构建运维体系的主要内容,如果未能解决你的问题,请参考以下文章