作者 | 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

创业者应该了解的五大无服务器AWS服务相关推荐

  1. 发布国内首个无服务器容器服务,运维效率从未如此高效

    近年来,随着越来越多的企业基于微服务架构构建自身核心业务平台后,微服务已获得越来越多技术人员的肯定,同时,微服务也承载着企业数字化转型的重任.但微服务架构的落地给企业的运维团队带来了不少的挑战,原有的 ...

  2. 构建静态服务器_为静态网站构建无服务器联系表

    构建静态服务器 介绍 (Introduction) A few years ago AWS launched static hosting service S3, which was a paradi ...

  3. 用Spring Cloud和异步微服务进行无服务器计算

    在本文中,我将向您介绍一个使用SpringCloud运行异步微服务的示例,其中每个任务(读微服务)都没有专用服务器(无服务器). 让我先澄清一些术语,然后在这些术语基础上构建示例. ◆ ◆ ◆  ◆  ...

  4. 无服务器计算将会取代容器?

    2019独角兽企业重金招聘Python工程师标准>>> 无服务器计算是当前的一项热门话题,甚至热过了Docker容器. 这么讲是说无服务器计算要成为容器的替代品吗?或者它是可以和容器 ...

  5. vs需要迁移_这可能是目前最全面的无服务器迁移实践

    作者 | Thanh Le 译者 | 平川 策划 | 万佳 "无服务器"这个词变得很流行.在本文,我将向你介绍如何将本地应用程序迁移至无服务器环境,非常详细和具体,希望有助于你. ...

  6. 云计算未来趋势预测:AIaaS、无服务器、云端一体化等将成重点?

    云计算是一种业务模式,服务提供商在定制的环境中处理客户的完整基础架构和软件需求.随着云计算的发展,云服务和解决方案也将随之增长. 软件即服务(SaaS)预计到2020年将以18%的年均复合增长率增长, ...

  7. 作为工程师,你真的了解无服务器?

    译者 | 王欢 来源 | 分布式实验室 头图 | 下载于ICphoto 最近,我在YouTube上看了一个非常出色的开发人员的视频.它的标题是"无服务器毫无意义".虽然我非常喜欢该 ...

  8. 服务器返回它们的和_无服务器有其陷阱。 这是避免它们的方法。

    服务器返回它们的和 by Nicolas Dao 由Nicolas Dao 无服务器有其陷阱. 这是避免它们的方法. (Serverless has its pitfalls. Here's how ...

  9. 区块链生态系统将崩溃、Rust 超越 Go、无服务器成主导,这十大计算机预测将成真?...

    [编者按]在IT圈有句名言:"活到老,学到老".短短 6 字便道出技术发展速度之快.移动互联网.云计算.大数据.人工智能等技术革新在过去十年推动着时代巨轮不断向前迈步.接下来,我们 ...

最新文章

  1. 百度线下赛道报名通知!
  2. opencv+dlib人脸关键点检测cpp版
  3. C++ leetcode 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外
  4. Keras 实现 LSTM
  5. 为什么要用动态代理?静态代理与动态代理详解
  6. 虚拟机硬盘启动计算机后黑屏,高手亲自教告诉你win7虚拟机启动后黑屏的操作方案...
  7. Java基础 -- 复用类(组合和继承)
  8. 如何选择漏电保护器规格型号_三相四线漏电保护器型号要如何选
  9. opencv图像的基础操作
  10. 在文件编辑器中添加dock菜单项_将应用程序添加到Mac 的Dock的简便方法
  11. go 在windows下使用redis
  12. 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
  13. 如何创建支持不同屏幕尺寸的Android应用(转载)
  14. 固定定位小技巧(HTML、CSS)
  15. jquery.uploadify php,jquery组件Uploadify的使用
  16. Navicat 查看导出连接的密码 破解保存的密码 + 密码解密|navicat查看密码方案
  17. texLive使用一条龙
  18. 计算机RAM ,ROM,NOR FLASH ,NAND FLASH和手机RAM,ROM大家庭血缘关系图
  19. 网络诊断提示:远程计算机或设备将不接受连接 (根治 )
  20. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!...

热门文章

  1. 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台
  2. 【Qt教程】4.1 - Qt5 文件系统 QFile文件读写操作
  3. 【JavaScript】我所知道的JavaScript
  4. smarty的配置与安装
  5. EL表达式,JSP内置对象
  6. python-基于UDP通信的套接字,socketserver模块的使用
  7. Angular 5和ASP.NET Core入门
  8. webpack ,react
  9. 排版小知识 1.针对某个对象对齐
  10. Fuel 9.0安装的Openstack Controller节点进程整理