云途加油站 | 一文读懂 Dynatrace 与 Amazon Lambda 的“双剑合璧心法”
本文由 Dynatrace 撰写。
Amazon Lambda 正在掀起企业级云市场的一场小潮流。不少业内人士发现,越来越多的企业正在将 Lambda 函数加入其技术栈中。
这一潮流其实不难理解——
一则,门槛低。Amazon Lambda 为企业进入云计算提供了相对较低的门槛,无需立即全面推行转移升级操作。
二则,经济适用。Amazon Lambda 函数严格按使用情况计费,这意味着在 Lambda 函数未运行时产生的成本为零。
三则,功能丰富。Amazon Lambda 函数几乎可以承担运行应用的所有操作职责。企业人员需要做的就是提供应该在给定事件或触发器上执行的代码。这意味着不需要配置或管理服务器(甚至容器),Lambda 就已经处理以下所有工作:
负载均衡
自动伸缩
失败重试
安全隔离
操作系统管理
利用率和容量
因此,一个设计良好的 Lambda 架构可以为企业节省大量成本。不过,凡事有利必有弊,虽然在运行功能时几乎没有运营开销,但在迁移到 Amazon Lambda 时却有三大挑战需要关注。
挑战 1:本地开发困难重重
Lambda 函数在 Amazon Lambda 运行时环境中运行并深度集成到 Amazon 技术栈中。因此,在本地开发期间提供相同的环境可能会很复杂。
此外,“Serverless”意味着还需要 Lambda 函数以外的产品技术。使用 Lambda 时,您可能很快就会用到更多其他的 Serverless 产品,例如数据库。这使得在本地模拟相同的环境变得困难重重。
挑战 2:部署编排难度加大
虽然 Amazon 可以减轻企业运行函数的运营开销,但更大规模地使用 Lambda 函数则需要成熟的部署策略。那么有没有两全其美之法?
实际上, 基础设施即代码 (IaC)也许正能解您的燃眉之急。IaC 在这里的最大功效,即是避免最终陷入手工部署功能实例的陷阱。至于开发阶段,我们则应该关注持续集成和持续部署。考虑到这一现实,Dynatrace Lambda 监测扩展支持所有主流的 IaC 技术。
Lambda 部署方法
挑战 3:企业级可观测能力难以实现
在开发人员开始采用 Amazon Lambda 后不久,运维和网站可靠性工程团队便会开始想方设法打造等同于传统工作负载提供的洞察力水准。很快,只专注于监测 Lambda 部署的专用产品出现了。不过,它们却无法满足企业对内部部署与混合云之间的、端到端的可观测能力常见需求。这是因为,虽然这些专用产品大多建立在 Amazon CloudWatch 和 Xray 之上,但它们的代理有很大的局限性,因此在进程中运行代理和 Lambda 函数会带来一些难题。
而随着 Dynatrace Lambda 扩展的发布,这种局面已成为过去。如今,Dynatrace 可以监测混合环境中的 Lambda,因而能够满足企业的需求。
Lambda 虽好,挑战却也不少
搭配 Dynatrace,才能把好钢用在刀刃上!
那么,接下来我们再细致分析 Amazon Lambda 的常见应用场景。
场景 1:扩展现有企业技术栈
对于许多企业而言,Lambda 函数提供了一种方便运用云计算的方法,并且无需启动整个云迁移计划。边缘计算的常用服务是 Lambda 大显身手之处。
就 Dynatrace 的客户而言,我们观察到身份验证或计算任务等功能正在转移到 Lambda。通常,Lambda 函数只是作为通往其他 Amazon 托管服务的网关,这引导我们进入下一个应用场景。
使用 Amazon Lambda 扩展企业技术栈
场景 2:其他 Amazon 服务的网关/代理层
Amazon 提供了一系列托管服务,这些服务也属于“Serverless”范畴。在 Lambda 函数中使用这些服务非常方便。只需将 Amazon 开发工具包用于给定服务并提供终端节点的 ARN。这使得所有的 Amazon 服务都触手可及,让他们能够构建复杂的应用,同时无需部署单个主机或容器。
使用 Lambda 函数作为其他 Amazon 服务的网关
场景 3:单页应用后端
这可能会让人感到意外,但在我们的客户中,Lambda 的另一个常见应用场景是为单页应用 (SPA) 提供后端。
对于常规的网页,大多数用户交互会导致整个页面重新加载和服务器端生成页面,而单页应用则通过 JavaScript 动态更改其内容。如今,Angular、React.js 和 Vue.js 等前端框架用于完成这项工作。为了提供动态内容,单页应用主要依靠 REST API 来使用现代浏览器提供的方法(例如 XHR 或 fetch)来获取数据。
API 网关后面的 Lambda 函数就可以作为这样的 API 端点,可从其他的 Amazon 服务中获取数据,甚至可以回调到企业应用(例如从大型机)中获取数据。
使用 S3 和 Lambda 为单页应用提供服务
然而,单页应用的 HTML 和 JavaScript 仍需要用于驻留的场所。Amazon S3 和 CloudFront 为驻留和服务此类静态资产提供了完美的解决方案。Amazon Lambda 和 S3 大多是根据使用量计费的。这意味着,与运行常规 Web 服务器相比,在用户不与您的站点交互时几乎没有成本。
在单页应用中,监测用户操作和对后端调用是抢在终端用户开始抱怨之前找出问题的唯一方法。
Lambda 函数的真实用户监测
这就是 Dynatrace 真实用户监测 (RUM) 完全集成到 Amazon Lambda 监测扩展中的原因所在。通过将 JavaScript 片段添加到您的静态页面并在 Lambda 函数上设置配置选项,Dynatrace 不仅能为您提供真实用户监测的全部功能,还能提供由 Amazon Lambda 支持的从浏览器到后端调用的端到端跟踪。
精彩活动预告
了解更多技术干货,请锁定 8 月 27 日本周六,下午 14 点到 17 点,亚马逊云科技将携手合作伙伴 Dynatrace 在深圳举行可观测互动体验活动,我们期待这次互动式的分享能帮助大家基于可观测性方案开拓解决问题思路,活动信息详见海报。
随着 Amazon Lambda 在企业中应用范围的拓展,尤其是不断出现的全新使用场景,相信企业 IT 专家们还会遇到新的令人兴奋的挑战。Dynatrace 官方微信平台推出了 有「迹」可云——亚马逊云科技 云途加油站 专题,以多篇实操技术内容,解析 Dynatrace 如何成为您在亚马逊云科技云上的「灵」通助手。了解更多关于 Dynatrace 的信息,可免费下载最新 Gartner 报告——
评论