首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >微服务爆炸的治理方法

微服务爆炸的治理方法
EN

Stack Overflow用户
提问于 2018-08-31 04:28:17
回答 4查看 69关注 0票数 0

微服务是现在的趋势,大多数微服务都是在云上开发的。我遇到了这样一种情况:我们正在将大多数单片服务分解为域级微服务。每个问题域只有少数几个服务。

在亚马逊云中,每个单独的服务将进一步实现为多个lambda函数。因为有100个函数,每个函数都做特定类型的活动,由在每个中部署单独的管道作业。

在不久的将来,函数的数量可能会增加到1000s的数量级。这与我们今天拥有的40个单片应用程序相比。是否有任何方法可以分组、可视化、帐户使用指标、成本等?

这种情况将与我们在早期版本的spring框架中看到的xml地狱相似或复杂。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-07-23 13:33:55

您不应该也不应该将应用程序拆分成许多不同的Lambda函数,而不需要这样做。拥有不同的Lambda函数的唯一原因是,如果您有不同的基础架构或安全需求,则需要强制执行。

与任何普通函数一样,Lambdas也接受eventcontext作为输入。如果你在Lambda前面使用API Gateway,你会有pathhttpMethodqueryStringParameters等,就像找到的here一样。AWS生成了许多库,这意味着您不需要重构您的应用程序代码,并且可以将此事件转换为您的应用程序能够理解的HTTP请求。

一个应用程序可以是一个Lambda函数。您还可以将库依赖项分解为多个层,这也可以在简化CI/CD以获得文件大小限制时加快部署速度。

您也不需要在API Gateway中定义每个API方法,只需使用proxy集成即可。

在我看来,这是唯一明智的方法。随着需求的出现,您可以相应地调整您的基础设施和Lambda,因此,如果您需要一个API调用来获得更长的超时,您可以定义此方法和一个新的Lambda函数。例如,如果reports端点应该只具有读取权限,这将再次触发您创建另一个Lambda函数,该函数可能只是在您使用的iam角色上有所不同。考虑使用无服务器框架或AWS SAM来削减您需要的样板文件,这将意味着您可以再次使用相同的S3压缩文件来减少维护。

我强烈建议您不要部署许多不同的Lambda函数,这将是一个难以支持的噩梦,将导致单个应用程序的不一致,并且以一种不破坏用户体验的方式编排部署几乎是不可能的。

票数 1
EN

Stack Overflow用户

发布于 2018-08-31 12:43:42

首先,如果您要迁移到Lambda上的微服务,您可能需要考虑像Chalice这样的框架。这将有助于减少服务的无序蔓延,但每种情况都是不同的,都取决于您在哪里绘制您的有界上下文。

从你正在从事的类似经历来看,你会想要在一些领域投入大量资金。首先,拥有一致的日志记录方法是关键。您将希望一致地将日志发送到单个日志聚合服务,这样您就可以轻松地跨所有服务进行查询以获得指标。CloudWatch、相扑逻辑等可以帮助你做到这一点。也可以使用X-Ray来获得更详细的洞察。

您还需要考虑在CI/CD管道中添加一些自动化功能,以生成Swagger或类似格式的文档。这应该以这样一种方式完成,即结果是所有服务的可搜索目录以及所有必要的文档。我的经验涉及到使用Swagger UI和一些在每个构建作业上生成和部署的自定义HTML来实现这一点。

最后一个建议是投资于测试。契约测试和向后兼容性测试是避免部署破坏性更改的关键。我还会添加功能切换,作为另一个可以在这里手把手使用的键。

祝你在这项工作中好运!

票数 3
EN

Stack Overflow用户

发布于 2018-08-31 05:36:01

AWS Lambda支持标记。这是理解Lambda上的标签计费的最干净的方法。

您可以标记您的微服务以进行成本分配和计费。

有关的更多信息:

https://docs.aws.amazon.com/lambda/latest/dg/tagging.html

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52104915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档