全栈无服务器
发展格局瞬息万变
近年来,后端和前端开发都发生了巨大的变化。随着客户端变得越来越有状态,支持它们的服务也变得越来越精简和无状态。管理所有这些小型服务和功能的复杂性正在被抽象化,这使得那些没有 DevOps 技能的人也能利用无服务器技术。随着客户端变得越来越厚,管理状态以及与大量支持服务或 API 交互的复杂性也随之增加。工具和框架开始出现,将这些工作从开发人员身上抽象出来,使他们能够专注于快速构建产品。
那么,我为什么要提起这件事呢?因为我觉得所有这些变化最终都催生了一种构建应用的新方式。这种方式充分利用了我们过去几年在前端和后端所见证的变化,并允许开发者在极短的时间内基于服务型服务构建出真正有趣的应用。
服务型无服务器
在后端,我们已经看到计算能力成为一种商品,从而引发了无服务器的演进。然而,如果您曾经以真正的无服务器方式构建过任何东西,那么您就会知道,获得的可扩展性和成本节省伴随着巨大的复杂性。
如果您认为管理微服务不好,请尝试将其中一个微服务中的所有功能分解到各自的位置,然后通过事件将它们重新粘合在一起。😱
虽然无服务器架构确实有其优势,但它并不适合胆小的人。它并不容易实现,通常需要后端开发团队耗费数月时间。Ben Kehoe在链接文章中比我更详细地解释了为什么选择无服务器架构,但总而言之,选择无服务器架构是因为它的价值所在。
归根结底,我们希望快速创造价值。希望这不会以牺牲开发者体验和安全等为代价,但我们确实希望用尽可能少的代码来解决业务问题,甚至可能根本不用写代码……
如何才能充分利用无服务器的优势,而又不必自行管理新增的复杂性?通常,随着一项技术的发展,其复杂性也会随之变化。虽然无服务器本身包含 lambda 函数、主题配置和事件管理,但在其之上构建了一些更高级别的抽象,这使得它对那些自认为是前端或产品开发人员的人来说非常友好。
这反过来又催生了一批服务型无服务器产品,它们利用了无服务器的可扩展性,但将其抽象为一个能够解决特定问题领域的有意义的产品。Nader Dabit 在我之前链接的文章中列举了一些很棒的服务型服务示例。他在文章中写道:
服务型服务的一些示例包括Auth0 / Amazon Cognito(托管身份验证)、Algolia(托管搜索)、Contentful(内容基础设施)、AWS AppSync / Cloud Firestore(托管 API 服务)、Amazon Lex / Rekognition / Textract(机器学习服务)以及Cloudinary(托管图像和视频托管服务)。—— Nader Dabit,《无服务器计算时代的全栈开发》
UI 工具包和框架
在前端,我们也看到了复杂性的大幅增加,再次借用 Nader Dabit 的话,他解释了到底发生了什么变化,使得事情变得更加复杂:
由于 SPA 的兴起、更复杂的数据问题、多设备目标以及对用户体验的更高期望,客户端开发在过去十年左右变得更加复杂。—— Nader Dabit,《无服务器计算时代的全栈开发》
然而,伴随这种复杂性而来的是一些非常棒的工具和框架。这些抽象使得管理新的复杂性变得更容易,让开发人员能够专注于创造价值。最棒的是,我们不必以牺牲可访问性和安全性为代价。我们已将这些融入到解决方案中。
可以说,这些工具确实提供了专注力。它们让你专注于业务问题,并为你处理所有技术问题。这与后端的变化以及无服务器计算的演进相呼应。
Expo、Ionic、Gatsby和Meteor等框架使得基于其构建块构建可用于生产的高质量应用程序成为可能。
两全其美
我们现在看到的是兼具两者优势的平台。它们为应用程序的整个开发生命周期提供解决方案。这使得构建功能齐全的应用程序变得更加容易,这些应用程序可以毫无问题地扩展,而且成本比构建自己的无服务器基础设施和工具更低。Firebase、Netlify、Zeit 和 AWS Amplify 等解决方案提供了全栈功能,例如工具包和 API、数据存储、文件存储以及构建和部署服务。我将这些类型的平台称为Full-stack Serverless
。它们提供的功能集通常涵盖从命令行工具到后端服务以及介于两者之间的所有内容。
我最近在 Twitter 上进行了一项民意调查,我问道:“在构建新应用程序时,您认为选择解决方案时最重要的考虑因素是什么?”
毫不意外的是,大多数人投票支持“维护和寿命”,而“快速创造价值”则排在第二位。维护和寿命位居榜首并不令人意外,因为当你负责自己的服务器或确保应用程序的安全性和性能时,会有很多额外的技术问题代码。这些代码解决的是技术问题,而不是业务问题。
这就是为什么我认为未来我们不再需要处理服务或应用程序的维护和寿命问题,因为我们会将这些负担转移到更有价值的服务上。这样做可以让你专注于构建能够快速创造价值的产品。
在调查中,开发者体验仅次于价值交付,这很有意思,因为我认为,在这个领域,解决方案要想成功,开发者体验至关重要。很多人担心供应商锁定……除非他们使用的产品能够提供令人愉悦的开发者体验,让他们相信他们能够满足需求,并且真正关心他们的成功。
你选择加入是因为觉得这个平台足够提升你的生产力,不使用它毫无意义。你属于那种追求快速创造价值,专注于构建应用而非搭建基础设施的人。我就是这样的人,这也是为什么我总是对 Gatsby 和 Expo 这样的解决方案赞不绝口的原因。我希望立即构建产品,并知道剩下的事情都由我处理。现在你告诉我,我不再需要自己考虑如何处理数据、授权、用户和内容。快来注册吧!
我认为以前人们总是担心规模问题,这使得购买这些全栈解决方案变得困难,但随着无服务器的兴起,我认为这个想法更容易被接受。我认为我们正处于全栈无服务器平台新时代的早期阶段,我非常期待看到它的发展。
文章来源:https://dev.to/kkemple/fullstack-serverless-440e