草庐IT

拥抱开放,Serverless 时代的下一征程

Serverless社区 2023-03-28 原文

Serverless 作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势使得它在云原生时代备受推崇。Serverless 的使用场景也由事件驱动,数据处理等部分特定场景转向更为广泛通用化的 WEB,微服务,AI,进而在电商,互娱,出行,乃至传统行业都有渗透。

在 Serverless 的普及与推广过程中,开发运维人员虽然认同其降本提效的核心价值,但同时被诸如厂商锁定,黑盒化,全屏蔽等一系列 Serverless 全包的特性所困扰;进而所引发的迁移成本高,问题排查难度大,根因定界分析困难等痛点亟需解决。

所谓开放,是指用户可以摆脱心智负担的,在不变更语言应用的前提下从任意平台迁移至 Serverless,是指用户可以即开即用的获取 Serverless 应用的全生命周期核心数据,更是指用户可以将其原有的架构与 Serverless 架构进行融合,实现云上云下云间的互通与混部。拥抱开放后 Serverless 将不会是需要改造以适配兼容的,可望而不可即的技术试验品,也不是一座独立出来的,与原有技术体系割裂的数据孤岛,而是承载技术开发者们理想与现实的,能够让技术变得更加普惠、通用、共享的最短路径之一。

阿里云坚持在 Serverless 领域持续投入并在技术竞争力上维持领先地位, SAE (Serveless 应用引擎)作为业界首款面向应用的 Serverless PaaS,能够提供成本更优、效率更高的一站式应用托管方案。SAE 在 2018 年内部孵化之初就秉持着零门槛,零改造的宗旨进行应用(任务)的 Serverless 改造和落地实践,并且在产品的发展历程中不断积极寻求被集成,增进 DEVOPS 全流程体验,三年内助力千余家客户实现应用的云原生 Serverless 化。SAE 目前已有和即将推出的功能均围绕着“拥抱开放”展开,下面我们一起看看 SAE 目前所提供的产品功能特性以及它背后的思考逻辑。

Serverless 部署架构的开放性

许多用户的应用其实并不是从零便开始使用 Serverless,而是出于对 Serverless 理念的认同,基于架构升级演进的诉求,期望将原有的部署环境如物理机,云主机,Kubernetes 进行迁移或者是混部于 Serverless 之中。那么在此场景下,应用迁移改造的成本显得尤为重要,然而 Serverless 陡峭的学习曲线和厂商生态锁定的刻板印象,令诸多开发者望而却步。正如先前所述,SAE 主打零门槛,零改造迁移,应用其实无需修改任何代码逻辑,便可直接部署在 SAE 当中,而对于非容器类的应用,SAE 也提供内置的镜像构建能力,并借助发布单使得全 CICD 变得流程化、自动化、可视化。下面我们重点介绍一下跨平台的使用场景。

SAE与云主机混部

SAE 支持与云主机(ECS)实例进行混部,以便于在存量迁移的场景下实现快速弹性,发挥 SAE 的优势,整个过程无需任何开发改造。具体的方式为,将存量 ECS 实例加入到 SAE 实例声明使用的 SLB 后端虚拟服务器组中,SAE 应用在部署、扩缩容、停止、启动、重启、垂直扩缩容等场景中,会自动动态维护 SLB 后端的实例,统一对外提供服务。

SAE 与 Kubernetes 的流量互访

SAE 支持与 Kubernetes(ACK) 进行流量互访,借助公网 SLB/Ingress ,或者相同 VPC 下私网 SLB 协同 PrivateZone 内网域名解析的能力,暴露应用服务地址;亦或在微服务场景下采用同一注册中心,均可实现在不变更原有架构的基础上,进行 SAE 实例与 Kubernetes pod 的通信与交互。

Serverless 指标数据的开放性

Prometheus 是一套开源的监控报警系统。主要特点包括多维数据模型、灵活查询语句 PromQL 以及数据可视化展示等,其已经成为了云原生监控体系的事实标准。SAE 提供了开箱即用的可观测能力,同时全面对接并兼容Prometheus 生态,开放核心指标数据,以满足用户们在监控领域灵活配置、可定制、可扩展的诉求。

基础监控数据

SAE 对应用所运行实例的 CPU、负载、内存、网络和磁盘进行数据采集与分析,并能够以动态图的方式展示,方便用户实时、且直观地了解到应用运行设备的状态。采集的数据会预制在 Prometheus 中,并配置集成可视化大盘。用户可以通过 Grafana 进行自定义大盘的配置。

应用监控数据

针对于 Java、Php 语言的应用,SAE 可以通过 agent 技术对其接口 RED 等数据进行埋点采集。同时,其数据也已预制在 Prometheus 中,并集成可视化大盘,用户可以通过 Grafana 进行自定义大盘的配置。


