DeveloperX
DeveloperX

Reputation: 661

microservices structure in Laravel with aws lambda

I am new to microservices, I only know the theory, developed some local examples, and also deploy them to AWS, but just that, and I have a project that has to be done with microservices, but my question is about the structure.

For example, I am planning to do the following:

So, this is my plan:

I am planning to use serverless so I am a little bit confused.

What can I do? thank you.

Upvotes: 1

Views: 951

Answers (1)

Georg Schwarz
Georg Schwarz

Reputation: 164

If I understand correctly you have one UI communicating with multiple microservices in the backend.

Since you are using serverless, a microservice is probably a set of functions around one functionality that are deployed together. That is totally fine.

In general you will want to have a separate storage area for each microservice. If they are physically different databases or not does not make the big difference in cloud environments because you can always change it according to your needs. The important point is that the storage area is encapsulated by the services. This might mean each microservice has an area within a database that noone else has access to.

This also means you have to use interfaces to get data of other microserivces. There are basically two ways to do so:

  • synchronously API use of other microservice to retrieve data.
  • asynchronous data replication via a message bus (event-driven architecture).

For token-based auth: your Main app will create an encrypted JWT token using a private key including user information like email, etc. This token has to be stored in the client and sent to other microservices via a header with every request. They can use decryption mechanisms to ensure the validity of the token and need the public key of the Main app for this. You might consider enter link description hereAWS Cognito libraries because they to that job for you

In general, you should overthink using microservice since they are no silver bullet. You should ask yourself the following two questions:

  • Do I need to scale development? (e.g. 50 developers +)
  • Do I need independent deployment/service evolution?

If the answer is "no" to these questions you might consider using some best practices of microservices, but I'd advice against introducing the full overhead of microservices. You could also just have some serverless functions working on a common database.

Upvotes: 1

Related Questions