加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

使用无服务器架构的六个月里,我学到的六件事

发布时间:2018-10-31 19:26:23 所属栏目:业界 来源:Docker
导读:在十月份的Serverlessconf巡讲之后,我决定领导整个公司走向无服务器架构。最初我花了几个月时间来尝试将Python Flask应用程序[1]迁移到Lambda,这些经历帮助我后来找到更好的方法。 在六个月之后,我们已在无服务化地部署我们的第四个主要项目。以下将讲

DynamoDB是一种完全不同的类型。当你找对正确的实施方案,NoSQL数据库能提供了极高的性能,又能大规模,并且几乎没有管理开销。但是你真正需要的是花时间探索它是如何工作的,还有在初始阶段将会有各种各样的问题。

Dynamo表字段不能包含空字符串。备份时间点不是自动的。如果分区和排序键错误,则必须从头开始使用表。如果你尝试过于密切地模拟SQL查询,你的表可能会越来越多。从RDS转换过来会让你感觉截然不同。

经过许多教程,尝试,失败并最终成功使用DynamoDB,我学到了以下:

  • 首先你需要了解DynamoDB是如何工作的,花一些时间来了解索引策略以及你将打算如何查询数据。在没有充分了解所需知识的情况下虽然很容易开始使用,但也因此会有很多人在使用过程中备受打击,然后在错误的时间回退到RDMS。会犯错,但你需要推翻它们。
  • DynamoDB中很少被讨论到的特性之一是使用流将代码附加到表事件的方式,就像可以执行任何操作的SQL触发器一样。这些都非常强大。我们使用到的一个非常简单的模式是始终将表更新推送到SNS主题中,这些更改将可以被那些可能尚未实现的其他无服务器代码使用。
  • 不要忘记,DynamoDB同时可以提供其他存储系统(RDMS,Redshift或仅文本文件),可用于有效消除流量峰值或保护其他数据库免受大量数据的影响。DynamoDB具有TTL功能,允许你设置行过期,这对于暂存你想推送到其他地方的数据非常有用。

使用无服务器架构的六个月里,我学到的六件事

#5-无服务器框架

我早期对Lambda进行的实验很笨拙,是直接编程写入到AWS控制台中,后来开始感到诅丧,因为我需要实施大量的工作和错误信息来处理一些微不足道的事情。仅仅是因为没有一条将IDE连接到生产环境的桥梁。

直到我发现无服务器框架,多年来发现的最令人兴奋的事情非它莫属了。

一个简单的sls deploy命令就能将你的代码直接打包上传到AWS上。如果你因代码错误需要检查日志,那么你仅需简单运行sls logs -f functionname -t,你可以像专业人士一样查看CloudWatch的日志而无需通过浏览器。

这改变了以往的一切。请大力赞美无服务器的维护者们吧,因为他们做了所有云服务商从第一天就应该提供的服务。这真的是太棒了!

#6-认证授权

在传统应用程序中,你只需对用户进行一次身份验证,然后通过跟踪会话ID来跟踪此用户行为。我们喜欢这样做是因为艰难的工作仅需完成一次。

使用无服务器架构的六个月里,我学到的六件事

通过sessionID控制访问权限

但这种方法存在一些问题,它只适用于在这中间存在服务器的情况。我们已将该中间的服务器去除掉了。它还可能让你暴露给一些令人讨厌的攻击行为,比如跨站点请求伪造(CSRF),并且不能让你轻易地将身份传递给其他服务。所以这种方法基本上仅支持单体应用。

我们讨厌单体服务以及CSRF攻击,但我们确实喜欢我们新引入的技术,即JWT令牌。当我了解到这是如何工作的时候,我有一种类似禅的兴奋感,我需要一张流程图来好好解释明白。

步骤1,获取JWT,第2步,使用它与你编写的任何服务进行通信:

使用无服务器架构的六个月里,我学到的六件事

授权过程获取JWT令牌

使用无服务器架构的六个月里,我学到的六件事

Lambda函数接受并验证令牌

基本的核心是每个请求都经过身份验证,客户端甚至可以调用多个无服务器进行通信。在JWT的世界里甚至不存在CSRF。无服务器代码所需要的就是使用自定义授权程序来检查标头中的JWT是否有效(可参考实例代码)。

与JWT对比起来,所有其他类型的用户验证看起来都过于复杂。我们毫不犹豫将所有用户验证都切换为Auth0(在某些情况下为Cognito)。无服务器身份验证既简单又非常有效。

迈向新世界

虽然我已经使用了AWS很长一段时间,即使是在EC2的场景下,因为我参与的时间相对较晚所以也会需要很多帮助。在结束无服务器会议之后,这感觉就像进入一个真正未开发的领域,需要我们在黑暗中去发现更多。

在我们的前几个实验中,我们尝试使用现有的工具和技术但发生了一些失误,结果并不是很好。经过几个月的正确积累,我们已经正式开始以100%无服务器方式交付项目。我相信我们迁移过程中的问题和早期的探索非常值得。

我们正在构建灵活的实时SPA应用程序,这些应用程序使用完全无服务器的基础架构,可以毫不费力地扩展,并且成本降低了70%-90%。我对这个支出减少感到高兴以及震惊。我从未如此确信无服务器技术将彻底改变云服务下的应用交付。

相关链接:

https://read.acloud.guru/adventures-in-migrating-to-serverless-a63556b39042

https://read.acloud.guru/node-is-the-wrong-runtime-for-serverless-jk-c69595f6a8eb

原文链接:https://read.acloud.guru/six-months-of-serverless-lessons-learned-f6da86a73526

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读