aws-lambda - 使用 AWS API Gateway+Lambda 而不使其成为依赖项
问题描述
毫无疑问,API Gatway+Lambda 对微服务的好处。
我担心的是,如果我们决定将 API Gateway+Lambda 迁移到 ECS/Fargate 甚至另一个云会发生什么。
对于每个路由/操作使用一个 Lambda 函数似乎达成了共识。
我有一些关于如何使用这种方法进行设计的理论,这样代码可以从 Lambda 中拔出并插入到其他地方。
我也想知道社区中的其他人为实现这一目标做了什么?有没有人试图将 API 移出 Lambda 并能够使用 XXXX 设计成功地做到这一点?那里有什么教训?
语言对这个讨论并不重要,但我们使用的是 python3
解决方案
你现在面对的东西有一个名字。这被称为“供应商锁定”。你几乎无能为力。
但是,我发现将 AWS Lambda 处理程序函数视为 Web 服务器中的控制器很有用。你会在你的控制器中做什么?您将验证传入数据,将其传递给服务层,然后序列化来自服务的响应并将其传递回 API 网关。长话短说,你的处理函数不应该包含业务逻辑,这使得即使从无服务器迁移到服务器也很容易。它也可能很好,因为它为优化留下了一些空间。如果您最终发现您的服务层架构为冷启动增加了大量时间,那么只需将其非规范化为单个文件即可。它会工作得更快,但你会牺牲代码的可维护性。没有灵丹妙药,软件一直都是关于权衡的。:)
推荐阅读
- jquery - JQuery 验证问题:我在同一页面上有 2 个表单,每个表单在 2 个不同的选项卡中,但只有一个验证不起作用
- kotlin-multiplatform - Kotlin 多平台并发可变性 iOS vs Android
- sqlite - Sqlite 序列与自动增量列无关
- haskell - IHP Haskell 字段显示格式 双值
- kubernetes - 将请求转发到 minikube ip(如何从远程计算机访问部署在 minikube 中的应用程序)
- arrays - 在 AWS Athena 中使用匿名 JSON 数组创建表
- jquery - 如何将 select2 值发送到我的 Java 代码?
- mongodb - Mongodb maxTransactionLockRequestTimeoutMillis 不起作用
- json - Wix Velo 数据库查询没有结果
- javascript - 选择在 Android 中展开,但在 iOS 中没有展开 - React Native