Background
I’ve been using the serverless framework since version 0.5 successfully. The project was made in python using lambda and api-gateway and we group all our API’s on the same git repo separated by folders simulating the same structure that our services have, at the end this is a Nanoservice architecture and was integrated with cognito, custom authorizer, stages, the entire deal. An example of the structure:
- functions/V1
– /users
— /post
----- handler.py
----- s-function.json
— /delete
— /get
– /groups
— /get - s-project.json
- s-resources-cf.json
Problem
Now i’m trying to do the same in Java, and of course because of Java is not supported in 0.5 then I go for V1. The first issue that I found how to use the same API gateway for multiple resources using nanoservice architecture. Assuming that this will be fixed soon, I want to include in the process Codepipeline and Codebuild. Checking all examples over the internet with serverless, everyone is making one single Java package with several handlers for post, get, …, requests and one serverless.yml with the configuration, then the buildspec.yml and one git repo for this. This works great but if i’m going to create a combination of Micro and Nano services how i’m going to have N git repos where i can isolate deploys with Codepiline, for me this is exponential support for repositories, codepipeline builds etc… but on the other hand if i want to edit one single function, make a push and trigger the codepipeline(build/deploy and test) this single java handler and no the entire infrastructure how can i achieve this?
In the real world, everyone has one git repo per micro/nano service? (easily we can have +100 resources in one single apigateway project), all CI deployments are isolated in this way? and how to group an entire api to manage order in local development to recreate the same order of resources with folders, or this aproach is wrong?
Hopefully anyone else solve this problem before and can give me some guidance.