使用无服务器架构的六个月里,我学到的六件事
DynamoDB是一种完全不同的类型。当你找对正确的实施方案,NoSQL数据库能提供了极高的性能,又能大规模,并且几乎没有管理开销。但是你真正需要的是花时间探索它是如何工作的,还有在初始阶段将会有各种各样的问题。 Dynamo表字段不能包含空字符串。备份时间点不是自动的。如果分区和排序键错误,则必须从头开始使用表。如果你尝试过于密切地模拟SQL查询,你的表可能会越来越多。从RDS转换过来会让你感觉截然不同。 经过许多教程,尝试,失败并最终成功使用DynamoDB,我学到了以下:
#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 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |