Serverless 架构是一种全新的云服务模式,通过无需租用资源的方式,启用即用的托管式应用程序来提供服务,从而从传统的基础架构中解放开发者。Serverless 的主要优点是代码撰写效率高、开发周期短、无需预留服务器资源且极为节省成本。然而,在多云端的应用程序开发中,Serverless 架构也带来了新的挑战和复杂性。
多云端应用程序开发
在多云端的应用程序开发中,开发者需要考虑通过云服务供应商提供的 API 来编写应用程序,以便在多家云服务供应商中运行。这通常需要考虑到不同云服务器所提供的支持程度、API 版本和功能限制等问题。Serverless 架构在多云端应用程序开发中能够发挥它的优势。利用 Serverless 架构,我们可以快速开发跨云平台的应用程序,而无需配置和管理底层服务器资源。
Serverless模式
Serverless 几乎是不可分辨的现代云应用程序通用模式。利用 Serverless 模式,开发者可以使用云原生服务来编写应用程序,无需安装、配置、扩展、更新和拆分服务器。这意味着,开发者可以在不了解整个技术集成的情况下,更快、更便捷地开发应用程序。
多云端部署
Serverless 架构使用无状态的、低延迟的、独立应用程序组件构建的应用程序。这使得应用程序极易于部署到某些云服务提供商的特定区域。如果您有多家云服务提供商,Serverless 架构的多云端部署支持可以使您在不定期转移云平台的情况下更快速地确定应用程序在每个云平台的部署方案。
Serverless 架构下的多云端应用程序开发
使用 Amazon Web Services 部署 serverless 应用
Amazon Web Services(AWS)是 Serverless 应用程序开发的热门平台。它提供了许多友好的工具和服务来帮助开发者迅速构建 Serverless 应用程序。下面是举例说明,如何快速部署 serverless 应用程序,基于 AWS Lambda。
首先,需要创建一个AWS帐户并登录。创建 AWS Lambda 来支持我们的应用程序。Lambda是一个事件驱动服务,在进行计算任务时使用,它会自动执行代码并根据需要增加或减少容量。在这个例子中,我们将使用 Lambda 运行一个简单的函数,以检索数据并生成响应。
可以使用 JavaScript 或 Python 编写 Lambda。
这里是使用 JavaScript 编写 Lambda 的代码示例:
-- -------------------- ---- ------- --------------- - ----- ------- -- - --------------------- -------- --------------------- ----- ---- --------------------- ------- ------------ --------------------- ------------- ------------------ ----- ------------ - - -------- ------ ------------ -- ----- -------- - - ----------- ---- ----- ---------------------------- -- -------------------- ----------- ------------------------ ----- ---- ------ --------- --
在上传 Lambda 函数之前,您需要将 AWS CLI 安装到本地计算机。这将帮助您在本地执行一些基本工作流程。通过它,您可以简单地调用 AWS 服务,否则需要手动访问 AWS 网站。
aws lambda create-function \ --function-name my-function \ --runtime nodejs12.x \ --role lambda_basic_execution \ --handler index.handler \ --zip-file fileb://my-function.zip \ --region us-west-2
使用 YAML 格式的 AWS SAM(Serverless Application Model)能够轻松地描述整个 Serverless 应用程序和它的依赖项。以下是一个基本的 SAM 模板,其中包括资源、Lambda 函数和 API Gateway:
-- -------------------- ---- ------- ------------------------- ------------ ---------- -------------------------- ---------- ----------- ----- ------------------------- ----------- -------- ---- ------------ - ------ --- ------ -------- -------- ------------- -------- ----------
这个模板简单地描述了一个可配置的 Lambda API Gateway 和部署。现在,SAM 会自动为您构建和部署您的 Serverless 应用程序。
使用 SAM 安装整个应用程序
sam package --template-file template.yaml --output-template-file packaged.yaml --s3-bucket my-bucket
部署应用
sam deploy \ --template-file packaged.yaml \ --stack-name aws-serverless-application \ --capabilities CAPABILITY_IAM \ --region us-west-2
使用 Google Cloud Functions 部署 serverless 应用
Google Cloud Functions 是 Google Cloud Platform 的 Serverless 计算和事件反应平台,用于构建和连接云应用程序和微服务。了解如何部署 serverless 应用程序基于 Google Cloud Functions。
首先,您需要创建一个 Google Cloud Functions 帐户,在执行部署之前进行身份验证。在配置 Google Cloud Functions 时,需要首先启用 Google Cloud Functions API。
使用 Node.js 编写 Google Cloud Functions 创建 HTTP 函数:
-- -------------------- ---- ------- -------------------- - ----- ---- -- - ----------------------- -- ----------------- - -------------------------- --------- --- -------- ------- - ----- ---- - --------------- --------------------------- ---------- --
在本地安装 Google Cloud Functions 客户端:
npm install -g @google-cloud/functions-emulator
初始化本地项目:
functions init project-dir
部署本地项目:
functions deploy myFunc --trigger-http
使用 Azure Functions 部署 serverless 应用
Azure Functions 是一种无服务器计算平台,它允许开发者编写和运行基于事件的计算代码。相对于传统服务器架构,它具有更高的可伸缩性和更低的管理成本。此外,Azure Functions 还与许多其他 Azure 服务集成,以增强其功能。
使用 Azure Functions 平台,并用 C# 编写一个最简单的 Azure Funcation 应用:
-- -------------------- ---- ------- ----- ------------ ----- ------------------------- ----- ------------------------ ----- ---------------------------------------- ----- -------------------------- ----- ----------------------------- --------- ------------ - ------ ------ ----- --------- - --------------------------- ------ ------ ------------- ---- ----------------------------------------- ------ ------- ----- - ------ ----------- ---- ------- ---- - ---------------------- ---- ------- -------- --------- - ----------- ------ ---- - ------------------ ------ ----------- - --- ----------------------------------- ------- ---- - ------------------------------------------- ---- - ---- -- ----------- ------ ---- -- ---- - ----------------- ----------------------- -------- - --- ------------------------------ ---- - ---- -- --- ----- ------ -- -- --- ------- ------- - - -
在上传 Azure Functions 之前,您需要先安装 Azure CLI 并设置 Azure Functions 开发环境工具包。然后,可以使用 Azure 终端窗口构建和部署应用程序。
func init func new --name Function1 --template "HTTP trigger" func azure functionapp publish <YOUR FUNCTION APP NAME>
深入了解使用 Azure Functions 部署 Serverless 应用程序,可以使用 Visual Studio 2019 模板完成此操作。
结论
在 Serverless 架构下,多云端应用程序开发可以变得更加快速、高效和智能化,有助于加快应用程序构建的速度。不同的 Cloud Services 提供商有其优缺点,我们可以根据自身实际开发需求,选择不同的 Provider。无论是 AWS、Google Cloud 还是 Azure Functions,它们的存在可以让开发团队快速将应用程序部署到多个云端环境中。服务器资源的自动配置和相对低延迟的计算加速应该是 Serverless 应用程序的最大好处。在应用程序开发中,Serverless 架构的运用将无疑成为趋势,并将进一步推动这种趋势的发展。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67072316d91dce0dc8652dbe