We have a single web app that is comprised of a number of spring backend microservices, as well as a couple of node frontends.
I am interested in the idea of a single project managing this configuration rather than having
n different projects, but from what I can tell, this is only achievable as a monorepo.
Is there a plan for each app to have its own git url? (Rather than just a git path with the project repo).
Alternatively, could I create a single waypoint project repo, with all these other repos as sub modules? (Not saying it is a good idea, just curious)
What I am concerned about is that if I need to have a single project per microservice, and I have 10 different actual applications each with half a dozen individual ‘apps’, it will get hard to track these all. (Unless that is what labels are for?
If you look at this through a 12 factor lens
you will be told:
One codebase tracked in revision control, many deploys
A twelve-factor app is always tracked in a version control system, such as Git, Mercurial, or Subversion. A copy of the revision tracking database is known as a code repository , often shortened to code repo or just repo .
A codebase is any single repo (in a centralized revision control system like Subversion), or any set of repos who share a root commit (in a decentralized revision control system like Git).
If you consider that the only project that is actually deployed is the composition of the backend microservices, then you can define a new project – the app itself – which declares the architecture as deployed. This app will itself declare its dependencies which are the artifacts of the microservices (i.e. a bunch of jars from an artifactory).
If they are really microservices, they should be able to run independently, even if to perform their functions fully, they should be deployed together.
Is this a legitimate way to use waypoint, or is this considered an anti-pattern:
git repo for A → Only use waypoint to build an artifact for service A
git repo for B → Only use waypoint to build an artifact for service B
git repo for Project → Use waypoint to deploy service A and B as apps within the same project?