对于其他的多语言应用,SAE 将采用 EBPF 技术,进行无入侵的七层监控数据的获取,并提供全流程无感的使用体验。多语言监控数据同样会预制在 Prometheus 中,用户可以通过 Grafana 进行自定义大盘的配置。

自定义监控数据

SAE 应用可以根据其自定义业务,手动埋点暴露自定义指标数据,并借助 VPC 内服务发现能力,接入Prometheus,保证在实例不断变化的环境下,整个采集链路的可用性。

Serverless 通用运维的开放性

随着产品不断发展演进,我们深刻的意识到 Serverless 并不意味着像愿望般美好的将服务器完全黑盒化,用户完全信赖产品的内部操作,同时不断教育用户要采用符合 Serverless 的心智和行为方式进行开发运维,这样既与用户已有的知识体系和传统运维习惯相冲突,又不利于各类问题的及时排查与根因定界。而用户真正需要的是享有知情权的同时,借助全方位运维能力的提升来更加高效,自动的实现运维操作,降低运维复杂度,提升运维幸福感。SAE 结合用户常见诉求和使用痛点推出了多项解决方案和最佳实践来不断优化和提升 Serverless 运维能力。

Webshell 与工具一键安装

登录实例进行信息收集和问题排查,在传统运维中是必不可少的一环。在 Linux 环境下已经有诸多成熟的问题诊断工具去供用户使用,SAE 深知不应该全然被动地将整个应用以及环境交付于第三方供应商,真正了解企业场景和业务逻辑的是用户需要掌控力。SAE 在暴露应用实例的基础上,提供了 Webshell 功能,用户可以像访问本地主机一样访问 Serverless 实例进行运维操作。同时为了更加高效地进行问题排查,SAE 提供了工具一键安装的功能,解决了自定义镜像中命令阉割的情况,并适配各种操作系统,可以在私网环境下下载并更新工具。

文件双向传输

如何高效运维,一直是 SAE 专注的重点。用户在日常开发部署测试的过程中,经常提到,期望将本地文件或者配置上传至云端应用用于临时调试,或者将云上应用的日志,配置,Java dump,core dump下载至本机。作为运维领域的刚需,SAE 推出 Serverless 场景下文件双向传输功能,在无软件依赖,应用无入侵的前提下实现上传下载的功能。

跳板机与端云联调

在开发联调测试的过程中,受限于对应用本身环境的依赖,考虑到启动部署速度和效率,开发者往往不愿意重新在本地启动云上应用,模拟云端执行环境进行本地调试。这其实也是 Serverless 场景下面临的一大难题,SAE 借助内置跳板机,实现本地服务与云端 SAE 应用间的互调,同时支持 Java/php remote debug 和实例的远程访问,真正的将本地和云端环境融为一体。

总结

拥抱开放,Serverless 时代的下一征程,这既是 SAE 在云原生浪潮下的愿景,也是 SAE 持续专注并将继续坚持的方向。未来 SAE 将致力于以用户最小的改造和认知成本来提供产品更为强大的技术支持和体验,将在部署架构,指标数据,通用运维乃至各个方面以拥抱开放的理念持续打磨深造,推进 Serverless 时代的发展进程。

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

