无服务器技术在技术界引起了很多热议,引发了很多好奇,也受到了一些程度的反对。这项技术始于2014年的AWS Lambda的推出,随后在2016年又紧随其后推出了Azure Functions。
Google随后于2018年7月发布了Google Cloud函数。那么,什么是无服务器技术?为了最好地回答这个问题,让我们把思绪转回传统的基于服务器的计算。
在传统的IT模型中,您基本上掌管着一切。作为企业所有者,您需要预算用于服务器和其他网络设备(如路由器和交换机),以及用于悼念服务器的机架。
您还需要担心获取一个完美且安全的数据中心,并确保它能充分提供冷却和冗余的电源和互联网服务。一旦设置好,您还需要安装操作系统,然后部署您的应用程序。此外,您还需要设置监控系统并实施诸如防火墙和入侵预防和检测系统等安全功能。
您可能已经猜到,这会消耗大量资源、成本高昂且耗费精力。
随后,云计算闯入了科技世界,彻底改变了我们部署和管理服务器及应用程序的方式。它宣告了一个新时代的到来,开发者可以迅速搭建云服务器和数据库,并开始开发他们的应用程序。无需担心传统IT计算所带来的问题,如停机时间、昂贵的设备和租用数据中心。
虽然云计算带来了部署IT资源的便利和经济规模,但一些公司会超额购买服务器空间和资源(如RAM和CPU),以预期网络流量或活动的激增可能会压垮应用程序。
虽然这是一个谨慎的举措,但无意中的结果是服务器资源的利用不足,这些资源往往被浪费。即使有自动扩展,仍然,一个未预见和突然的激增可能会证明是昂贵的。此外,您仍然需要执行其他任务,如设置负载均衡器,这也可能会增加运营成本。
很明显,尽管转向了云,但仍有一些瓶颈存在,有可能增加成本并造成资源浪费。而这正是无服务器计算发挥作用的地方。
什么是无服务器计算
无服务器计算是一种云模型,为用户提供按使用量付费的后端服务。简单来说,云服务提供商分配计算资源,并仅按照应用程序运行的时间收费。这相当于从按月付费的有线电视计划切换到只有在观看电视节目时才付费。
术语“无服务器”可能有点误导性。是否涉及服务器?当然有,但在这种情况下,服务器和基础设施纯粹由云服务提供商处理和维护。因此,您不必担心它们。作为开发人员,您的重点纯粹在于开发您的应用程序并确保它们能够满足您的要求。
通过这样做,无服务器计算摆脱了管理服务器的头痛,并为您节省了宝贵的时间,用于开发您的应用程序。
无服务器计算提供的后端服务
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaS是无服务器计算的一个子类,具有细微的差异。无服务器计算涵盖了广泛的服务,包括计算、数据库、存储和 API 等。FaaS 专注于事件驱动的计算模型,其中应用程序根据请求按需执行。
FaaS计算模型的示例包括:
- 由 AWS 提供的 AWS Lambda
- 由微软提供的 Azure 函数
- 由谷歌提供的 Cloud Functions
- 由 Cloudflare 提供的 Cloudflare Workers
总的来说,我们已经看到了使用FaaS,您只需支付应用程序运行的时间,云提供商几乎为您做了所有事情,包括处理基础架构。管理服务器是您最不用担心的事情。
无服务器计算的好处
到目前为止,您对采用无服务器计算带来的一些优点有了很好的了解。让我们深入探讨拥抱这项技术的优势。
1. 无需服务器管理
这也许是采用无服务器计算模型的最大优势之一。尽管术语“无服务器”可能被误解为意味着没有服务器参与,事实上,应用程序仍然在服务器上运行。关键在于,服务器管理完全由云供应商负责,这使您有更多时间专注于应用程序开发。
2. 简单高效的扩展
无服务器基础架构可以根据使用量、需求或用户基数的增长自动扩展应用程序。如果应用程序在多个实例上运行,服务器将在需要时启动和停止。在传统的云计算设置中,流量或活动的激增很容易使服务器资源超载,导致执行的应用程序不一致。
3. 内置的可用性
作为开发人员,您无需构建任何特殊基础设施来使您的应用程序具有高可用性。无服务器计算为您提供了内置的高可用性,确保您的应用程序在需要时能够正常运行。
4. 降低运营成本
无服务器计算根据按需付费的方式分配资源。您的应用程序只在代码执行时需要后端函数,并且将根据工作负载的数量自动扩展。
这提供了规模经济,因为您只需为应用程序运行的时间付费。在传统的服务器模型中,您不论应用程序是否运行或空闲,都必须支付服务器空间、数据库等资源的费用。
5. 更快的应用程序部署
无服务器架构消除了在传统设置中进行后端配置和手动上传代码到服务器的需求。开发人员可以轻松高效地上传少量代码堆栈并启动一个出色的产品。
部署的简便性还允许开发人员轻松地修补和更新代码的某些特性,而无需更改整个应用程序。
无服务器计算的缺点
无服务器模型是否存在任何缺点?让我们找出。
1. 安全
配置不当的应用程序是与无服务器计算相关的最大风险之一。例如,如果您选择AWS,则明智地配置不同的权限给您的应用程序,这将决定它们如何与AWS内的其他服务进行交互。如果权限不明确,那么一个函数或服务可能拥有比所需更多的权限,为安全漏洞留下了足够的空间。
2. 供应商锁定
选择无服务器模型可能在迁移到另一个供应商时面临挑战。这主要是因为每个供应商都有自己的特性和工作流程,与其他供应商略有不同。
3. 测试和调试应用程序的困难
服务器模型带来的另一个挑战是在测试和监视代码性能之前难以复制无服务器环境。这主要是因为开发人员无法访问后端服务,这是云提供商的专属领域。
4. 监视无服务器应用程序的困难
监视无服务器应用程序是一个复杂的任务,原因与调试和测试是一样的。这一挑战加剧了缺乏与后端服务集成的工具,例如AWS Lambda。
结论
无服务器计算在公司和开发者中不断获得认可和接受,原因有三。首先是经济实惠,这意味着降低了运营成本。其次,无服务器计算便于自动和快速扩展,最后,开发者不必担心基础架构,这由供应商处理。
与此同时,云服务提供商正在全天候努力解决无服务器计算的一些缺点,比如调试和监控应用程序的困难。