DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨


Serverless 技术正以一种全新的方式 , 帮助云上客户进一步节省云的使用成本 , 实践 NoOps 理念 , 同时 , 他也正深刻变革着开发者们的编程模式 , 所谓“Write locally, compile to the cloud” 。
本文将介绍 Serverless 技术来降低云的使用成本和提升运维效率的业务背景和由来 , 并结合 Serverless 应用引擎(SAE)这款产品来呈现 Serverless 技术的落地方式 。
云上业务开发和运维现状 目前 , 很多客户的上云仍处于资源云化的阶段 , 以降低资源购置成本为主要驱动力 , 应用运行在到虚拟化环境中 , 应用的开发和运维还需要消耗大量的人力 。
DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨
本文插图

如上图 , 在这种模式下 , 客户除了要完成业务逻辑开发外 , 还需要完成以下工作:

  • 评估系统容量:包括系统总访问量、平均访问量、压测找出单机 QPS、线上冗余情况等等 , 整个容量评估工作是一个十分复杂的过程;
  • 准备基础设施:包括网络拓扑规划 , 以及ECS 虚拟机资源、外网访问入口SLB、存储资源RDS、NAT等云产品的购买;
  • 应用部署:对虚拟机资源进行初始化 , 需要手动或自建自动化部署流程完成应用部署;如果是微服务形态的应用 , 还需要考虑注册中心和服务之间的依赖关系管理;
  • 系统运维:需要进行系统监控、应用监控 , 并对异常情况报警 , 并自建运维体系和运维工具 。
痛点分析 系统上线后 , 随着用户越来越多 , 系统承载的流量也会越来越大 。 流量可能会出现规律性的波峰和波谷 , 也有可能会出现突发大流量的场景 , 当流量陡增将要或已经超出系统承受能力时 , 需要系统扩容 , 而扩容是需要按照容量评估、准备云上资源、应用部署几个流程重新操作一遍 , 效率较低 , 可能扩容完成时流量波峰已经过去了 , 还有可能出现因系统资源不足而造成的系统不可用 。 当系统流量再正常到正常水位 , 又会出现资源利用率低的问题 , 再相应的进行缩容 , 但缩容的时机很难把握 , 势必会造成一定的闲置资源的浪费 。
DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨
本文插图

那我们期望的系统反馈是什么样的呢?
如上图 , 我们期望的是 , 资源需求和实际的资源使用量走势能有一个很好的拟合 , 能够从容应对突发流量 , 并且能够有效降低闲置资源成本 。 为了达到这个目标 , 系统需要具备哪些能力呢?
  • 实时监控和数据分析:做到按需弹性 , 首先需要对把系统运行和应用运行状态监控起来 , 并具备监控数据的分析能力;
  • 弹性策略设置:提供可配置的弹性策略 , 并根据应用运行情况设置进行合理的设置;
  • 秒级弹性:基于监控数据分析和弹性策略设置 , 系统可以实现自动弹性的能力 , 弹性能力越强越好 , 能达到秒级弹性;
  • 细粒度计量:上云的目标是降成本、提效率 , 因此需要配置细颗粒度的计量计费能力 , 支持小规格的计算资源配置才能真正达到降本的目的;
  • 应用实例能够自动水平扩缩:上面介绍的几种能力都是基于一个前提 , 应用实例能够自动水平扩缩 , 这需要应用实例是无状态的或者系统自动维护应用的状态 。
【DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨】上面的几点分析可以提取几个关键词:按需弹性、细粒度计费、实时监控 , 这正是我们今天需要讨论的 serverless 技术所需要解决的问题 , 接下来我们看下阿里云现有的4个 serverless 产品形态 。
阿里云的 Serverless 产品形态
DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨


推荐阅读