作者 | Sandro       

译者 | 弯月     责编 | 欧阳姝黎

出品 | CSDN(ID:CSDNnews)

我希望通过本文介绍一下每个科技创业者或技术狂人都应该知道的五大无服务器AWS服务。我不打算深入探讨这些服务,但会简单介绍一下这些服务,并说明它们为什么值得学习和使用。你可以利用这些服务构建所有你能想到的Web和移动应用程序,而且它们几乎可以和所有的高级编程语言一起使用,例如 Python、TypeScript、JavaScript 和 Java等。下面,我们开始。

Amplify CLI

首先,介绍一款最常用的服务:Amplify。请注意,AWS有两款(或者说三款)名叫Amplify的服务,我们必须区分二者:

  • Amplify CLI:启动后端;

  • Amplify库(比如JS库):用于访问 AWS 资源的前端库;

  • Amplify Console:前端和后端的 CI/CD 流水线。

在此我们只介绍Amplify CLI。你可以通过Amplify CLI,在命令行界面内运行几个命令来启动后端。有好几种不同类别的Amplify可供你添加,例如:

  • API:AppSync GraphQL 或 REST API 网关

  • 身份验证:Cognito

  • 存储:DynamoDB、S3

  • 函数:Lambda

  • 托管:S3 和 CloudFron

只需要几个命令,就可以通过向导式命令行界面构建全栈应用程序。

在我看来,graphql-transform 库是最大的亮点。你可以利用该库创建带有自定义注释(比如model或connection )的数据架构,而该库可以将架构转换为有效的 GraphQL 架构,同时创建 CloudFormation 模板,通过该模板可以创建DynamoDB 表、Cognito 连接等后端资源。

请看下面的例子:

type Holding @model {
id: ID!
ISIN: String!
currentPrice: Float! @funtion(name: priceResolver)
}

这个架构创建了类型Holding。注释model将在DynamoDB中创建一个表,主键为id。而currentPrice将由lambda函数priceResolver解析。

在我看来,这种方式的主要缺点在于,灵活性不如通过CDK或Terraform等常见的IaC解决方案构建的基础设施。由于Amplify自身的情况,你可能会遇到一些问题,尤其是当你需要使用多个团队的环境和多个lambda层时。

尽管如此,Amplify仍不失为一个很棒的工具,它拥有一个很棒的社区,而且它的团队仍在努力开发其他服务。如果你想学习一款服务,则可以尝试一下这一款。

AppSync

AppSync是完全由AWS托管的GraphQL API。开发人员可以通过GraphQL API,准确地获取所需的数据,同时又不必担心获取的数据太多或太少。AppSync提供了三个主要功能:查询、修改和订阅。

你可以通过AppSync查询来自不同数据源的数据。这意味着上述类型Holding可以从不同来源获取数据。我们继续以上述数据架构为例进行说明:

type Holding @model {
id: ID!
ISIN: String!
currentPrice: Float! @funtion(name: priceResolver)
}

属性ISIN是来自DynamoDB的字符串,currentPrice由名为priceResolver的Lambda函数解析。此处的Lambda解析器可以提供很大的灵活性。在lambda函数中,你可以根据需要自定义代码(请求两个不同的API、清理和预处理数据等等),并返回应用程序所需的数据。不论数据保存在何处,AppSync都可以让你在同一个应用程序内解析数据。这种灵活性非常难能可贵。

接下来,我们查询数据:

query MyQuery {
getHolding(ISIN: "DE0005190003") {
ISIN
currentPrice
}
}

返回数据如下:

{
"data": {
"getHolding": {
"ISIN": "DE0005190003",
"currentPrice": 90.94999694824219,
}
}
}

接下来,你可以通过修改查询来更改数据,而且你还可以通过订阅查询实时更新数据。

创业者为什么要学习AppSync?首先。你可以享受GraphQL带来的好处,不仅可以保证类型安全,而且还可以为前端开发人员提供准确请求所需数据的能力。其次,你可以连接到任意数据源,灵活性非常大。第三,很多工作都可以交给AWS。你只有一个终端节点,无需解析请求,也不需要将不同的AWS服务连接在一起。这可以极大地减少开发时间。

Lambda

下面,我们来介绍最基本的Lambda服务。Lambda是最著名的无服务器服务。当人们谈论无服务器时,大多数指的都是lambda。lambda服务背后的思想是,无需考虑运行代码所需的基础设施时。AWS只是保证你的代码会被执行。Lambda支持多种运行时,例如 Python、JavaScript、Java、C#、Rust、Go 等等。其最新的功能之一是可以将自定义的docker容器作为运行时使用,而且计费单位是毫秒(而不是100毫秒)。lambda的最长运行时间为15分钟,在构建应用程序时要考虑到这一点。唯一的基础设施设置是内存设置。

