我对微服务和AWS无服务器架构的概念完全陌生。我有一个项目,我必须将其划分为应该在AWS Lambda
上运行的微服务,但我在如何设计它方面遇到了困难。
搜索时,我找不到有关如何划分和设计微服务的有用文档,我看到的所有文档都将整体式应用程序与微服务应用程序进行比较或在 aws lambda 上部署微服务。
就我而言,我必须开发一个ERP(企业资源规划(,它必须管理客户,管理股票,管理书籍,管理命令。 那么我应该为客户服务,为书籍服务吗......然后,如果我注意到两个微服务之间存在很多依赖关系,那么我会将它们设为一个?? 对于数据库,在这种情况下,对所有微服务使用一个数据库(dynamoDB(而不是为每个服务使用一个数据库(ERP(是否好?
任何帮助真的非常感谢。 如果有人有一份有用的文件可以帮助我,我会非常感激。 多谢。
我认为您的数据和服务的架构可能取决于以下几点:
- 使用/可用的数据源
- 您的要求/所需功能是什么
- 业务逻辑或任何其他限制/问题
为了减小服务的大小,我们希望将应用程序或其他服务访问该服务的原因限制为尽可能少。这减少了管理它的总体维护量,并且在使用其部署时也为您提供了很大的灵活性。
例如:从多个源转换数据并通过 API 使其可用的服务可以使用具有新的、更干净的数据源的数据处理服务拆分为 API。这将防止过度依赖大型、较旧的服务和数据,并使应用程序更容易集成较新的较小服务。
在您的方案中,您可能无法使用用于单独管理客户端、书籍和股票的服务,但这还取决于数据源的集成方式以及已可用的服务。你可能希望创建其他微服务或数据库,以帮助减小大小并将数据组织为所需的格式。
根据您的业务需求,合并或保持两个单独的微服务也可能取决于不同的事情。这些服务之一是否有可能对其他应用程序有用?它是否专用于特定项目?保持服务独立、小巧和集中,为您提供了在需要时扩展或缩小内容的空间。数据源也是如此。
总有很多方法可以解决这个问题。在选择某种工具来创建解决方案之前,首先考虑您的需求/问题是什么。
微服务
它只是运行可以扩展和部署的小型服务 独立地。
AWS Serveless
每个应用程序都是不同的,因此您可能无法找到适合每个应用程序的单一体系结构。通常,一个简化的无服务器应用程序由Lambda函数,API网关,DB(SQL/NoSQL(组成。无服务器是很好的云原生选择,您可以获得开箱即用的可用性、可扩展性,并且您可以非常快速地部署您的东西。
如何设计无服务器应用程序
没有正确的答案。您需要以各个微服务可以紧密协作的方式构建系统。在您的案例簿中,股票需要是单独的微服务,这意味着它们是单独的 Lambda 函数。对于DB来说,Dynamo是很好和强大的选择,只要你知道NoSQL是如何工作的,并围绕它提出警告。您需要事先考虑围绕NoSQL的挑战以及如何对数据进行分区?如果您需要使用复杂的报告,NoSQL会是不错的选择吗?周围有一些模式可以解决这个问题。由于 Dynamo DB 在表级别运行,因此每个微服务最好是可以独立缩放且更有意义的单独表。
适合我的应用程序的体系结构是什么?
与其寻找一个正确的答案,我强烈建议在下定决心之前先阅读各个组件。有大量的文章和博客。如果我是你,我会按以下顺序查看
- 微服务 - 为什么我们需要呢?
- 无服务器 - 一般
- 事件驱动架构
- SQL vs NoSQL
- Lambda 和 DynamoDB 及其实际工作原理
- DevOps 及其在无服务器中的工作方式
- 模式
一旦你有了一点了解,你就能更好地决定什么最适合你。