zoukankan      html  css  js  c++  java
  • 如何从生命周期的视角看待应用运维体系建设?

    从“应用生命周期管理”的角度分阶段去梳理对象属性。

    一个对象不同的生命周期阶段会具备不同的属性、关系和场景。

    应用的生命周期分为:应用的创建阶段、研发阶段、上线阶段、运行阶段和销毁阶段。

    1. 应用的创建阶段

    这个阶段,最重要的工作,是确认应用的基础信息和与基础服务的关系,同时固化下来,从应用创建之初,就将应用与各类基础服务的生命周期进行挂钩。

    对于同一类的应用,只需要做一次标准化即可,后续完全可以形成模板固化到工具平台上。

    另外一个很重要的工作,就是要开启与应用相关的各类基础服务的生命周期。

    比如这个应用需要用到缓存、消息队列和 DB ,等这些就要从应用创建这个动作延伸出去,启动这些关联基础服务的创建,比如需要缓存就去申请容量空间,需要消息队列要申请创建新的 Topic 等等。

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

    2. 应用的研发阶段

    应用的研发阶段主要是业务逻辑实现和验证的阶段。针对业务逻辑层面的场景就是开发代码和质量保证,但是这个过程中就会涉及到代码的提交合并、编译打包以及在不同环境下的发布部署过程。同时,开发和测试在不同的环境下进行各种类型的测试,比如单元测试、集成测试以及系统测试等等,这整个过程就是我们常说的持续集成。

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

    3. 应用的上线阶段

    从应用创建过渡到线上运行,申请到应用运行的服务器资源,将应用软件包发布上线运行。

    4. 应用的运行阶段

    应用生命周期中最重要、最核心的阶段。

    从运维角度来看,应用在线上运行起来之后就,就变成一个线上运行的进程,这个进程形态的应用有什么属性呢,应用最重要的属性就是应用本身以及相关联的基础服务的各项运行指标

    制定每个运维对象的 SLI、SLO 和 SLA,同时要建设能够对这些指标进行监控和报警的监控体系。

    从业务角度看 ,应用是线上业务逻辑的执行载体,业务需求是在不断变化和迭代的,不断地去迭代更新我们的线上应用,依赖应用研发阶段的持续集成过程,并最终与线上发布形成持续交付这样一个闭环体系。

    从运行阶段应用的关系看,除了它跟基础服务之间相对固化的关系外,应用跟应用、以及应用包含的服务之间的调用关系也非常重要,而且这个关系可能随时都在变化,这个时候,我们应用之间依赖管理和链路跟踪的场景就出现了。

    应用线上运行还会面临外部业务量的各种异常变化,应用自身所依赖的基础设施、基础服务以及应用服务的各种异常状况。

    这事就出现了线上稳定性保障的场景,比如流量激增时的限流降级、大促前的容量规划、异常时的容灾、服务层面的熔断等等。

    日常接触到的各种技术解决方案,都是在解决应用生命周期不同阶段中应用自身或者应用与周边关系的问题,或者是所面对的场景问题。

    5. 应用的销毁阶段

    应用的业务职责不存在了,应用就可以下线销毁了,应用是整个运维体系的核心,围绕着某个应用所产生出来的基础设施、基础服务以及关联关系都要一并清理,否则出现系统资源的浪费。

    比如我们在日常工作中,经常见到的缓存系统中,很多 NameSpace 不知道是谁的,消息系统中有很多 Topic 不知道是谁的,但是又不敢随意乱动,就只能让它无端占用着系统资源。

    执行应用的销毁这一步动作,其实是取决于最前面应用与基础服务的关系模型分析和建设是否做得足够到位。

    总结:

    结合之前讲的标准化内容,运维架构的切入点。

    从生命周期入手,划分阶段,提炼属性,理清关系,固化基础信息,实现运维场景。

  • 相关阅读:
    百度文库:网站镜像站点解决方案
    百度文库:WEB网站架构分析HTML静态化
    61条面向对象设计的经验原则
    oracle 定时任务例子【项目例子】
    javascript的事件机制(百度文库)
    【转】Oracle回收站(recyclebin)
    java十大低级错误和常见注意点
    JAVA UUID 生成
    Oracle in和exists效率问题分析
    http的长连接和短连接(数据库也一样)
  • 原文地址:https://www.cnblogs.com/xiaobao2/p/11284672.html
Copyright © 2011-2022 走看看