架构在云上——从FaaS到Serverless

阅读时长 5 分钟读完

什么是架构在云上?

随着云计算技术的发展,越来越多的企业将业务移到云上,以便更好地满足业务发展需求。针对于云上架构,从 FaaS 到 Serverless 这一领域的技术不断不断涌现。架构在云上,是一种将功能以应用为中心的构建,借助云计算平台来满足应用的管理与扩展的方法。云计算平台会提供预设的服务,构建者在其上编写应用程序,同时无须书写专门部署应用程序或管理资源的代码。

什么是FaaS?

FaaS全称Function-as-a-Service, 即函数即服务,该服务是基于BaaS、PaaS的发展而来,在使用Function-as-a-Service的场景下,所开发者或使用者只需要快速的部署独立功能的代码即可,避免了繁琐的多团队协作,资源任务调度等问题,FaaS变得越来越受到开发者的欢迎。FaaS提供了一种轻量级的开发方式。 FaaS的产品代表是AWS Lambda, Google Cloud Functions等。它的优点是:粒度小,节约成本;无需考虑部署的问题,专注于开发代码;天生适合于事件型编程;为了实现将FaaS应用到前端,AWS出品了Serverless。

什么是Serverless?

Serverless是由AWS提出的概念,也称为“无服务器”,是一种事件驱动的计算模型,让开发者能够在不需要人工干预的情况下在云上运行代码。Serverless使得开发者能够将代码集成到云前端架构中,如API网关,Cognito, S3等AWS的服务中,并且提供了自动扩展、自动化底层基础设施的能力。在Serverless中,只有代码被部署在云端,被执行时,云计算服务会动态地调整其应用程序的规模,以应对不断变化的负载量,以提高应用的运行效率和容量。

为什么使用Serverless?

开发人员可以避免大量与部署有关的繁琐任务,而投入更多时间用于创新。 利用折衷的计算资源,您可以动态地匹配应用程序的成本和性能需求,因此能够降低成本。 由于动态缩放和资源分配,因此您的应用程序可以更快地响应变化的负载,并具有更大的可扩展性。 与传统的IT基础架构相比,在Serverless中不需要管理基础架构,而且也不存在固定的成本。当计算停止时,自动停止付费,即真正的按需付费。

如何在Serverless中实现前端?

实现调用 API 是前端应用程序的必要步骤。 前端应用程序是通过 RESTful API 和数据库等中间层与后端通信的。 在FaaS中,我们可以自己来实现这样的服务器。 在Serverless中,由于AWS提供了各种服务如:API网关、Lambda、DynamoDB、S3,您可以轻松地在云端构建您的前端应用程序,同时也可以轻松地管理您的应用程序和用户 支持触发事件。接下来,我们以DynamoDB作为数据库和Lambda和API网关实现以下示例。

1.创建DynamoDB数据表

const AWS = require('aws-sdk');

AWS.config.update({ region: 'us-west-2' });

const dynamodb = new AWS.DynamoDB();

const TABLE_NAME = 'users';

const params = { AttributeDefinitions: [ { AttributeName: 'userId', AttributeType: 'S' } ], KeySchema: [ { AttributeName: 'userId', KeyType: 'HASH' } ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1 }, TableName: TABLE_NAME };

dynamodb.createTable(params, function(err, data) { if (err) { console.log('Error creating table: ', err); } else { console.log('Table created: ', data); } });

2.创建Lambda函数

exports.handler = (event, context, callback) => { const AWS = require('aws-sdk'); AWS.config.update({ region: 'us-west-2' }); const dynamodb = new AWS.DynamoDB();

const params = { Item: { 'userId': { S: event.userId }, 'name': { S: event.name } }, TableName: 'users' };

dynamodb.putItem(params, function(err, data) { if (err) { console.log('Error storing data: ', err); callback(err, null); } else { console.log('Data stored: ', data); callback(null, event); } }); };

在该示例中,我们创建了一个 Lambda 函数,该函数将数据写入 DynamoDB 数据表。 该函数引用 AWS SDK,来连接 DynamoDB 数据库。

3.创建API网关

我们在 AWS 的 API Gateway 中创建一个 RESTful API,该 API 使用刚刚创建的 Lambda 函数。在此之前,我们需要确保我们已经有了 AWS 账户并已登录。

我们创建 API 网关,并确保在 API 网关所在的同一区域中部署 Lambda 函数,以便更快地传输数据。

结论

在Serverless中实现前端应用程序可以将精力放在创新和快速迭代上,同时可以避免管理基础架构和固定成本,从而更快地上市。 通过使用FaaS和Serverless,无需管理计算资源或服务器, 只需实现自己的应用程序代码即可利用云的无限资源。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f6153bc5c563ced57f69ec

纠错
反馈