有关拥抱开放,Serverless 时代的下一征程的更多相关文章

  1. ETH 徘徊在 1,700 美元附近;下一步是什么? - 2

    以太坊价格分析表明横盘整理,偏向中性。价格从前一交易日的高点1,791美元回落后正在盘整。但是,有趣的是,多头在1,680美元附近持有重要支撑。多头在1,700美元的心理水平附近聚集动能,并准备在接下来的几个交易日推向1,800美元。以太坊价格显示出盘整迹象,因为它形成了多个连续的顶部形态。这种回撤可能是第二大加密货币下一轮上涨的基石。以太坊连续第二个交易日走低。过去10天,价格在1,590-1,760美元的短期区间内盘整。每日烛台高于1,800美元将维持ETH的进一步上涨。ETH价格走低日线图上,以太坊价格在上升趋势线附近获得一轮支撑。来自879.80美元低点的看涨趋势线为ETH买家提供了支

  2. Ruby:数组中的下一个/上一个值,循环数组,数组位置 - 2

    假设我有一个没有特定顺序的随机数数组。假设这些是参加马拉松比赛的人的ID#,他们按照完成的顺序添加到数组中,例如:race1=[8,102,67,58,91,16,27]race2=[51,31,7,15,99,58,22]这是一个简化且有些做作的示例,但我认为它传达了基本思想。现在有几个问题:首先,我如何获得特定条目之前和之后的ID?假设我正在查看运行者58,我想知道谁在他之前和之后完成了比赛。race1,runner58:previousfinisher=67,nextfinisher=91race2,runner58:previousfinisher=99,nextfinishe

  3. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  4. ruby - 用于删除下一个/尾随字符的转义序列? - 2

    除了使用\x08删除前导字符外,是否可以同时删除尾随字符?是否有一个转义序列将删除下一个字符而不是前一个字符?我看到delete显然映射到ASCII127,即Hex7F,但以下代码:puts"a\x08b\x7fcd"产生b⌂cd我预计\x7f会删除它后面的'c'字符,但它没有。 最佳答案 您实际上并没有使用\x08删除任何内容,您只是用“b”覆盖了“a”。想象一下您使用电传纸质终端的过去。您实际上会在纸上看到的是打印的“a”,电传打字机会备份一个空格,然后在其上打印“b”。所有非打印的ascii码都是为了控制电传纸终端的移动而发明

  5. ruby-on-rails - 在 Rails 中计算到下一个生日的天数 - 2

    我有一个模型,其中有一个名为birthday的date列。我如何计算距离用户下一个生日还有多少天? 最佳答案 这是一个简单的方法。你要确保捕获今年已经通过的案例(以及尚未通过的案例)classUser=bday(bday-Date.today).to_iendend并证明这一点!(我添加的是timecopgem以保持计算截至今天(2012-10-16)的准确性require'test_helper'classUserTest 关于ruby-on-rails-在Rails中计算到下一个生日

  6. 教你如何使用vercel服务免费部署前端项目和serverless api - 2

    一、介绍一下vercelvercel是一个站点托管平台,提供CDN加速,同类的平台有Netlify和GithubPages,相比之下,vercel国内的访问速度更快,并且提供Production环境和development环境,对于项目开发非常的有用的,并且支持持续集成,一次push或者一次PR会自动化构建发布,发布在development环境,都会生成不一样的链接可供预览。但是vercel只是针对个人用户免费,teams是收费的首先vercel零配置部署,第二访问速度比github-page好很多,并且构建很快,还是免费使用的,对于部署个人前端项目路、接口服务非常方便vercel类似于git

  7. ruby-on-rails - 如何移动到 binding.pry 中的下一行? - 2

    在byebug中,我们可以通过输入'n'移动到下一行,类似地,在'pry'中是否有移动到下一行的方法?我已经阅读了那里的文档,但没有任何结果。 最佳答案 查看pry-nav,它为您提供了诸如next和step之类的方法,这应该是您正在寻找的方法。如果你在普通的旧Pry中,你可以使用exit转到下一个binding.pry或disable-pry退出完全pry开。 关于ruby-on-rails-如何移动到binding.pry中的下一行?,我们在StackOverflow上找到一个类似的

  8. Ruby 在数组中查找下一个 - 2

    有没有办法在Ruby数组中找到下一个项目?代码:#FindALLlanguagesif!debuglang=Language.allelselang=Language.where("id=?ORid=?",22,32)end#Getallelementselements=Element.where("human_readableISNOTNULL")lang.eachdo|l|code=l.code.downcaseifFile.exists?(file_path+code+".yml")File.delete(file_path+code+".yml")endt1=Time.nowi

  9. ruby-on-rails - Rails 5 上一篇或下一篇文章仅来自特定标签 - 2

    我有一个名为posts的资源,其中有很多。但是,每个帖子可以有多个标签。我希望用户只能从所选标签转到上一篇和下一篇文章。我让它适用于上一个下一个数据库中的所有帖子,但是当我单击一个标签并显示所有标签时,上一个/下一个不符合标签是什么。如果我访问与routes.rb中定义的代码关联的url,get'tags/:tag',to:'posts#index',as::tag,它会列出索引中的所有标签。我不想要这个,我希望用户能够单击上一个或下一个,并且只能在与标签关联的帖子上执行此操作。注意:我使用的是friendly_idgemcontrollers/posts_controller.rbd

  10. 互联网时代“陨落”,国家发布元宇宙战略的信号对失业和担心失业的我们带来了什么启迪? - 2

    互联网这头“猪”真的掉下来了流量红利已经一去不复返了!3年前业界其实已经发出各种密集信号,在当时无论是BAT还是一些经济学家在3年前都已经预测过,互联网的流量模式已经衰竭,并且它将一去不复返。曾经处于互联网大潮的我们这一代人有喜有有悲也有感慨。还在4-5年前不少程序员会发觉在一个地方工作一年再跳一家公司,工资翻倍是至少的。其实这不是能力的表现这只不过是因此我们赶上了互联网流利红利、风投资本红利的“风口”而己。“赶上风口就连老母猪都能上树"用于形容当时的情形一点不为过。可是这个“风”这次是真的过去了,因此这头“猪”掉了下来,而且这次摔了还挺狠,直接给摔成了肉饼。业务模式、生态、环境的变革是时代的

随机推荐