将单片Laravel应用程序升级到微服务



我是微服务的新手,我研究了最佳实践以及如何从单片升级。我现在需要具体的步骤来前进。

我希望将一个单片Laravel项目升级到微服务。

我已经开始将应用程序分成更小的应用程序。因此开发了多个Laravel项目,每个项目代表一个服务。简化问题:

  • 认证应用:用于用户认证和注册
  • ToDo应用程序:用于为特定用户创建任务待办事项列表

所以现在我有这两个应用程序,每个应用程序都有自己的CRUD操作(多个api)。

问题是如何将这些应用程序移动到AWS无服务器使用Lambda函数,API网关和连接到PostgreSQL (Aurora DB)。

  1. 首先,我需要使用SAM模板或简短模板?如何处理AWS lambda不支持Laravel的情况?
  2. 每个应用程序有几个功能在它(第一个应用程序有注册,登录,重置密码…),所以每一个都必须是一个独立的Lambda函数?如果是,这是否意味着每个都必须是一个新的Laravel项目,然后我将不得不提到由SAM或brief使用的相同资源,以具有不同的功能来使用相同的DB。
  3. Lambda默认创建API网关?如果是,那么我是否应该创建一个用户端可以访问的主API网关,它可以调用其他API网关?(主API网关过滤请求,如果与身份验证相关,它会重定向到可以与不同的身份验证Lambda函数交互的身份验证网关?

我以后肯定要添加步进功能与SNS排队支持,但现在,我需要了解如何移动应用程序。

最后,您建议如何将CI/CD集成到项目中?

谢谢你的帮助!

您可以按照brief文档中的说明安装这两个包。

composer require bref/bref bref/laravel-bridge --update-with-dependencies

回答你的第二个问题,如果你想把它分解成更小的单个lambda函数,或者使用整个应用程序作为一个函数,这是你自己的选择。两者都可以。您还可以在每个应用程序中包含多个函数,并使用API Gateway将特定请求路由到相应的lambda。如果您决定只使用一个函数,那么所有请求都必须路由到相同的lambda。这是你的选择。

Lambda默认不创建API网关,如果您在serverless中包含以下行,则无服务器框架会为您创建API网关。yaml文件。事件:- httpApi: '*'

我建议你坚持使用一个API网关,以获得更简单的路由配置。您可以配置API网关,将不同的请求路由到不同的服务。

最后,你可以使用管道实现CI/CD,使用Git repo作为触发器,并配置CodeBuild将应用部署到Lambda。

最新更新