价格:Lambda很便宜。每月的前一百万个请求是免费的。超过一百万个以后,按照lambda运行的时间进行计算。

建议:

  • 至少保证4GB左右的内存,因为程序运行速度越快越便宜。

  • 在处理函数的外部声明所有的静态变量,例如boto3中的DynamoDb。这样可以减少冷启动次数。

  • 在设计应用程序时要考虑冷启动。如果你需要保证的响应时间,请事先预热lambda,或采用预先分配的并发性。

创业者为什么要学习lambda?lambda可以让你免去考虑执行代码所需的基础设施。而且价格很便宜。你的整个应用程序都可以建立在Lambda之上。虽然需要考虑个人的具体情况和整体的架构,但据我所知大多数应用程序都可以很容易改成在几个lambda函数上运行。你只需要按需付费,开发周期短,而且部署也更容易。

Cognito

下面,我们来看一看身份认证。Cognito是AWS的身份验证和授权服务。你可以使用Cognito实现用户注册和登录、用户组控制,甚至是联合登录,例如 Facebook、Google 和苹果账号登录。如果你是一名Saas业务创业者,而且希望为用户提供无缝的身份验证体验并提供社交登录,那么可以通过Cognito轻松实现。Cognito分为用户池和身份池。

  • 用户池:为用户提供注册、登录和联合登录功能。

  • 身份池:为用户创建唯一的身份,并授予他们访问其他AWS服务的权限。例如,为匿名用户生成临时凭证。

对于常见的身份验证功能,你可以使用用户池。

价格:按照每月的活跃用户付费,前5万个免费。

创业者为什么要学习Cognito?任何规模的企业都可以使用Cognito。你可以自定义注册和登录页面,甚至可以使用AWS预先构建的页面。通过联合登录功能可以实现一键登录。

DynamoDB

我想介绍的最后一项服务是DynamoDB。DynamoDB是一个完全托管的NoSQL数据库,具有高度的可扩展性和高可用性。我所有的项目都使用了DynamoDB,我是它的忠实粉丝。

DynamoDB的结构与其他数据库非常相似:

  • 表:有一个或多个数据项;

  • 数据项:不同属性的集合;

  • 键:分为主键和排序键;

  • 流:你可以通过流,在表每次更新的时候触发某些功能(例如lambda函数)。

其实,DynamoDB是一个键值数据库,你可以在其中存储不同数据类型的值。值也可以是嵌套列表或嵌套对象列表(如JSON)。下面是一个DynamoDB数据项的例子:

{
"ISIN":{
"S":"DE0005190003"
},
"name":{
"S":"BAY.MOTOREN WERKE AG ST"
}
}

键是列名(ISIN),值是数据类型(S代表String)以及实际值。该数据项也可以表示成常见的JSON格式:

{
"ISIN": "DE0005190003",
"name": "BAY.MOTOREN WERKE AG ST"
}

大多数SDK都可以将其解析成正确的DynamoDB表示。

DynamoDB有一些很棒的功能可以进一步提高性能,例如全局表、DynamoDB加速器、按时间点恢复等等。在设计DynamoDB表时,需要考虑访问模式。

价格:具体的使用价格取决于读取、写入和存储的数据量。对于Saas产品创业者来说,价格非常低廉。如果你可以预测读写请求量,则甚至可以使用更便宜的预配置容量。

总结

在构建应用程序时,你可以考虑一下本文介绍的这些服务。这些服务都拥有云原生方式开发的巨大的优势,包括:

  • 没有风险。如果没有人使用你的应用,则无需花一分钱。这可以极大地降低你的风险。

  • 可扩展。如果你获得了大量用户,则AWS可以随着用户数量一起扩展。

  • 安全。由AWS工程师为你保驾护航,而你则可以专注于业务逻辑。

原文链接:https://medium.com/@sandro_volpicella/top-5-serverless-aws-services-founders-indie-hackers-should-know-7ef62707f766

声明:本文由CSDN翻译,转载请注明来源。



☞因一个计算机故障而“停工”!观测宇宙 30 多年的哈勃太空望远镜还能坚持多久?☞@开发者,第二届“马栏山杯”国际音视频算法大赛高分攻略请查收,心动大奖等你来战!
☞Stack Overflow上最火的一段代码竟然有 Bug
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