Ronyis
Ronyis

Reputation: 1953

Using Serverless framework on monorepo of multiple services with shared code

I have a pythonic serverless project on AWS, in which several services are contained in a single repository (a monorepo) which looks like:

/
serverless.yml
/service1
  lambda_handler.py
/service2
  lambda_handler.py
/general
  __init__.py
  utils.py

'general' is a package that is shared between different services, and therefore we must use a single 'serverless.yml' file at root directory (otherwise it won't be deployed).

We have two difficulties:

  1. A single 'serverless.yml' may be too messy and hard to maintain, and it prevents us from using global configuration (which may be quite useful).

  2. Deplyoing a single service is complicated. I guess that 'package' feature may help but I'm not quite sure how to use it right.

Any advise or best practices to use for this case?

Upvotes: 1

Views: 2016

Answers (1)

Ashan
Ashan

Reputation: 19758

Its better to use individual serverless.yml files per each service. To use the shared code,

  1. You can convert the code into a library and use it as a dependency and installed via a package manager for each individual service similar to a library. (This is useful since updating a version of common code won't affect the other services)

  2. Keep the shared code in a different repository and use git submodule for individual service.

For more information, refer the article Can we share code between microservices which I have originally written considering serverless.

Upvotes: 2

Related Questions